aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-11-07 17:33:28 +0100
committerLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-11-07 17:33:28 +0100
commit64a02259b30424e10586672993901cb1a6b9f83e (patch)
tree2ae32677bedc09632a8177633676e63f60213ea7
parentColorcalculator support for datatypes (diff)
downloadVIATRA-Generator-64a02259b30424e10586672993901cb1a6b9f83e.tar.gz
VIATRA-Generator-64a02259b30424e10586672993901cb1a6b9f83e.tar.zst
VIATRA-Generator-64a02259b30424e10586672993901cb1a6b9f83e.zip
Ecore gen test
-rw-r--r--Tests/Ecore-Plugin/.classpath7
-rw-r--r--Tests/Ecore-Plugin/.project34
-rw-r--r--Tests/Ecore-Plugin/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Tests/Ecore-Plugin/EcoreGeneration.vsconfig33
-rw-r--r--Tests/Ecore-Plugin/InitialPackage.ecore2
-rw-r--r--Tests/Ecore-Plugin/META-INF/MANIFEST.MF8
-rw-r--r--Tests/Ecore-Plugin/build.properties4
-rw-r--r--Tests/Ecore-Plugin/outputs/debug/errors.txt200
-rw-r--r--Tests/Ecore-Plugin/outputs/debug/generated3valued.vql_deactivated27665
-rw-r--r--Tests/Ecore-Plugin/outputs/debug/generation.logicproblem2059
-rw-r--r--Tests/Ecore-Plugin/outputs/debug/init.partialmodel497
-rw-r--r--Tests/Ecore-Plugin/outputs/debug/problem.als401
-rw-r--r--Tests/Ecore-Plugin/outputs/log.txt1
-rw-r--r--Tests/Ecore-Plugin/outputs/models/1.gml2629
-rw-r--r--Tests/Ecore-Plugin/outputs/models/1.pngbin0 -> 191062 bytes
-rw-r--r--Tests/Ecore-Plugin/outputs/models/1.xmi9
-rw-r--r--Tests/Ecore-Plugin/outputs/models/2.gml2667
-rw-r--r--Tests/Ecore-Plugin/outputs/models/2.pngbin0 -> 179049 bytes
-rw-r--r--Tests/Ecore-Plugin/outputs/models/2.xmi9
-rw-r--r--Tests/Ecore-Plugin/outputs/models/3.gml2705
-rw-r--r--Tests/Ecore-Plugin/outputs/models/3.pngbin0 -> 180110 bytes
-rw-r--r--Tests/Ecore-Plugin/outputs/models/3.xmi9
-rw-r--r--Tests/Ecore-Plugin/outputs/models/4.gml2743
-rw-r--r--Tests/Ecore-Plugin/outputs/models/4.pngbin0 -> 194694 bytes
-rw-r--r--Tests/Ecore-Plugin/outputs/models/4.xmi9
-rw-r--r--Tests/Ecore-Plugin/outputs/models/5.gml2781
-rw-r--r--Tests/Ecore-Plugin/outputs/models/5.pngbin0 -> 206377 bytes
-rw-r--r--Tests/Ecore-Plugin/outputs/models/5.xmi9
-rw-r--r--Tests/Ecore-Plugin/outputs/statistics.csv64
29 files changed, 44552 insertions, 0 deletions
diff --git a/Tests/Ecore-Plugin/.classpath b/Tests/Ecore-Plugin/.classpath
new file mode 100644
index 00000000..b862a296
--- /dev/null
+++ b/Tests/Ecore-Plugin/.classpath
@@ -0,0 +1,7 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="output" path="bin"/>
7</classpath>
diff --git a/Tests/Ecore-Plugin/.project b/Tests/Ecore-Plugin/.project
new file mode 100644
index 00000000..d75e46f7
--- /dev/null
+++ b/Tests/Ecore-Plugin/.project
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>Ecore-Plugin</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.jdt.core.javabuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.pde.ManifestBuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.SchemaBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 </buildSpec>
29 <natures>
30 <nature>org.eclipse.pde.PluginNature</nature>
31 <nature>org.eclipse.jdt.core.javanature</nature>
32 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
33 </natures>
34</projectDescription>
diff --git a/Tests/Ecore-Plugin/.settings/org.eclipse.jdt.core.prefs b/Tests/Ecore-Plugin/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..295926d9
--- /dev/null
+++ b/Tests/Ecore-Plugin/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Tests/Ecore-Plugin/EcoreGeneration.vsconfig b/Tests/Ecore-Plugin/EcoreGeneration.vsconfig
new file mode 100644
index 00000000..2ae1da99
--- /dev/null
+++ b/Tests/Ecore-Plugin/EcoreGeneration.vsconfig
@@ -0,0 +1,33 @@
1import epackage "http://www.eclipse.org/emf/2002/Ecore"
2
3metamodel allSupported { package ecore excluding {
4 EClassifier.instanceClass,EClassifier.defaultValue,EEnumLiteral.instance,EStructuralFeature.defaultValue,
5 EJavaClass, EJavaObject, EJavaObject,
6 EPackage.eFactoryInstance, EFactory, EFactory.ePackage
7 }
8}
9
10generate {
11 metamodel = allSupported
12 //constraints = { ... }
13 partial-model = { "platform:/resource/Ecore-Plugin/InitialPackage.ecore" }
14 solver = AlloySolver
15 scope = {
16 #node += 5,
17 #string += { "A", "B" },
18 #int += {0,1,-1}
19 }
20
21 config = {
22 runtime = 10000,
23 log-level = normal
24 }
25
26 number = 5
27 runs = 1
28
29 debug = "platform:/resource/Ecore-Plugin/outputs/debug"
30 log = "platform:/resource/Ecore-Plugin/outputs/log.txt"
31 output = "platform:/resource/Ecore-Plugin/outputs/models"
32 statistics = "platform:/resource/Ecore-Plugin/outputs/statistics.csv"
33} \ No newline at end of file
diff --git a/Tests/Ecore-Plugin/InitialPackage.ecore b/Tests/Ecore-Plugin/InitialPackage.ecore
new file mode 100644
index 00000000..539059a8
--- /dev/null
+++ b/Tests/Ecore-Plugin/InitialPackage.ecore
@@ -0,0 +1,2 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix"/>
diff --git a/Tests/Ecore-Plugin/META-INF/MANIFEST.MF b/Tests/Ecore-Plugin/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..e13ea790
--- /dev/null
+++ b/Tests/Ecore-Plugin/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: Ecore-Plugin
4Bundle-SymbolicName: Ecore-Plugin
5Bundle-Version: 1.0.0.qualifier
6Automatic-Module-Name: Ecore-Plugin
7Bundle-RequiredExecutionEnvironment: JavaSE-1.8
8Require-Bundle: org.eclipse.emf.ecore;bundle-version="2.14.0"
diff --git a/Tests/Ecore-Plugin/build.properties b/Tests/Ecore-Plugin/build.properties
new file mode 100644
index 00000000..41eb6ade
--- /dev/null
+++ b/Tests/Ecore-Plugin/build.properties
@@ -0,0 +1,4 @@
1source.. = src/
2output.. = bin/
3bin.includes = META-INF/,\
4 .
diff --git a/Tests/Ecore-Plugin/outputs/debug/errors.txt b/Tests/Ecore-Plugin/outputs/debug/errors.txt
new file mode 100644
index 00000000..f5a4c569
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/debug/errors.txt
@@ -0,0 +1,200 @@
1Error occured (UnsupportedOperationException): Unsupported attribute type: EJavaClass
2 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.TypeOfRange(EAttributeMapper_RelationsOverTypes.java:227)
3 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.transformEAttributes(EAttributeMapper_RelationsOverTypes.java:69)
4 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEAttributes(Ecore2Logic.java:140)
5 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:83)
6 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189)
7 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
8 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
9 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
10 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
11 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Unsupported attribute type: EJavaClass
12 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.TypeOfRange(EAttributeMapper_RelationsOverTypes.java:227)
13 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.transformEAttributes(EAttributeMapper_RelationsOverTypes.java:69)
14 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEAttributes(Ecore2Logic.java:140)
15 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:83)
16 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189)
17 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
18 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
19 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
20 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
21 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Class EFactory is not translated to logic!
22 hu.bme.mit.inf.dslreasoner.ecore2logic.EClassMapper_AllElementAsObject.TypeofEClass(EClassMapper_AllElementAsObject.java:63)
23 hu.bme.mit.inf.dslreasoner.ecore2logic.EReferenceMapper_RelationsOverTypes.createIndicatorDeclarations(EReferenceMapper_RelationsOverTypes.java:88)
24 hu.bme.mit.inf.dslreasoner.ecore2logic.EReferenceMapper_RelationsOverTypes.transformEReferences(EReferenceMapper_RelationsOverTypes.java:68)
25 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEReferences(Ecore2Logic.java:120)
26 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:81)
27 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189)
28 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
29 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
30 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
31 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
32 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Unsupported attribute type: EJavaClass
33 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.TypeOfRange(EAttributeMapper_RelationsOverTypes.java:227)
34 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.transformEAttributes(EAttributeMapper_RelationsOverTypes.java:69)
35 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEAttributes(Ecore2Logic.java:140)
36 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:83)
37 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189)
38 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
39 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
40 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
41 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
42 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Unsupported attribute type: EJavaClass of org.eclipse.emf.ecore.impl.EcorePackageImpl@3316527e (name: ecore) (nsURI: http://www.eclipse.org/emf/2002/Ecore, nsPrefix: ecore)::EClassifier.instanceClass
43 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.TypeOfRange(EAttributeMapper_RelationsOverTypes.java:237)
44 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.transformEAttributes(EAttributeMapper_RelationsOverTypes.java:70)
45 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEAttributes(Ecore2Logic.java:140)
46 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:83)
47 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189)
48 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
49 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
50 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
51 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
52 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Unsupported attribute type: EJavaObject of org.eclipse.emf.ecore.impl.EcorePackageImpl@a5e8260 (name: ecore) (nsURI: http://www.eclipse.org/emf/2002/Ecore, nsPrefix: ecore)::EClassifier.defaultValue
53 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.TypeOfRange(EAttributeMapper_RelationsOverTypes.java:237)
54 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.transformEAttributes(EAttributeMapper_RelationsOverTypes.java:70)
55 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEAttributes(Ecore2Logic.java:140)
56 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:83)
57 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189)
58 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
59 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
60 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
61 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
62 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Unsupported attribute type: EEnumerator of org.eclipse.emf.ecore.impl.EcorePackageImpl@a5e8260 (name: ecore) (nsURI: http://www.eclipse.org/emf/2002/Ecore, nsPrefix: ecore)::EEnumLiteral.instance
63 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.TypeOfRange(EAttributeMapper_RelationsOverTypes.java:237)
64 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.transformEAttributes(EAttributeMapper_RelationsOverTypes.java:70)
65 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEAttributes(Ecore2Logic.java:140)
66 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:83)
67 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189)
68 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
69 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
70 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
71 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
72 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Unsupported attribute type: EJavaObject of org.eclipse.emf.ecore.impl.EcorePackageImpl@a5e8260 (name: ecore) (nsURI: http://www.eclipse.org/emf/2002/Ecore, nsPrefix: ecore)::EStructuralFeature.defaultValue
73 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.TypeOfRange(EAttributeMapper_RelationsOverTypes.java:237)
74 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.transformEAttributes(EAttributeMapper_RelationsOverTypes.java:70)
75 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEAttributes(Ecore2Logic.java:140)
76 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:83)
77 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189)
78 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
79 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
80 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
81 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
82 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IOWrappedException): The object 'hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.StringElementImpl@7aef4326 (name: "InitialPackage") (valueSet: true) (value: InitialPackage)' is not contained in a resource.
83 org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.endSave(XMLSaveImpl.java:301)
84 org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl.java:265)
85 org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave(XMLResourceImpl.java:389)
86 org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1475)
87 org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1044)
88 hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace.writeModel(ReasonerWorkspace.java:80)
89 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:204)
90 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
91 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
92 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
93 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
94 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IOWrappedException): The object 'hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.StringElementImpl@fa78fd9 (name: "InitialPackage") (valueSet: true) (value: InitialPackage)' is not contained in a resource.
95 org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.endSave(XMLSaveImpl.java:301)
96 org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl.java:265)
97 org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave(XMLResourceImpl.java:389)
98 org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1475)
99 org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1044)
100 hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace.writeModel(ReasonerWorkspace.java:80)
101 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:204)
102 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
103 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
104 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
105 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
106 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Unhandled parameter types: [hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.StringLiteralImpl@26cfcaf3 (value: A), hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.PartialModelAsLogicInterpretation@24a216f4, {}]
107 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.resolve(LogicStructureBuilder.java:909)
108 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.lambda$22(LogicStructureBuilder.java:712)
109 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder$$Lambda$859/731011825.apply(Unknown Source)
110 org.eclipse.xtext.xbase.lib.internal.FunctionDelegate.apply(FunctionDelegate.java:42)
111 com.google.common.collect.Lists$TransformingRandomAccessList$1.transform(Lists.java:651)
112 com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
113 java.util.AbstractCollection.toArray(AbstractCollection.java:196)
114 com.google.common.collect.Iterables.toArray(Iterables.java:295)
115 com.google.common.collect.Iterables.toArray(Iterables.java:290)
116 org.eclipse.xtext.xbase.lib.Conversions.unwrapArray(Conversions.java:195)
117 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder._resolveSymbolicValue(LogicStructureBuilder.java:634)
118 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.resolveSymbolicValue(LogicStructureBuilder.java:924)
119 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder._resolve(LogicStructureBuilder.java:585)
120 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.resolve(LogicStructureBuilder.java:907)
121 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.evalAsBool(LogicStructureBuilder.java:96)
122 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:127)
123 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359)
124 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
125 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
126 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
127 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
128 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Unhandled parameter types: [false]
129 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.PartialModelAsLogicInterpretation.elementLookupForward(PartialModelAsLogicInterpretation.java:278)
130 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.PartialModelAsLogicInterpretation.getInterpretation(PartialModelAsLogicInterpretation.java:224)
131 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder._resolveSymbolicValue(LogicStructureBuilder.java:639)
132 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.resolveSymbolicValue(LogicStructureBuilder.java:931)
133 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder._resolve(LogicStructureBuilder.java:590)
134 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.resolve(LogicStructureBuilder.java:914)
135 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.evalAsBool(LogicStructureBuilder.java:97)
136 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:127)
137 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359)
138 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
139 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
140 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
141 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
142 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Unhandled parameter types: [false]
143 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.PartialModelAsLogicInterpretation.elementLookupForward(PartialModelAsLogicInterpretation.java:278)
144 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.PartialModelAsLogicInterpretation.getInterpretation(PartialModelAsLogicInterpretation.java:224)
145 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder._resolveSymbolicValue(LogicStructureBuilder.java:639)
146 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.resolveSymbolicValue(LogicStructureBuilder.java:931)
147 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder._resolve(LogicStructureBuilder.java:590)
148 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.resolve(LogicStructureBuilder.java:914)
149 hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder.evalAsBool(LogicStructureBuilder.java:97)
150 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:127)
151 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359)
152 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
153 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
154 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
155 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
156 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IOWrappedException): The object 'hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.StringElementImpl@4f949d6c (name: "packageName") (valueSet: true) (value: packageName)' is not contained in a resource.
157 org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.endSave(XMLSaveImpl.java:301)
158 org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl.java:265)
159 org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave(XMLResourceImpl.java:389)
160 org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1475)
161 org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1044)
162 hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace.writeModel(ReasonerWorkspace.java:80)
163 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:204)
164 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
165 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
166 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
167 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
168 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IOWrappedException): The object 'hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.StringElementImpl@3156ba0d (name: "packageName") (valueSet: true) (value: packageName)' is not contained in a resource.
169 org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.endSave(XMLSaveImpl.java:301)
170 org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl.java:265)
171 org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave(XMLResourceImpl.java:389)
172 org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1475)
173 org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1044)
174 hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace.writeModel(ReasonerWorkspace.java:80)
175 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:204)
176 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
177 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
178 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
179 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
180 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): TODO: auto-generated method stub
181 hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder.AlloyModelInterpretation.getAllStringsInStructure(AlloyModelInterpretation.java:384)
182 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore._getAllElementsOfDatatype(Logic2Ecore.java:191)
183 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.getAllElementsOfDatatype(Logic2Ecore.java:288)
184 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:122)
185 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359)
186 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
187 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
188 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
189 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
190 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): TODO: auto-generated method stub
191 hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder.AlloyModelInterpretation.getAllStringsInStructure(AlloyModelInterpretation.java:384)
192 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore._getAllElementsOfDatatype(Logic2Ecore.java:191)
193 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.getAllElementsOfDatatype(Logic2Ecore.java:288)
194 hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:122)
195 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359)
196 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
197 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
198 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
199 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
200 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56) \ No newline at end of file
diff --git a/Tests/Ecore-Plugin/outputs/debug/generated3valued.vql_deactivated b/Tests/Ecore-Plugin/outputs/debug/generated3valued.vql_deactivated
new file mode 100644
index 00000000..11cbdd60
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/debug/generated3valued.vql_deactivated
@@ -0,0 +1,27665 @@
1import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
2import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
3import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
4
5//////////
6// 0. Util
7//////////
8private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
9 PartialInterpretation.problem(interpretation,problem);
10}
11
12/////////////////////////
13// 0.1 Existence
14/////////////////////////
15private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16 find interpretation(problem,interpretation);
17 LogicProblem.elements(problem,element);
18} or {
19 find interpretation(problem,interpretation);
20 PartialInterpretation.newElements(interpretation,element);
21}
22
23private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24 find mustExist(problem,interpretation,element);
25} or {
26 find interpretation(problem,interpretation);
27 neg find elementCloseWorld(element);
28 PartialInterpretation.openWorldElements(interpretation,element);
29}
30
31private pattern elementCloseWorld(element:DefinedElement) {
32 PartialInterpretation.openWorldElements(i,element);
33 PartialInterpretation.maxNewElements(i,0);
34} or {
35 Scope.targetTypeInterpretation(scope,interpretation);
36 PartialTypeInterpratation.elements(interpretation,element);
37 Scope.maxNewElements(scope,0);
38}
39
40////////////////////////
41// 0.2 Equivalence
42////////////////////////
43pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
44 find mayExist(problem,interpretation,a);
45 find mayExist(problem,interpretation,b);
46 a == b;
47}
48
49////////////////////////
50// 0.3 Required Patterns by TypeIndexer
51////////////////////////
52private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
53 find interpretation(problem,interpretation);
54 LogicProblem.types(problem,type);
55 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57}
58
59private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
60 find interpretation(problem,interpretation);
61 LogicProblem.types(problem,type);
62 TypeDefinition.elements(type,element);
63} or {
64 find interpretation(problem,interpretation);
65 find typeInterpretation(problem,interpretation,type,typeInterpretation);
66 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
67}
68
69private pattern isPrimitive(element: PrimitiveElement) {
70 PrimitiveElement(element);
71}
72
73//////////
74// 1. Problem-Specific Base Indexers
75//////////
76// 1.1 Type Indexers
77//////////
78// 1.1.1 primitive Type Indexers
79//////////
80
81//////////
82// 1.1.2 domain-specific Type Indexers
83//////////
84/**
85 * An element must be an instance of type "EAttribute class".
86 */
87private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
88 Type.name(type,"EAttribute class");
89 find directInstanceOf(problem,interpretation,element,type);
90}
91private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
92 find interpretation(problem,interpretation);
93 PartialInterpretation.scopes(interpretation,scope);
94 Scope.targetTypeInterpretation(scope,typeInterpretation);
95 Scope.maxNewElements(scope,0);
96 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
97 Type.name(type,"EAttribute class");
98}
99
100/**
101 * An element may be an instance of type "EAttribute class".
102 */
103private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
104{
105 find interpretation(problem,interpretation);
106 PartialInterpretation.newElements(interpretation,element);
107 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
108 neg find mustInstanceOfEReference_class(problem,interpretation,element);
109 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
110 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
111 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
112 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
113 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
114 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
115 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
116 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
117 neg find mustInstanceOfEObject_class(problem,interpretation,element);
118 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
119 neg find isPrimitive(element);
120} or {
121 find interpretation(problem,interpretation);
122 PartialInterpretation.openWorldElements(interpretation,element);
123 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
124 neg find mustInstanceOfEReference_class(problem,interpretation,element);
125 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
126 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
127 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
128 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
129 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
130 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
131 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
132 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
133 neg find mustInstanceOfEObject_class(problem,interpretation,element);
134 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
135 neg find isPrimitive(element);
136} or
137{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
138/**
139 * An element must be an instance of type "EAnnotation class".
140 */
141private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
142 Type.name(type,"EAnnotation class");
143 find directInstanceOf(problem,interpretation,element,type);
144}
145private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
146 find interpretation(problem,interpretation);
147 PartialInterpretation.scopes(interpretation,scope);
148 Scope.targetTypeInterpretation(scope,typeInterpretation);
149 Scope.maxNewElements(scope,0);
150 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
151 Type.name(type,"EAnnotation class");
152}
153
154/**
155 * An element may be an instance of type "EAnnotation class".
156 */
157private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
158{
159 find interpretation(problem,interpretation);
160 PartialInterpretation.newElements(interpretation,element);
161 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
162 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
163 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
164 neg find mustInstanceOfEObject_class(problem,interpretation,element);
165 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
166 neg find isPrimitive(element);
167} or {
168 find interpretation(problem,interpretation);
169 PartialInterpretation.openWorldElements(interpretation,element);
170 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
171 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
172 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
173 neg find mustInstanceOfEObject_class(problem,interpretation,element);
174 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
175 neg find isPrimitive(element);
176} or
177{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
178/**
179 * An element must be an instance of type "EClass class".
180 */
181private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
182 Type.name(type,"EClass class");
183 find directInstanceOf(problem,interpretation,element,type);
184}
185private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
186 find interpretation(problem,interpretation);
187 PartialInterpretation.scopes(interpretation,scope);
188 Scope.targetTypeInterpretation(scope,typeInterpretation);
189 Scope.maxNewElements(scope,0);
190 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
191 Type.name(type,"EClass class");
192}
193
194/**
195 * An element may be an instance of type "EClass class".
196 */
197private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
198{
199 find interpretation(problem,interpretation);
200 PartialInterpretation.newElements(interpretation,element);
201 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
202 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
203 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
204 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
205 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
206 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
207 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
208 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
209 neg find mustInstanceOfEObject_class(problem,interpretation,element);
210 neg find scopeDisallowsNewEClass_class(problem, interpretation);
211 neg find isPrimitive(element);
212} or {
213 find interpretation(problem,interpretation);
214 PartialInterpretation.openWorldElements(interpretation,element);
215 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
216 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
217 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
218 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
219 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
220 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
221 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
222 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
223 neg find mustInstanceOfEObject_class(problem,interpretation,element);
224 neg find scopeDisallowsNewEClass_class(problem, interpretation);
225 neg find isPrimitive(element);
226} or
227{ find mustInstanceOfEClass_class(problem,interpretation,element); }
228/**
229 * An element must be an instance of type "EClassifier class".
230 */
231private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
232 Type.name(type,"EClassifier class");
233 find directInstanceOf(problem,interpretation,element,type);
234}
235private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
236 find interpretation(problem,interpretation);
237 PartialInterpretation.scopes(interpretation,scope);
238 Scope.targetTypeInterpretation(scope,typeInterpretation);
239 Scope.maxNewElements(scope,0);
240 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
241 Type.name(type,"EClassifier class");
242}
243
244/**
245 * An element may be an instance of type "EClassifier class".
246 */
247private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
248{
249 find interpretation(problem,interpretation);
250 PartialInterpretation.newElements(interpretation,element);
251 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
252 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
253 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
254 neg find mustInstanceOfEClass_class(problem,interpretation,element);
255 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
256 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
257 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
258 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
259 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
260 neg find mustInstanceOfEObject_class(problem,interpretation,element);
261 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
262 neg find isPrimitive(element);
263} or {
264 find interpretation(problem,interpretation);
265 PartialInterpretation.openWorldElements(interpretation,element);
266 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
267 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
268 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
269 neg find mustInstanceOfEClass_class(problem,interpretation,element);
270 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
271 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
272 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
273 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
274 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
275 neg find mustInstanceOfEObject_class(problem,interpretation,element);
276 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
277 neg find isPrimitive(element);
278} or
279{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
280/**
281 * An element must be an instance of type "EDataType class".
282 */
283private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
284 Type.name(type,"EDataType class");
285 find directInstanceOf(problem,interpretation,element,type);
286}
287private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
288 find interpretation(problem,interpretation);
289 PartialInterpretation.scopes(interpretation,scope);
290 Scope.targetTypeInterpretation(scope,typeInterpretation);
291 Scope.maxNewElements(scope,0);
292 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
293 Type.name(type,"EDataType class");
294}
295
296/**
297 * An element may be an instance of type "EDataType class".
298 */
299private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
300{
301 find interpretation(problem,interpretation);
302 PartialInterpretation.newElements(interpretation,element);
303 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
304 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
305 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
306 neg find mustInstanceOfEClass_class(problem,interpretation,element);
307 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
308 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
309 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
310 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
311 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
312 neg find mustInstanceOfEObject_class(problem,interpretation,element);
313 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
314 neg find isPrimitive(element);
315} or {
316 find interpretation(problem,interpretation);
317 PartialInterpretation.openWorldElements(interpretation,element);
318 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
319 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
320 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
321 neg find mustInstanceOfEClass_class(problem,interpretation,element);
322 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
323 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
324 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
325 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
326 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
327 neg find mustInstanceOfEObject_class(problem,interpretation,element);
328 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
329 neg find isPrimitive(element);
330} or
331{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
332/**
333 * An element must be an instance of type "EEnum class".
334 */
335private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
336 Type.name(type,"EEnum class");
337 find directInstanceOf(problem,interpretation,element,type);
338}
339private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
340 find interpretation(problem,interpretation);
341 PartialInterpretation.scopes(interpretation,scope);
342 Scope.targetTypeInterpretation(scope,typeInterpretation);
343 Scope.maxNewElements(scope,0);
344 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
345 Type.name(type,"EEnum class");
346}
347
348/**
349 * An element may be an instance of type "EEnum class".
350 */
351private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
352{
353 find interpretation(problem,interpretation);
354 PartialInterpretation.newElements(interpretation,element);
355 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
356 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
357 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
358 neg find mustInstanceOfEClass_class(problem,interpretation,element);
359 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
360 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
361 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
362 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
363 neg find mustInstanceOfEObject_class(problem,interpretation,element);
364 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
365 neg find isPrimitive(element);
366} or {
367 find interpretation(problem,interpretation);
368 PartialInterpretation.openWorldElements(interpretation,element);
369 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
370 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
371 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
372 neg find mustInstanceOfEClass_class(problem,interpretation,element);
373 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
374 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
375 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
376 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
377 neg find mustInstanceOfEObject_class(problem,interpretation,element);
378 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
379 neg find isPrimitive(element);
380} or
381{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
382/**
383 * An element must be an instance of type "EEnumLiteral class".
384 */
385private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
386 Type.name(type,"EEnumLiteral class");
387 find directInstanceOf(problem,interpretation,element,type);
388}
389private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
390 find interpretation(problem,interpretation);
391 PartialInterpretation.scopes(interpretation,scope);
392 Scope.targetTypeInterpretation(scope,typeInterpretation);
393 Scope.maxNewElements(scope,0);
394 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
395 Type.name(type,"EEnumLiteral class");
396}
397
398/**
399 * An element may be an instance of type "EEnumLiteral class".
400 */
401private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
402{
403 find interpretation(problem,interpretation);
404 PartialInterpretation.newElements(interpretation,element);
405 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
406 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
407 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
408 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
409 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
410 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
411 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
412 neg find mustInstanceOfEObject_class(problem,interpretation,element);
413 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
414 neg find isPrimitive(element);
415} or {
416 find interpretation(problem,interpretation);
417 PartialInterpretation.openWorldElements(interpretation,element);
418 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
419 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
420 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
421 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
422 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
423 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
424 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
425 neg find mustInstanceOfEObject_class(problem,interpretation,element);
426 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
427 neg find isPrimitive(element);
428} or
429{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
430/**
431 * An element must be an instance of type "EModelElement class".
432 */
433private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
434 Type.name(type,"EModelElement class");
435 find directInstanceOf(problem,interpretation,element,type);
436}
437private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
438 find interpretation(problem,interpretation);
439 PartialInterpretation.scopes(interpretation,scope);
440 Scope.targetTypeInterpretation(scope,typeInterpretation);
441 Scope.maxNewElements(scope,0);
442 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
443 Type.name(type,"EModelElement class");
444}
445
446/**
447 * An element may be an instance of type "EModelElement class".
448 */
449private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
450{
451 find interpretation(problem,interpretation);
452 PartialInterpretation.newElements(interpretation,element);
453 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
454 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
455 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
456 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
457 neg find mustInstanceOfEObject_class(problem,interpretation,element);
458 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
459 neg find isPrimitive(element);
460} or {
461 find interpretation(problem,interpretation);
462 PartialInterpretation.openWorldElements(interpretation,element);
463 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
464 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
465 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
466 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
467 neg find mustInstanceOfEObject_class(problem,interpretation,element);
468 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
469 neg find isPrimitive(element);
470} or
471{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
472/**
473 * An element must be an instance of type "ENamedElement class".
474 */
475private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
476 Type.name(type,"ENamedElement class");
477 find directInstanceOf(problem,interpretation,element,type);
478}
479private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
480 find interpretation(problem,interpretation);
481 PartialInterpretation.scopes(interpretation,scope);
482 Scope.targetTypeInterpretation(scope,typeInterpretation);
483 Scope.maxNewElements(scope,0);
484 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
485 Type.name(type,"ENamedElement class");
486}
487
488/**
489 * An element may be an instance of type "ENamedElement class".
490 */
491private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
492{
493 find interpretation(problem,interpretation);
494 PartialInterpretation.newElements(interpretation,element);
495 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
496 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
497 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
498 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
499 neg find mustInstanceOfEObject_class(problem,interpretation,element);
500 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
501 neg find isPrimitive(element);
502} or {
503 find interpretation(problem,interpretation);
504 PartialInterpretation.openWorldElements(interpretation,element);
505 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
506 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
507 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
508 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
509 neg find mustInstanceOfEObject_class(problem,interpretation,element);
510 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
511 neg find isPrimitive(element);
512} or
513{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
514/**
515 * An element must be an instance of type "EObject class".
516 */
517private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
518 Type.name(type,"EObject class");
519 find directInstanceOf(problem,interpretation,element,type);
520}
521private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
522 find interpretation(problem,interpretation);
523 PartialInterpretation.scopes(interpretation,scope);
524 Scope.targetTypeInterpretation(scope,typeInterpretation);
525 Scope.maxNewElements(scope,0);
526 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
527 Type.name(type,"EObject class");
528}
529
530/**
531 * An element may be an instance of type "EObject class".
532 */
533private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
534{
535 find interpretation(problem,interpretation);
536 PartialInterpretation.newElements(interpretation,element);
537 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
538 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
539 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
540 neg find scopeDisallowsNewEObject_class(problem, interpretation);
541 neg find isPrimitive(element);
542} or {
543 find interpretation(problem,interpretation);
544 PartialInterpretation.openWorldElements(interpretation,element);
545 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
546 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
547 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
548 neg find scopeDisallowsNewEObject_class(problem, interpretation);
549 neg find isPrimitive(element);
550} or
551{ find mustInstanceOfEObject_class(problem,interpretation,element); }
552/**
553 * An element must be an instance of type "EOperation class".
554 */
555private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
556 Type.name(type,"EOperation class");
557 find directInstanceOf(problem,interpretation,element,type);
558}
559private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
560 find interpretation(problem,interpretation);
561 PartialInterpretation.scopes(interpretation,scope);
562 Scope.targetTypeInterpretation(scope,typeInterpretation);
563 Scope.maxNewElements(scope,0);
564 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
565 Type.name(type,"EOperation class");
566}
567
568/**
569 * An element may be an instance of type "EOperation class".
570 */
571private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
572{
573 find interpretation(problem,interpretation);
574 PartialInterpretation.newElements(interpretation,element);
575 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
576 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
577 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
578 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
579 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
580 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
581 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
582 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
583 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
584 neg find mustInstanceOfEObject_class(problem,interpretation,element);
585 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
586 neg find isPrimitive(element);
587} or {
588 find interpretation(problem,interpretation);
589 PartialInterpretation.openWorldElements(interpretation,element);
590 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
591 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
592 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
593 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
594 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
595 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
596 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
597 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
598 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
599 neg find mustInstanceOfEObject_class(problem,interpretation,element);
600 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
601 neg find isPrimitive(element);
602} or
603{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
604/**
605 * An element must be an instance of type "EPackage class".
606 */
607private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
608 Type.name(type,"EPackage class");
609 find directInstanceOf(problem,interpretation,element,type);
610}
611private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
612 find interpretation(problem,interpretation);
613 PartialInterpretation.scopes(interpretation,scope);
614 Scope.targetTypeInterpretation(scope,typeInterpretation);
615 Scope.maxNewElements(scope,0);
616 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
617 Type.name(type,"EPackage class");
618}
619
620/**
621 * An element may be an instance of type "EPackage class".
622 */
623private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
624{
625 find interpretation(problem,interpretation);
626 PartialInterpretation.newElements(interpretation,element);
627 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
628 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
629 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
630 neg find mustInstanceOfEObject_class(problem,interpretation,element);
631 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
632 neg find isPrimitive(element);
633} or {
634 find interpretation(problem,interpretation);
635 PartialInterpretation.openWorldElements(interpretation,element);
636 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
637 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
638 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
639 neg find mustInstanceOfEObject_class(problem,interpretation,element);
640 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
641 neg find isPrimitive(element);
642} or
643{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
644/**
645 * An element must be an instance of type "EParameter class".
646 */
647private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
648 Type.name(type,"EParameter class");
649 find directInstanceOf(problem,interpretation,element,type);
650}
651private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
652 find interpretation(problem,interpretation);
653 PartialInterpretation.scopes(interpretation,scope);
654 Scope.targetTypeInterpretation(scope,typeInterpretation);
655 Scope.maxNewElements(scope,0);
656 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
657 Type.name(type,"EParameter class");
658}
659
660/**
661 * An element may be an instance of type "EParameter class".
662 */
663private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
664{
665 find interpretation(problem,interpretation);
666 PartialInterpretation.newElements(interpretation,element);
667 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
668 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
669 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
670 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
671 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
672 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
673 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
674 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
675 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
676 neg find mustInstanceOfEObject_class(problem,interpretation,element);
677 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
678 neg find isPrimitive(element);
679} or {
680 find interpretation(problem,interpretation);
681 PartialInterpretation.openWorldElements(interpretation,element);
682 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
683 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
684 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
685 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
686 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
687 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
688 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
689 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
690 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
691 neg find mustInstanceOfEObject_class(problem,interpretation,element);
692 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
693 neg find isPrimitive(element);
694} or
695{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
696/**
697 * An element must be an instance of type "EReference class".
698 */
699private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
700 Type.name(type,"EReference class");
701 find directInstanceOf(problem,interpretation,element,type);
702}
703private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
704 find interpretation(problem,interpretation);
705 PartialInterpretation.scopes(interpretation,scope);
706 Scope.targetTypeInterpretation(scope,typeInterpretation);
707 Scope.maxNewElements(scope,0);
708 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
709 Type.name(type,"EReference class");
710}
711
712/**
713 * An element may be an instance of type "EReference class".
714 */
715private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
716{
717 find interpretation(problem,interpretation);
718 PartialInterpretation.newElements(interpretation,element);
719 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
720 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
721 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
722 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
723 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
724 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
725 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
726 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
727 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
728 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
729 neg find mustInstanceOfEObject_class(problem,interpretation,element);
730 neg find scopeDisallowsNewEReference_class(problem, interpretation);
731 neg find isPrimitive(element);
732} or {
733 find interpretation(problem,interpretation);
734 PartialInterpretation.openWorldElements(interpretation,element);
735 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
736 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
737 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
738 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
739 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
740 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
741 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
742 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
743 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
744 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
745 neg find mustInstanceOfEObject_class(problem,interpretation,element);
746 neg find scopeDisallowsNewEReference_class(problem, interpretation);
747 neg find isPrimitive(element);
748} or
749{ find mustInstanceOfEReference_class(problem,interpretation,element); }
750/**
751 * An element must be an instance of type "EStructuralFeature class".
752 */
753private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
754 Type.name(type,"EStructuralFeature class");
755 find directInstanceOf(problem,interpretation,element,type);
756}
757private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
758 find interpretation(problem,interpretation);
759 PartialInterpretation.scopes(interpretation,scope);
760 Scope.targetTypeInterpretation(scope,typeInterpretation);
761 Scope.maxNewElements(scope,0);
762 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
763 Type.name(type,"EStructuralFeature class");
764}
765
766/**
767 * An element may be an instance of type "EStructuralFeature class".
768 */
769private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
770{
771 find interpretation(problem,interpretation);
772 PartialInterpretation.newElements(interpretation,element);
773 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
774 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
775 neg find mustInstanceOfEReference_class(problem,interpretation,element);
776 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
777 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
778 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
779 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
780 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
781 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
782 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
783 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
784 neg find mustInstanceOfEObject_class(problem,interpretation,element);
785 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
786 neg find isPrimitive(element);
787} or {
788 find interpretation(problem,interpretation);
789 PartialInterpretation.openWorldElements(interpretation,element);
790 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
791 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
792 neg find mustInstanceOfEReference_class(problem,interpretation,element);
793 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
794 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
795 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
796 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
797 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
798 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
799 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
800 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
801 neg find mustInstanceOfEObject_class(problem,interpretation,element);
802 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
803 neg find isPrimitive(element);
804} or
805{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
806/**
807 * An element must be an instance of type "ETypedElement class".
808 */
809private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
810 Type.name(type,"ETypedElement class");
811 find directInstanceOf(problem,interpretation,element,type);
812}
813private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
814 find interpretation(problem,interpretation);
815 PartialInterpretation.scopes(interpretation,scope);
816 Scope.targetTypeInterpretation(scope,typeInterpretation);
817 Scope.maxNewElements(scope,0);
818 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
819 Type.name(type,"ETypedElement class");
820}
821
822/**
823 * An element may be an instance of type "ETypedElement class".
824 */
825private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
826{
827 find interpretation(problem,interpretation);
828 PartialInterpretation.newElements(interpretation,element);
829 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
830 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
831 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
832 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
833 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
834 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
835 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
836 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
837 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
838 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
839 neg find mustInstanceOfEObject_class(problem,interpretation,element);
840 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
841 neg find isPrimitive(element);
842} or {
843 find interpretation(problem,interpretation);
844 PartialInterpretation.openWorldElements(interpretation,element);
845 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
846 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
847 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
848 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
849 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
850 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
851 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
852 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
853 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
854 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
855 neg find mustInstanceOfEObject_class(problem,interpretation,element);
856 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
857 neg find isPrimitive(element);
858} or
859{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
860/**
861 * An element must be an instance of type "EStringToStringMapEntry class".
862 */
863private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
864 Type.name(type,"EStringToStringMapEntry class");
865 find directInstanceOf(problem,interpretation,element,type);
866}
867private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
868 find interpretation(problem,interpretation);
869 PartialInterpretation.scopes(interpretation,scope);
870 Scope.targetTypeInterpretation(scope,typeInterpretation);
871 Scope.maxNewElements(scope,0);
872 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
873 Type.name(type,"EStringToStringMapEntry class");
874}
875
876/**
877 * An element may be an instance of type "EStringToStringMapEntry class".
878 */
879private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
880{
881 find interpretation(problem,interpretation);
882 PartialInterpretation.newElements(interpretation,element);
883 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
884 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
885 neg find mustInstanceOfEObject_class(problem,interpretation,element);
886 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
887 neg find isPrimitive(element);
888} or {
889 find interpretation(problem,interpretation);
890 PartialInterpretation.openWorldElements(interpretation,element);
891 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
892 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
893 neg find mustInstanceOfEObject_class(problem,interpretation,element);
894 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
895 neg find isPrimitive(element);
896} or
897{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
898/**
899 * An element must be an instance of type "EGenericType class".
900 */
901private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
902 Type.name(type,"EGenericType class");
903 find directInstanceOf(problem,interpretation,element,type);
904}
905private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
906 find interpretation(problem,interpretation);
907 PartialInterpretation.scopes(interpretation,scope);
908 Scope.targetTypeInterpretation(scope,typeInterpretation);
909 Scope.maxNewElements(scope,0);
910 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
911 Type.name(type,"EGenericType class");
912}
913
914/**
915 * An element may be an instance of type "EGenericType class".
916 */
917private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
918{
919 find interpretation(problem,interpretation);
920 PartialInterpretation.newElements(interpretation,element);
921 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
922 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
923 neg find mustInstanceOfEObject_class(problem,interpretation,element);
924 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
925 neg find isPrimitive(element);
926} or {
927 find interpretation(problem,interpretation);
928 PartialInterpretation.openWorldElements(interpretation,element);
929 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
930 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
931 neg find mustInstanceOfEObject_class(problem,interpretation,element);
932 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
933 neg find isPrimitive(element);
934} or
935{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
936/**
937 * An element must be an instance of type "ETypeParameter class".
938 */
939private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
940 Type.name(type,"ETypeParameter class");
941 find directInstanceOf(problem,interpretation,element,type);
942}
943private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
944 find interpretation(problem,interpretation);
945 PartialInterpretation.scopes(interpretation,scope);
946 Scope.targetTypeInterpretation(scope,typeInterpretation);
947 Scope.maxNewElements(scope,0);
948 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
949 Type.name(type,"ETypeParameter class");
950}
951
952/**
953 * An element may be an instance of type "ETypeParameter class".
954 */
955private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
956{
957 find interpretation(problem,interpretation);
958 PartialInterpretation.newElements(interpretation,element);
959 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
960 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
961 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
962 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
963 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
964 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
965 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
966 neg find mustInstanceOfEObject_class(problem,interpretation,element);
967 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
968 neg find isPrimitive(element);
969} or {
970 find interpretation(problem,interpretation);
971 PartialInterpretation.openWorldElements(interpretation,element);
972 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
973 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
974 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
975 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
976 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
977 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
978 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
979 neg find mustInstanceOfEObject_class(problem,interpretation,element);
980 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
981 neg find isPrimitive(element);
982} or
983{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
984/**
985 * An element must be an instance of type "EModelElement class DefinedPart".
986 */
987private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
988 Type.name(type,"EModelElement class DefinedPart");
989 find directInstanceOf(problem,interpretation,element,type);
990}
991private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
992 find interpretation(problem,interpretation);
993 PartialInterpretation.scopes(interpretation,scope);
994 Scope.targetTypeInterpretation(scope,typeInterpretation);
995 Scope.maxNewElements(scope,0);
996 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
997 Type.name(type,"EModelElement class DefinedPart");
998}
999
1000/**
1001 * An element may be an instance of type "EModelElement class DefinedPart".
1002 */
1003private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
1004{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
1005/**
1006 * An element must be an instance of type "EModelElement class UndefinedPart".
1007 */
1008private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
1009 Type.name(type,"EModelElement class UndefinedPart");
1010 find directInstanceOf(problem,interpretation,element,type);
1011}
1012private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
1013 find interpretation(problem,interpretation);
1014 PartialInterpretation.scopes(interpretation,scope);
1015 Scope.targetTypeInterpretation(scope,typeInterpretation);
1016 Scope.maxNewElements(scope,0);
1017 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
1018 Type.name(type,"EModelElement class UndefinedPart");
1019}
1020
1021/**
1022 * An element may be an instance of type "EModelElement class UndefinedPart".
1023 */
1024private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
1025{
1026 find interpretation(problem,interpretation);
1027 PartialInterpretation.newElements(interpretation,element);
1028 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
1029 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
1030 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
1031 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
1032 neg find mustInstanceOfEObject_class(problem,interpretation,element);
1033 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
1034 neg find isPrimitive(element);
1035} or {
1036 find interpretation(problem,interpretation);
1037 PartialInterpretation.openWorldElements(interpretation,element);
1038 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
1039 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
1040 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
1041 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
1042 neg find mustInstanceOfEObject_class(problem,interpretation,element);
1043 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
1044 neg find isPrimitive(element);
1045} or
1046{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
1047/**
1048 * An element must be an instance of type "ENamedElement class DefinedPart".
1049 */
1050private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
1051 Type.name(type,"ENamedElement class DefinedPart");
1052 find directInstanceOf(problem,interpretation,element,type);
1053}
1054private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
1055 find interpretation(problem,interpretation);
1056 PartialInterpretation.scopes(interpretation,scope);
1057 Scope.targetTypeInterpretation(scope,typeInterpretation);
1058 Scope.maxNewElements(scope,0);
1059 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
1060 Type.name(type,"ENamedElement class DefinedPart");
1061}
1062
1063/**
1064 * An element may be an instance of type "ENamedElement class DefinedPart".
1065 */
1066private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
1067{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
1068/**
1069 * An element must be an instance of type "ENamedElement class UndefinedPart".
1070 */
1071private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
1072 Type.name(type,"ENamedElement class UndefinedPart");
1073 find directInstanceOf(problem,interpretation,element,type);
1074}
1075private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
1076 find interpretation(problem,interpretation);
1077 PartialInterpretation.scopes(interpretation,scope);
1078 Scope.targetTypeInterpretation(scope,typeInterpretation);
1079 Scope.maxNewElements(scope,0);
1080 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
1081 Type.name(type,"ENamedElement class UndefinedPart");
1082}
1083
1084/**
1085 * An element may be an instance of type "ENamedElement class UndefinedPart".
1086 */
1087private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
1088{
1089 find interpretation(problem,interpretation);
1090 PartialInterpretation.newElements(interpretation,element);
1091 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
1092 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
1093 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
1094 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
1095 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
1096 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
1097 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
1098 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
1099 neg find mustInstanceOfEObject_class(problem,interpretation,element);
1100 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
1101 neg find isPrimitive(element);
1102} or {
1103 find interpretation(problem,interpretation);
1104 PartialInterpretation.openWorldElements(interpretation,element);
1105 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
1106 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
1107 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
1108 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
1109 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
1110 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
1111 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
1112 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
1113 neg find mustInstanceOfEObject_class(problem,interpretation,element);
1114 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
1115 neg find isPrimitive(element);
1116} or
1117{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
1118/**
1119 * An element must be an instance of type "EPackage class DefinedPart".
1120 */
1121private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
1122 Type.name(type,"EPackage class DefinedPart");
1123 find directInstanceOf(problem,interpretation,element,type);
1124}
1125private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
1126 find interpretation(problem,interpretation);
1127 PartialInterpretation.scopes(interpretation,scope);
1128 Scope.targetTypeInterpretation(scope,typeInterpretation);
1129 Scope.maxNewElements(scope,0);
1130 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
1131 Type.name(type,"EPackage class DefinedPart");
1132}
1133
1134/**
1135 * An element may be an instance of type "EPackage class DefinedPart".
1136 */
1137private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
1138{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
1139/**
1140 * An element must be an instance of type "EPackage class UndefinedPart".
1141 */
1142private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
1143 Type.name(type,"EPackage class UndefinedPart");
1144 find directInstanceOf(problem,interpretation,element,type);
1145}
1146private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
1147 find interpretation(problem,interpretation);
1148 PartialInterpretation.scopes(interpretation,scope);
1149 Scope.targetTypeInterpretation(scope,typeInterpretation);
1150 Scope.maxNewElements(scope,0);
1151 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
1152 Type.name(type,"EPackage class UndefinedPart");
1153}
1154
1155/**
1156 * An element may be an instance of type "EPackage class UndefinedPart".
1157 */
1158private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
1159{
1160 find interpretation(problem,interpretation);
1161 PartialInterpretation.newElements(interpretation,element);
1162 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
1163 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
1164 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
1165 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
1166 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
1167 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
1168 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
1169 neg find mustInstanceOfEObject_class(problem,interpretation,element);
1170 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
1171 neg find isPrimitive(element);
1172} or {
1173 find interpretation(problem,interpretation);
1174 PartialInterpretation.openWorldElements(interpretation,element);
1175 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
1176 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
1177 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
1178 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
1179 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
1180 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
1181 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
1182 neg find mustInstanceOfEObject_class(problem,interpretation,element);
1183 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
1184 neg find isPrimitive(element);
1185} or
1186{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
1187
1188//////////
1189// 1.2 Relation Declaration Indexers
1190//////////
1191/**
1192 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
1193 */
1194private pattern mustInRelationeAttributeType_reference_EAttribute(
1195 problem:LogicProblem, interpretation:PartialInterpretation,
1196 source: DefinedElement, target:DefinedElement)
1197{
1198 find interpretation(problem,interpretation);
1199 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1200 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
1201 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1202 BinaryElementRelationLink.param1(link,source);
1203 BinaryElementRelationLink.param2(link,target);
1204}
1205/**
1206 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
1207 */
1208private pattern mayInRelationeAttributeType_reference_EAttribute(
1209 problem:LogicProblem, interpretation:PartialInterpretation,
1210 source: DefinedElement, target:DefinedElement)
1211{
1212 find interpretation(problem,interpretation);
1213 // The two endpoint of the link have to exist
1214 find mayExist(problem, interpretation, source);
1215 find mayExist(problem, interpretation, target);
1216 // Type consistency
1217 find mayInstanceOfEAttribute_class(problem,interpretation,source);
1218 find mayInstanceOfEDataType_class(problem,interpretation,target);
1219 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1220 // the upper bound of the multiplicity should be considered.
1221 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
1222 check(numberOfExistingReferences < 1);
1223} or {
1224 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
1225}
1226/**
1227 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
1228 */
1229private pattern mustInRelationdetails_reference_EAnnotation(
1230 problem:LogicProblem, interpretation:PartialInterpretation,
1231 source: DefinedElement, target:DefinedElement)
1232{
1233 find interpretation(problem,interpretation);
1234 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1235 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
1236 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1237 BinaryElementRelationLink.param1(link,source);
1238 BinaryElementRelationLink.param2(link,target);
1239}
1240/**
1241 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
1242 */
1243private pattern mayInRelationdetails_reference_EAnnotation(
1244 problem:LogicProblem, interpretation:PartialInterpretation,
1245 source: DefinedElement, target:DefinedElement)
1246{
1247 find interpretation(problem,interpretation);
1248 // The two endpoint of the link have to exist
1249 find mayExist(problem, interpretation, source);
1250 find mayExist(problem, interpretation, target);
1251 // Type consistency
1252 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
1253 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
1254 // The reference is containment, then a new reference cannot be create if:
1255 // 1. Multiple parents
1256 neg find mustContains4(problem,interpretation,_,target);
1257 // 2. Circle in the containment hierarchy
1258 neg find mustTransitiveContains(source,target);
1259} or {
1260 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
1261}
1262/**
1263 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
1264 */
1265private pattern mustInRelationeModelElement_reference_EAnnotation(
1266 problem:LogicProblem, interpretation:PartialInterpretation,
1267 source: DefinedElement, target:DefinedElement)
1268{
1269 find interpretation(problem,interpretation);
1270 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1271 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
1272 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1273 BinaryElementRelationLink.param1(link,source);
1274 BinaryElementRelationLink.param2(link,target);
1275}
1276/**
1277 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
1278 */
1279private pattern mayInRelationeModelElement_reference_EAnnotation(
1280 problem:LogicProblem, interpretation:PartialInterpretation,
1281 source: DefinedElement, target:DefinedElement)
1282{
1283 find interpretation(problem,interpretation);
1284 // The two endpoint of the link have to exist
1285 find mayExist(problem, interpretation, source);
1286 find mayExist(problem, interpretation, target);
1287 // Type consistency
1288 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
1289 find mayInstanceOfEModelElement_class(problem,interpretation,target);
1290 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1291 // the upper bound of the multiplicity should be considered.
1292 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
1293 check(numberOfExistingReferences < 1);
1294 // The eOpposite of the reference is containment, then a referene cannot be created if
1295 // 1. Multiple parents
1296 neg find mustContains4(problem,interpretation,source,_);
1297 // 2. Circle in the containment hierarchy
1298 neg find mustTransitiveContains(source,target);
1299} or {
1300 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
1301}
1302/**
1303 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
1304 */
1305private pattern mustInRelationcontents_reference_EAnnotation(
1306 problem:LogicProblem, interpretation:PartialInterpretation,
1307 source: DefinedElement, target:DefinedElement)
1308{
1309 find interpretation(problem,interpretation);
1310 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1311 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
1312 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1313 BinaryElementRelationLink.param1(link,source);
1314 BinaryElementRelationLink.param2(link,target);
1315}
1316/**
1317 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
1318 */
1319private pattern mayInRelationcontents_reference_EAnnotation(
1320 problem:LogicProblem, interpretation:PartialInterpretation,
1321 source: DefinedElement, target:DefinedElement)
1322{
1323 find interpretation(problem,interpretation);
1324 // The two endpoint of the link have to exist
1325 find mayExist(problem, interpretation, source);
1326 find mayExist(problem, interpretation, target);
1327 // Type consistency
1328 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
1329 find mayInstanceOfEObject_class(problem,interpretation,target);
1330 // The reference is containment, then a new reference cannot be create if:
1331 // 1. Multiple parents
1332 neg find mustContains4(problem,interpretation,_,target);
1333 // 2. Circle in the containment hierarchy
1334 neg find mustTransitiveContains(source,target);
1335} or {
1336 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
1337}
1338/**
1339 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
1340 */
1341private pattern mustInRelationreferences_reference_EAnnotation(
1342 problem:LogicProblem, interpretation:PartialInterpretation,
1343 source: DefinedElement, target:DefinedElement)
1344{
1345 find interpretation(problem,interpretation);
1346 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1347 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
1348 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1349 BinaryElementRelationLink.param1(link,source);
1350 BinaryElementRelationLink.param2(link,target);
1351}
1352/**
1353 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
1354 */
1355private pattern mayInRelationreferences_reference_EAnnotation(
1356 problem:LogicProblem, interpretation:PartialInterpretation,
1357 source: DefinedElement, target:DefinedElement)
1358{
1359 find interpretation(problem,interpretation);
1360 // The two endpoint of the link have to exist
1361 find mayExist(problem, interpretation, source);
1362 find mayExist(problem, interpretation, target);
1363 // Type consistency
1364 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
1365 find mayInstanceOfEObject_class(problem,interpretation,target);
1366} or {
1367 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
1368}
1369/**
1370 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
1371 */
1372private pattern mustInRelationeSuperTypes_reference_EClass(
1373 problem:LogicProblem, interpretation:PartialInterpretation,
1374 source: DefinedElement, target:DefinedElement)
1375{
1376 find interpretation(problem,interpretation);
1377 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1378 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
1379 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1380 BinaryElementRelationLink.param1(link,source);
1381 BinaryElementRelationLink.param2(link,target);
1382}
1383/**
1384 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
1385 */
1386private pattern mayInRelationeSuperTypes_reference_EClass(
1387 problem:LogicProblem, interpretation:PartialInterpretation,
1388 source: DefinedElement, target:DefinedElement)
1389{
1390 find interpretation(problem,interpretation);
1391 // The two endpoint of the link have to exist
1392 find mayExist(problem, interpretation, source);
1393 find mayExist(problem, interpretation, target);
1394 // Type consistency
1395 find mayInstanceOfEClass_class(problem,interpretation,source);
1396 find mayInstanceOfEClass_class(problem,interpretation,target);
1397} or {
1398 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
1399}
1400/**
1401 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
1402 */
1403private pattern mustInRelationeOperations_reference_EClass(
1404 problem:LogicProblem, interpretation:PartialInterpretation,
1405 source: DefinedElement, target:DefinedElement)
1406{
1407 find interpretation(problem,interpretation);
1408 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1409 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
1410 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1411 BinaryElementRelationLink.param1(link,source);
1412 BinaryElementRelationLink.param2(link,target);
1413}
1414/**
1415 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
1416 */
1417private pattern mayInRelationeOperations_reference_EClass(
1418 problem:LogicProblem, interpretation:PartialInterpretation,
1419 source: DefinedElement, target:DefinedElement)
1420{
1421 find interpretation(problem,interpretation);
1422 // The two endpoint of the link have to exist
1423 find mayExist(problem, interpretation, source);
1424 find mayExist(problem, interpretation, target);
1425 // Type consistency
1426 find mayInstanceOfEClass_class(problem,interpretation,source);
1427 find mayInstanceOfEOperation_class(problem,interpretation,target);
1428 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
1429 // the upper bound of the opposite reference multiplicity should be considered.
1430 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
1431 check(numberOfExistingOppositeReferences < 1);
1432 // The reference is containment, then a new reference cannot be create if:
1433 // 1. Multiple parents
1434 neg find mustContains4(problem,interpretation,_,target);
1435 // 2. Circle in the containment hierarchy
1436 neg find mustTransitiveContains(source,target);
1437} or {
1438 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
1439}
1440/**
1441 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
1442 */
1443private pattern mustInRelationeAllAttributes_reference_EClass(
1444 problem:LogicProblem, interpretation:PartialInterpretation,
1445 source: DefinedElement, target:DefinedElement)
1446{
1447 find interpretation(problem,interpretation);
1448 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1449 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
1450 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1451 BinaryElementRelationLink.param1(link,source);
1452 BinaryElementRelationLink.param2(link,target);
1453}
1454/**
1455 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
1456 */
1457private pattern mayInRelationeAllAttributes_reference_EClass(
1458 problem:LogicProblem, interpretation:PartialInterpretation,
1459 source: DefinedElement, target:DefinedElement)
1460{
1461 find interpretation(problem,interpretation);
1462 // The two endpoint of the link have to exist
1463 find mayExist(problem, interpretation, source);
1464 find mayExist(problem, interpretation, target);
1465 // Type consistency
1466 find mayInstanceOfEClass_class(problem,interpretation,source);
1467 find mayInstanceOfEAttribute_class(problem,interpretation,target);
1468} or {
1469 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
1470}
1471/**
1472 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
1473 */
1474private pattern mustInRelationeAllReferences_reference_EClass(
1475 problem:LogicProblem, interpretation:PartialInterpretation,
1476 source: DefinedElement, target:DefinedElement)
1477{
1478 find interpretation(problem,interpretation);
1479 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1480 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
1481 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1482 BinaryElementRelationLink.param1(link,source);
1483 BinaryElementRelationLink.param2(link,target);
1484}
1485/**
1486 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
1487 */
1488private pattern mayInRelationeAllReferences_reference_EClass(
1489 problem:LogicProblem, interpretation:PartialInterpretation,
1490 source: DefinedElement, target:DefinedElement)
1491{
1492 find interpretation(problem,interpretation);
1493 // The two endpoint of the link have to exist
1494 find mayExist(problem, interpretation, source);
1495 find mayExist(problem, interpretation, target);
1496 // Type consistency
1497 find mayInstanceOfEClass_class(problem,interpretation,source);
1498 find mayInstanceOfEReference_class(problem,interpretation,target);
1499} or {
1500 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
1501}
1502/**
1503 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
1504 */
1505private pattern mustInRelationeReferences_reference_EClass(
1506 problem:LogicProblem, interpretation:PartialInterpretation,
1507 source: DefinedElement, target:DefinedElement)
1508{
1509 find interpretation(problem,interpretation);
1510 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1511 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
1512 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1513 BinaryElementRelationLink.param1(link,source);
1514 BinaryElementRelationLink.param2(link,target);
1515}
1516/**
1517 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
1518 */
1519private pattern mayInRelationeReferences_reference_EClass(
1520 problem:LogicProblem, interpretation:PartialInterpretation,
1521 source: DefinedElement, target:DefinedElement)
1522{
1523 find interpretation(problem,interpretation);
1524 // The two endpoint of the link have to exist
1525 find mayExist(problem, interpretation, source);
1526 find mayExist(problem, interpretation, target);
1527 // Type consistency
1528 find mayInstanceOfEClass_class(problem,interpretation,source);
1529 find mayInstanceOfEReference_class(problem,interpretation,target);
1530} or {
1531 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
1532}
1533/**
1534 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
1535 */
1536private pattern mustInRelationeAttributes_reference_EClass(
1537 problem:LogicProblem, interpretation:PartialInterpretation,
1538 source: DefinedElement, target:DefinedElement)
1539{
1540 find interpretation(problem,interpretation);
1541 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1542 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
1543 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1544 BinaryElementRelationLink.param1(link,source);
1545 BinaryElementRelationLink.param2(link,target);
1546}
1547/**
1548 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
1549 */
1550private pattern mayInRelationeAttributes_reference_EClass(
1551 problem:LogicProblem, interpretation:PartialInterpretation,
1552 source: DefinedElement, target:DefinedElement)
1553{
1554 find interpretation(problem,interpretation);
1555 // The two endpoint of the link have to exist
1556 find mayExist(problem, interpretation, source);
1557 find mayExist(problem, interpretation, target);
1558 // Type consistency
1559 find mayInstanceOfEClass_class(problem,interpretation,source);
1560 find mayInstanceOfEAttribute_class(problem,interpretation,target);
1561} or {
1562 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
1563}
1564/**
1565 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
1566 */
1567private pattern mustInRelationeAllContainments_reference_EClass(
1568 problem:LogicProblem, interpretation:PartialInterpretation,
1569 source: DefinedElement, target:DefinedElement)
1570{
1571 find interpretation(problem,interpretation);
1572 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1573 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
1574 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1575 BinaryElementRelationLink.param1(link,source);
1576 BinaryElementRelationLink.param2(link,target);
1577}
1578/**
1579 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
1580 */
1581private pattern mayInRelationeAllContainments_reference_EClass(
1582 problem:LogicProblem, interpretation:PartialInterpretation,
1583 source: DefinedElement, target:DefinedElement)
1584{
1585 find interpretation(problem,interpretation);
1586 // The two endpoint of the link have to exist
1587 find mayExist(problem, interpretation, source);
1588 find mayExist(problem, interpretation, target);
1589 // Type consistency
1590 find mayInstanceOfEClass_class(problem,interpretation,source);
1591 find mayInstanceOfEReference_class(problem,interpretation,target);
1592} or {
1593 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
1594}
1595/**
1596 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
1597 */
1598private pattern mustInRelationeAllOperations_reference_EClass(
1599 problem:LogicProblem, interpretation:PartialInterpretation,
1600 source: DefinedElement, target:DefinedElement)
1601{
1602 find interpretation(problem,interpretation);
1603 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1604 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
1605 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1606 BinaryElementRelationLink.param1(link,source);
1607 BinaryElementRelationLink.param2(link,target);
1608}
1609/**
1610 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
1611 */
1612private pattern mayInRelationeAllOperations_reference_EClass(
1613 problem:LogicProblem, interpretation:PartialInterpretation,
1614 source: DefinedElement, target:DefinedElement)
1615{
1616 find interpretation(problem,interpretation);
1617 // The two endpoint of the link have to exist
1618 find mayExist(problem, interpretation, source);
1619 find mayExist(problem, interpretation, target);
1620 // Type consistency
1621 find mayInstanceOfEClass_class(problem,interpretation,source);
1622 find mayInstanceOfEOperation_class(problem,interpretation,target);
1623} or {
1624 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
1625}
1626/**
1627 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
1628 */
1629private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
1630 problem:LogicProblem, interpretation:PartialInterpretation,
1631 source: DefinedElement, target:DefinedElement)
1632{
1633 find interpretation(problem,interpretation);
1634 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1635 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
1636 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1637 BinaryElementRelationLink.param1(link,source);
1638 BinaryElementRelationLink.param2(link,target);
1639}
1640/**
1641 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
1642 */
1643private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
1644 problem:LogicProblem, interpretation:PartialInterpretation,
1645 source: DefinedElement, target:DefinedElement)
1646{
1647 find interpretation(problem,interpretation);
1648 // The two endpoint of the link have to exist
1649 find mayExist(problem, interpretation, source);
1650 find mayExist(problem, interpretation, target);
1651 // Type consistency
1652 find mayInstanceOfEClass_class(problem,interpretation,source);
1653 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
1654} or {
1655 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
1656}
1657/**
1658 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
1659 */
1660private pattern mustInRelationeAllSuperTypes_reference_EClass(
1661 problem:LogicProblem, interpretation:PartialInterpretation,
1662 source: DefinedElement, target:DefinedElement)
1663{
1664 find interpretation(problem,interpretation);
1665 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1666 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
1667 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1668 BinaryElementRelationLink.param1(link,source);
1669 BinaryElementRelationLink.param2(link,target);
1670}
1671/**
1672 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
1673 */
1674private pattern mayInRelationeAllSuperTypes_reference_EClass(
1675 problem:LogicProblem, interpretation:PartialInterpretation,
1676 source: DefinedElement, target:DefinedElement)
1677{
1678 find interpretation(problem,interpretation);
1679 // The two endpoint of the link have to exist
1680 find mayExist(problem, interpretation, source);
1681 find mayExist(problem, interpretation, target);
1682 // Type consistency
1683 find mayInstanceOfEClass_class(problem,interpretation,source);
1684 find mayInstanceOfEClass_class(problem,interpretation,target);
1685} or {
1686 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
1687}
1688/**
1689 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
1690 */
1691private pattern mustInRelationeIDAttribute_reference_EClass(
1692 problem:LogicProblem, interpretation:PartialInterpretation,
1693 source: DefinedElement, target:DefinedElement)
1694{
1695 find interpretation(problem,interpretation);
1696 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1697 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
1698 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1699 BinaryElementRelationLink.param1(link,source);
1700 BinaryElementRelationLink.param2(link,target);
1701}
1702/**
1703 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
1704 */
1705private pattern mayInRelationeIDAttribute_reference_EClass(
1706 problem:LogicProblem, interpretation:PartialInterpretation,
1707 source: DefinedElement, target:DefinedElement)
1708{
1709 find interpretation(problem,interpretation);
1710 // The two endpoint of the link have to exist
1711 find mayExist(problem, interpretation, source);
1712 find mayExist(problem, interpretation, target);
1713 // Type consistency
1714 find mayInstanceOfEClass_class(problem,interpretation,source);
1715 find mayInstanceOfEAttribute_class(problem,interpretation,target);
1716 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1717 // the upper bound of the multiplicity should be considered.
1718 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
1719 check(numberOfExistingReferences < 1);
1720} or {
1721 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
1722}
1723/**
1724 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
1725 */
1726private pattern mustInRelationeStructuralFeatures_reference_EClass(
1727 problem:LogicProblem, interpretation:PartialInterpretation,
1728 source: DefinedElement, target:DefinedElement)
1729{
1730 find interpretation(problem,interpretation);
1731 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1732 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
1733 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1734 BinaryElementRelationLink.param1(link,source);
1735 BinaryElementRelationLink.param2(link,target);
1736}
1737/**
1738 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
1739 */
1740private pattern mayInRelationeStructuralFeatures_reference_EClass(
1741 problem:LogicProblem, interpretation:PartialInterpretation,
1742 source: DefinedElement, target:DefinedElement)
1743{
1744 find interpretation(problem,interpretation);
1745 // The two endpoint of the link have to exist
1746 find mayExist(problem, interpretation, source);
1747 find mayExist(problem, interpretation, target);
1748 // Type consistency
1749 find mayInstanceOfEClass_class(problem,interpretation,source);
1750 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
1751 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
1752 // the upper bound of the opposite reference multiplicity should be considered.
1753 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
1754 check(numberOfExistingOppositeReferences < 1);
1755 // The reference is containment, then a new reference cannot be create if:
1756 // 1. Multiple parents
1757 neg find mustContains4(problem,interpretation,_,target);
1758 // 2. Circle in the containment hierarchy
1759 neg find mustTransitiveContains(source,target);
1760} or {
1761 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
1762}
1763/**
1764 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
1765 */
1766private pattern mustInRelationeGenericSuperTypes_reference_EClass(
1767 problem:LogicProblem, interpretation:PartialInterpretation,
1768 source: DefinedElement, target:DefinedElement)
1769{
1770 find interpretation(problem,interpretation);
1771 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1772 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
1773 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1774 BinaryElementRelationLink.param1(link,source);
1775 BinaryElementRelationLink.param2(link,target);
1776}
1777/**
1778 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
1779 */
1780private pattern mayInRelationeGenericSuperTypes_reference_EClass(
1781 problem:LogicProblem, interpretation:PartialInterpretation,
1782 source: DefinedElement, target:DefinedElement)
1783{
1784 find interpretation(problem,interpretation);
1785 // The two endpoint of the link have to exist
1786 find mayExist(problem, interpretation, source);
1787 find mayExist(problem, interpretation, target);
1788 // Type consistency
1789 find mayInstanceOfEClass_class(problem,interpretation,source);
1790 find mayInstanceOfEGenericType_class(problem,interpretation,target);
1791 // The reference is containment, then a new reference cannot be create if:
1792 // 1. Multiple parents
1793 neg find mustContains4(problem,interpretation,_,target);
1794 // 2. Circle in the containment hierarchy
1795 neg find mustTransitiveContains(source,target);
1796} or {
1797 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
1798}
1799/**
1800 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
1801 */
1802private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
1803 problem:LogicProblem, interpretation:PartialInterpretation,
1804 source: DefinedElement, target:DefinedElement)
1805{
1806 find interpretation(problem,interpretation);
1807 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1808 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
1809 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1810 BinaryElementRelationLink.param1(link,source);
1811 BinaryElementRelationLink.param2(link,target);
1812}
1813/**
1814 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
1815 */
1816private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
1817 problem:LogicProblem, interpretation:PartialInterpretation,
1818 source: DefinedElement, target:DefinedElement)
1819{
1820 find interpretation(problem,interpretation);
1821 // The two endpoint of the link have to exist
1822 find mayExist(problem, interpretation, source);
1823 find mayExist(problem, interpretation, target);
1824 // Type consistency
1825 find mayInstanceOfEClass_class(problem,interpretation,source);
1826 find mayInstanceOfEGenericType_class(problem,interpretation,target);
1827} or {
1828 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
1829}
1830/**
1831 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
1832 */
1833private pattern mustInRelationePackage_reference_EClassifier(
1834 problem:LogicProblem, interpretation:PartialInterpretation,
1835 source: DefinedElement, target:DefinedElement)
1836{
1837 find interpretation(problem,interpretation);
1838 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1839 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
1840 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1841 BinaryElementRelationLink.param1(link,source);
1842 BinaryElementRelationLink.param2(link,target);
1843}
1844/**
1845 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
1846 */
1847private pattern mayInRelationePackage_reference_EClassifier(
1848 problem:LogicProblem, interpretation:PartialInterpretation,
1849 source: DefinedElement, target:DefinedElement)
1850{
1851 find interpretation(problem,interpretation);
1852 // The two endpoint of the link have to exist
1853 find mayExist(problem, interpretation, source);
1854 find mayExist(problem, interpretation, target);
1855 // Type consistency
1856 find mayInstanceOfEClassifier_class(problem,interpretation,source);
1857 find mayInstanceOfEPackage_class(problem,interpretation,target);
1858 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1859 // the upper bound of the multiplicity should be considered.
1860 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
1861 check(numberOfExistingReferences < 1);
1862 // The eOpposite of the reference is containment, then a referene cannot be created if
1863 // 1. Multiple parents
1864 neg find mustContains4(problem,interpretation,source,_);
1865 // 2. Circle in the containment hierarchy
1866 neg find mustTransitiveContains(source,target);
1867} or {
1868 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
1869}
1870/**
1871 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
1872 */
1873private pattern mustInRelationeTypeParameters_reference_EClassifier(
1874 problem:LogicProblem, interpretation:PartialInterpretation,
1875 source: DefinedElement, target:DefinedElement)
1876{
1877 find interpretation(problem,interpretation);
1878 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1879 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
1880 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1881 BinaryElementRelationLink.param1(link,source);
1882 BinaryElementRelationLink.param2(link,target);
1883}
1884/**
1885 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
1886 */
1887private pattern mayInRelationeTypeParameters_reference_EClassifier(
1888 problem:LogicProblem, interpretation:PartialInterpretation,
1889 source: DefinedElement, target:DefinedElement)
1890{
1891 find interpretation(problem,interpretation);
1892 // The two endpoint of the link have to exist
1893 find mayExist(problem, interpretation, source);
1894 find mayExist(problem, interpretation, target);
1895 // Type consistency
1896 find mayInstanceOfEClassifier_class(problem,interpretation,source);
1897 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
1898 // The reference is containment, then a new reference cannot be create if:
1899 // 1. Multiple parents
1900 neg find mustContains4(problem,interpretation,_,target);
1901 // 2. Circle in the containment hierarchy
1902 neg find mustTransitiveContains(source,target);
1903} or {
1904 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
1905}
1906/**
1907 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
1908 */
1909private pattern mustInRelationeLiterals_reference_EEnum(
1910 problem:LogicProblem, interpretation:PartialInterpretation,
1911 source: DefinedElement, target:DefinedElement)
1912{
1913 find interpretation(problem,interpretation);
1914 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1915 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
1916 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1917 BinaryElementRelationLink.param1(link,source);
1918 BinaryElementRelationLink.param2(link,target);
1919}
1920/**
1921 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
1922 */
1923private pattern mayInRelationeLiterals_reference_EEnum(
1924 problem:LogicProblem, interpretation:PartialInterpretation,
1925 source: DefinedElement, target:DefinedElement)
1926{
1927 find interpretation(problem,interpretation);
1928 // The two endpoint of the link have to exist
1929 find mayExist(problem, interpretation, source);
1930 find mayExist(problem, interpretation, target);
1931 // Type consistency
1932 find mayInstanceOfEEnum_class(problem,interpretation,source);
1933 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
1934 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
1935 // the upper bound of the opposite reference multiplicity should be considered.
1936 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
1937 check(numberOfExistingOppositeReferences < 1);
1938 // The reference is containment, then a new reference cannot be create if:
1939 // 1. Multiple parents
1940 neg find mustContains4(problem,interpretation,_,target);
1941 // 2. Circle in the containment hierarchy
1942 neg find mustTransitiveContains(source,target);
1943} or {
1944 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
1945}
1946/**
1947 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
1948 */
1949private pattern mustInRelationeEnum_reference_EEnumLiteral(
1950 problem:LogicProblem, interpretation:PartialInterpretation,
1951 source: DefinedElement, target:DefinedElement)
1952{
1953 find interpretation(problem,interpretation);
1954 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1955 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
1956 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1957 BinaryElementRelationLink.param1(link,source);
1958 BinaryElementRelationLink.param2(link,target);
1959}
1960/**
1961 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
1962 */
1963private pattern mayInRelationeEnum_reference_EEnumLiteral(
1964 problem:LogicProblem, interpretation:PartialInterpretation,
1965 source: DefinedElement, target:DefinedElement)
1966{
1967 find interpretation(problem,interpretation);
1968 // The two endpoint of the link have to exist
1969 find mayExist(problem, interpretation, source);
1970 find mayExist(problem, interpretation, target);
1971 // Type consistency
1972 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
1973 find mayInstanceOfEEnum_class(problem,interpretation,target);
1974 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1975 // the upper bound of the multiplicity should be considered.
1976 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
1977 check(numberOfExistingReferences < 1);
1978 // The eOpposite of the reference is containment, then a referene cannot be created if
1979 // 1. Multiple parents
1980 neg find mustContains4(problem,interpretation,source,_);
1981 // 2. Circle in the containment hierarchy
1982 neg find mustTransitiveContains(source,target);
1983} or {
1984 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
1985}
1986/**
1987 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
1988 */
1989private pattern mustInRelationeAnnotations_reference_EModelElement(
1990 problem:LogicProblem, interpretation:PartialInterpretation,
1991 source: DefinedElement, target:DefinedElement)
1992{
1993 find interpretation(problem,interpretation);
1994 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1995 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
1996 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1997 BinaryElementRelationLink.param1(link,source);
1998 BinaryElementRelationLink.param2(link,target);
1999}
2000/**
2001 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
2002 */
2003private pattern mayInRelationeAnnotations_reference_EModelElement(
2004 problem:LogicProblem, interpretation:PartialInterpretation,
2005 source: DefinedElement, target:DefinedElement)
2006{
2007 find interpretation(problem,interpretation);
2008 // The two endpoint of the link have to exist
2009 find mayExist(problem, interpretation, source);
2010 find mayExist(problem, interpretation, target);
2011 // Type consistency
2012 find mayInstanceOfEModelElement_class(problem,interpretation,source);
2013 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
2014 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2015 // the upper bound of the opposite reference multiplicity should be considered.
2016 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
2017 check(numberOfExistingOppositeReferences < 1);
2018 // The reference is containment, then a new reference cannot be create if:
2019 // 1. Multiple parents
2020 neg find mustContains4(problem,interpretation,_,target);
2021 // 2. Circle in the containment hierarchy
2022 neg find mustTransitiveContains(source,target);
2023} or {
2024 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
2025}
2026/**
2027 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
2028 */
2029private pattern mustInRelationeContainingClass_reference_EOperation(
2030 problem:LogicProblem, interpretation:PartialInterpretation,
2031 source: DefinedElement, target:DefinedElement)
2032{
2033 find interpretation(problem,interpretation);
2034 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2035 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
2036 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2037 BinaryElementRelationLink.param1(link,source);
2038 BinaryElementRelationLink.param2(link,target);
2039}
2040/**
2041 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
2042 */
2043private pattern mayInRelationeContainingClass_reference_EOperation(
2044 problem:LogicProblem, interpretation:PartialInterpretation,
2045 source: DefinedElement, target:DefinedElement)
2046{
2047 find interpretation(problem,interpretation);
2048 // The two endpoint of the link have to exist
2049 find mayExist(problem, interpretation, source);
2050 find mayExist(problem, interpretation, target);
2051 // Type consistency
2052 find mayInstanceOfEOperation_class(problem,interpretation,source);
2053 find mayInstanceOfEClass_class(problem,interpretation,target);
2054 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2055 // the upper bound of the multiplicity should be considered.
2056 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
2057 check(numberOfExistingReferences < 1);
2058 // The eOpposite of the reference is containment, then a referene cannot be created if
2059 // 1. Multiple parents
2060 neg find mustContains4(problem,interpretation,source,_);
2061 // 2. Circle in the containment hierarchy
2062 neg find mustTransitiveContains(source,target);
2063} or {
2064 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
2065}
2066/**
2067 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
2068 */
2069private pattern mustInRelationeTypeParameters_reference_EOperation(
2070 problem:LogicProblem, interpretation:PartialInterpretation,
2071 source: DefinedElement, target:DefinedElement)
2072{
2073 find interpretation(problem,interpretation);
2074 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2075 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
2076 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2077 BinaryElementRelationLink.param1(link,source);
2078 BinaryElementRelationLink.param2(link,target);
2079}
2080/**
2081 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
2082 */
2083private pattern mayInRelationeTypeParameters_reference_EOperation(
2084 problem:LogicProblem, interpretation:PartialInterpretation,
2085 source: DefinedElement, target:DefinedElement)
2086{
2087 find interpretation(problem,interpretation);
2088 // The two endpoint of the link have to exist
2089 find mayExist(problem, interpretation, source);
2090 find mayExist(problem, interpretation, target);
2091 // Type consistency
2092 find mayInstanceOfEOperation_class(problem,interpretation,source);
2093 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
2094 // The reference is containment, then a new reference cannot be create if:
2095 // 1. Multiple parents
2096 neg find mustContains4(problem,interpretation,_,target);
2097 // 2. Circle in the containment hierarchy
2098 neg find mustTransitiveContains(source,target);
2099} or {
2100 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
2101}
2102/**
2103 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
2104 */
2105private pattern mustInRelationeParameters_reference_EOperation(
2106 problem:LogicProblem, interpretation:PartialInterpretation,
2107 source: DefinedElement, target:DefinedElement)
2108{
2109 find interpretation(problem,interpretation);
2110 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2111 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
2112 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2113 BinaryElementRelationLink.param1(link,source);
2114 BinaryElementRelationLink.param2(link,target);
2115}
2116/**
2117 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
2118 */
2119private pattern mayInRelationeParameters_reference_EOperation(
2120 problem:LogicProblem, interpretation:PartialInterpretation,
2121 source: DefinedElement, target:DefinedElement)
2122{
2123 find interpretation(problem,interpretation);
2124 // The two endpoint of the link have to exist
2125 find mayExist(problem, interpretation, source);
2126 find mayExist(problem, interpretation, target);
2127 // Type consistency
2128 find mayInstanceOfEOperation_class(problem,interpretation,source);
2129 find mayInstanceOfEParameter_class(problem,interpretation,target);
2130 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2131 // the upper bound of the opposite reference multiplicity should be considered.
2132 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
2133 check(numberOfExistingOppositeReferences < 1);
2134 // The reference is containment, then a new reference cannot be create if:
2135 // 1. Multiple parents
2136 neg find mustContains4(problem,interpretation,_,target);
2137 // 2. Circle in the containment hierarchy
2138 neg find mustTransitiveContains(source,target);
2139} or {
2140 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
2141}
2142/**
2143 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
2144 */
2145private pattern mustInRelationeExceptions_reference_EOperation(
2146 problem:LogicProblem, interpretation:PartialInterpretation,
2147 source: DefinedElement, target:DefinedElement)
2148{
2149 find interpretation(problem,interpretation);
2150 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2151 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
2152 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2153 BinaryElementRelationLink.param1(link,source);
2154 BinaryElementRelationLink.param2(link,target);
2155}
2156/**
2157 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
2158 */
2159private pattern mayInRelationeExceptions_reference_EOperation(
2160 problem:LogicProblem, interpretation:PartialInterpretation,
2161 source: DefinedElement, target:DefinedElement)
2162{
2163 find interpretation(problem,interpretation);
2164 // The two endpoint of the link have to exist
2165 find mayExist(problem, interpretation, source);
2166 find mayExist(problem, interpretation, target);
2167 // Type consistency
2168 find mayInstanceOfEOperation_class(problem,interpretation,source);
2169 find mayInstanceOfEClassifier_class(problem,interpretation,target);
2170} or {
2171 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
2172}
2173/**
2174 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
2175 */
2176private pattern mustInRelationeGenericExceptions_reference_EOperation(
2177 problem:LogicProblem, interpretation:PartialInterpretation,
2178 source: DefinedElement, target:DefinedElement)
2179{
2180 find interpretation(problem,interpretation);
2181 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2182 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
2183 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2184 BinaryElementRelationLink.param1(link,source);
2185 BinaryElementRelationLink.param2(link,target);
2186}
2187/**
2188 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
2189 */
2190private pattern mayInRelationeGenericExceptions_reference_EOperation(
2191 problem:LogicProblem, interpretation:PartialInterpretation,
2192 source: DefinedElement, target:DefinedElement)
2193{
2194 find interpretation(problem,interpretation);
2195 // The two endpoint of the link have to exist
2196 find mayExist(problem, interpretation, source);
2197 find mayExist(problem, interpretation, target);
2198 // Type consistency
2199 find mayInstanceOfEOperation_class(problem,interpretation,source);
2200 find mayInstanceOfEGenericType_class(problem,interpretation,target);
2201 // The reference is containment, then a new reference cannot be create if:
2202 // 1. Multiple parents
2203 neg find mustContains4(problem,interpretation,_,target);
2204 // 2. Circle in the containment hierarchy
2205 neg find mustTransitiveContains(source,target);
2206} or {
2207 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
2208}
2209/**
2210 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
2211 */
2212private pattern mustInRelationeClassifiers_reference_EPackage(
2213 problem:LogicProblem, interpretation:PartialInterpretation,
2214 source: DefinedElement, target:DefinedElement)
2215{
2216 find interpretation(problem,interpretation);
2217 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2218 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
2219 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2220 BinaryElementRelationLink.param1(link,source);
2221 BinaryElementRelationLink.param2(link,target);
2222}
2223/**
2224 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
2225 */
2226private pattern mayInRelationeClassifiers_reference_EPackage(
2227 problem:LogicProblem, interpretation:PartialInterpretation,
2228 source: DefinedElement, target:DefinedElement)
2229{
2230 find interpretation(problem,interpretation);
2231 // The two endpoint of the link have to exist
2232 find mayExist(problem, interpretation, source);
2233 find mayExist(problem, interpretation, target);
2234 // Type consistency
2235 find mayInstanceOfEPackage_class(problem,interpretation,source);
2236 find mayInstanceOfEClassifier_class(problem,interpretation,target);
2237 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2238 // the upper bound of the opposite reference multiplicity should be considered.
2239 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
2240 check(numberOfExistingOppositeReferences < 1);
2241 // The reference is containment, then a new reference cannot be create if:
2242 // 1. Multiple parents
2243 neg find mustContains4(problem,interpretation,_,target);
2244 // 2. Circle in the containment hierarchy
2245 neg find mustTransitiveContains(source,target);
2246} or {
2247 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
2248}
2249/**
2250 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
2251 */
2252private pattern mustInRelationeSubpackages_reference_EPackage(
2253 problem:LogicProblem, interpretation:PartialInterpretation,
2254 source: DefinedElement, target:DefinedElement)
2255{
2256 find interpretation(problem,interpretation);
2257 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2258 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
2259 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2260 BinaryElementRelationLink.param1(link,source);
2261 BinaryElementRelationLink.param2(link,target);
2262}
2263/**
2264 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
2265 */
2266private pattern mayInRelationeSubpackages_reference_EPackage(
2267 problem:LogicProblem, interpretation:PartialInterpretation,
2268 source: DefinedElement, target:DefinedElement)
2269{
2270 find interpretation(problem,interpretation);
2271 // The two endpoint of the link have to exist
2272 find mayExist(problem, interpretation, source);
2273 find mayExist(problem, interpretation, target);
2274 // Type consistency
2275 find mayInstanceOfEPackage_class(problem,interpretation,source);
2276 find mayInstanceOfEPackage_class(problem,interpretation,target);
2277 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2278 // the upper bound of the opposite reference multiplicity should be considered.
2279 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
2280 check(numberOfExistingOppositeReferences < 1);
2281 // The reference is containment, then a new reference cannot be create if:
2282 // 1. Multiple parents
2283 neg find mustContains4(problem,interpretation,_,target);
2284 // 2. Circle in the containment hierarchy
2285 neg find mustTransitiveContains(source,target);
2286} or {
2287 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
2288}
2289/**
2290 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
2291 */
2292private pattern mustInRelationeSuperPackage_reference_EPackage(
2293 problem:LogicProblem, interpretation:PartialInterpretation,
2294 source: DefinedElement, target:DefinedElement)
2295{
2296 find interpretation(problem,interpretation);
2297 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2298 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
2299 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2300 BinaryElementRelationLink.param1(link,source);
2301 BinaryElementRelationLink.param2(link,target);
2302}
2303/**
2304 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
2305 */
2306private pattern mayInRelationeSuperPackage_reference_EPackage(
2307 problem:LogicProblem, interpretation:PartialInterpretation,
2308 source: DefinedElement, target:DefinedElement)
2309{
2310 find interpretation(problem,interpretation);
2311 // The two endpoint of the link have to exist
2312 find mayExist(problem, interpretation, source);
2313 find mayExist(problem, interpretation, target);
2314 // Type consistency
2315 find mayInstanceOfEPackage_class(problem,interpretation,source);
2316 find mayInstanceOfEPackage_class(problem,interpretation,target);
2317 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2318 // the upper bound of the multiplicity should be considered.
2319 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
2320 check(numberOfExistingReferences < 1);
2321 // The eOpposite of the reference is containment, then a referene cannot be created if
2322 // 1. Multiple parents
2323 neg find mustContains4(problem,interpretation,source,_);
2324 // 2. Circle in the containment hierarchy
2325 neg find mustTransitiveContains(source,target);
2326} or {
2327 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
2328}
2329/**
2330 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
2331 */
2332private pattern mustInRelationeOperation_reference_EParameter(
2333 problem:LogicProblem, interpretation:PartialInterpretation,
2334 source: DefinedElement, target:DefinedElement)
2335{
2336 find interpretation(problem,interpretation);
2337 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2338 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
2339 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2340 BinaryElementRelationLink.param1(link,source);
2341 BinaryElementRelationLink.param2(link,target);
2342}
2343/**
2344 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
2345 */
2346private pattern mayInRelationeOperation_reference_EParameter(
2347 problem:LogicProblem, interpretation:PartialInterpretation,
2348 source: DefinedElement, target:DefinedElement)
2349{
2350 find interpretation(problem,interpretation);
2351 // The two endpoint of the link have to exist
2352 find mayExist(problem, interpretation, source);
2353 find mayExist(problem, interpretation, target);
2354 // Type consistency
2355 find mayInstanceOfEParameter_class(problem,interpretation,source);
2356 find mayInstanceOfEOperation_class(problem,interpretation,target);
2357 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2358 // the upper bound of the multiplicity should be considered.
2359 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
2360 check(numberOfExistingReferences < 1);
2361 // The eOpposite of the reference is containment, then a referene cannot be created if
2362 // 1. Multiple parents
2363 neg find mustContains4(problem,interpretation,source,_);
2364 // 2. Circle in the containment hierarchy
2365 neg find mustTransitiveContains(source,target);
2366} or {
2367 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
2368}
2369/**
2370 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
2371 */
2372private pattern mustInRelationeOpposite_reference_EReference(
2373 problem:LogicProblem, interpretation:PartialInterpretation,
2374 source: DefinedElement, target:DefinedElement)
2375{
2376 find interpretation(problem,interpretation);
2377 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2378 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
2379 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2380 BinaryElementRelationLink.param1(link,source);
2381 BinaryElementRelationLink.param2(link,target);
2382}
2383/**
2384 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
2385 */
2386private pattern mayInRelationeOpposite_reference_EReference(
2387 problem:LogicProblem, interpretation:PartialInterpretation,
2388 source: DefinedElement, target:DefinedElement)
2389{
2390 find interpretation(problem,interpretation);
2391 // The two endpoint of the link have to exist
2392 find mayExist(problem, interpretation, source);
2393 find mayExist(problem, interpretation, target);
2394 // Type consistency
2395 find mayInstanceOfEReference_class(problem,interpretation,source);
2396 find mayInstanceOfEReference_class(problem,interpretation,target);
2397 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2398 // the upper bound of the multiplicity should be considered.
2399 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
2400 check(numberOfExistingReferences < 1);
2401} or {
2402 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
2403}
2404/**
2405 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
2406 */
2407private pattern mustInRelationeReferenceType_reference_EReference(
2408 problem:LogicProblem, interpretation:PartialInterpretation,
2409 source: DefinedElement, target:DefinedElement)
2410{
2411 find interpretation(problem,interpretation);
2412 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2413 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
2414 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2415 BinaryElementRelationLink.param1(link,source);
2416 BinaryElementRelationLink.param2(link,target);
2417}
2418/**
2419 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
2420 */
2421private pattern mayInRelationeReferenceType_reference_EReference(
2422 problem:LogicProblem, interpretation:PartialInterpretation,
2423 source: DefinedElement, target:DefinedElement)
2424{
2425 find interpretation(problem,interpretation);
2426 // The two endpoint of the link have to exist
2427 find mayExist(problem, interpretation, source);
2428 find mayExist(problem, interpretation, target);
2429 // Type consistency
2430 find mayInstanceOfEReference_class(problem,interpretation,source);
2431 find mayInstanceOfEClass_class(problem,interpretation,target);
2432 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2433 // the upper bound of the multiplicity should be considered.
2434 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
2435 check(numberOfExistingReferences < 1);
2436} or {
2437 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
2438}
2439/**
2440 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
2441 */
2442private pattern mustInRelationeKeys_reference_EReference(
2443 problem:LogicProblem, interpretation:PartialInterpretation,
2444 source: DefinedElement, target:DefinedElement)
2445{
2446 find interpretation(problem,interpretation);
2447 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2448 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
2449 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2450 BinaryElementRelationLink.param1(link,source);
2451 BinaryElementRelationLink.param2(link,target);
2452}
2453/**
2454 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
2455 */
2456private pattern mayInRelationeKeys_reference_EReference(
2457 problem:LogicProblem, interpretation:PartialInterpretation,
2458 source: DefinedElement, target:DefinedElement)
2459{
2460 find interpretation(problem,interpretation);
2461 // The two endpoint of the link have to exist
2462 find mayExist(problem, interpretation, source);
2463 find mayExist(problem, interpretation, target);
2464 // Type consistency
2465 find mayInstanceOfEReference_class(problem,interpretation,source);
2466 find mayInstanceOfEAttribute_class(problem,interpretation,target);
2467} or {
2468 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
2469}
2470/**
2471 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
2472 */
2473private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
2474 problem:LogicProblem, interpretation:PartialInterpretation,
2475 source: DefinedElement, target:DefinedElement)
2476{
2477 find interpretation(problem,interpretation);
2478 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2479 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
2480 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2481 BinaryElementRelationLink.param1(link,source);
2482 BinaryElementRelationLink.param2(link,target);
2483}
2484/**
2485 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
2486 */
2487private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
2488 problem:LogicProblem, interpretation:PartialInterpretation,
2489 source: DefinedElement, target:DefinedElement)
2490{
2491 find interpretation(problem,interpretation);
2492 // The two endpoint of the link have to exist
2493 find mayExist(problem, interpretation, source);
2494 find mayExist(problem, interpretation, target);
2495 // Type consistency
2496 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
2497 find mayInstanceOfEClass_class(problem,interpretation,target);
2498 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2499 // the upper bound of the multiplicity should be considered.
2500 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
2501 check(numberOfExistingReferences < 1);
2502 // The eOpposite of the reference is containment, then a referene cannot be created if
2503 // 1. Multiple parents
2504 neg find mustContains4(problem,interpretation,source,_);
2505 // 2. Circle in the containment hierarchy
2506 neg find mustTransitiveContains(source,target);
2507} or {
2508 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
2509}
2510/**
2511 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
2512 */
2513private pattern mustInRelationeType_reference_ETypedElement(
2514 problem:LogicProblem, interpretation:PartialInterpretation,
2515 source: DefinedElement, target:DefinedElement)
2516{
2517 find interpretation(problem,interpretation);
2518 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2519 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
2520 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2521 BinaryElementRelationLink.param1(link,source);
2522 BinaryElementRelationLink.param2(link,target);
2523}
2524/**
2525 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
2526 */
2527private pattern mayInRelationeType_reference_ETypedElement(
2528 problem:LogicProblem, interpretation:PartialInterpretation,
2529 source: DefinedElement, target:DefinedElement)
2530{
2531 find interpretation(problem,interpretation);
2532 // The two endpoint of the link have to exist
2533 find mayExist(problem, interpretation, source);
2534 find mayExist(problem, interpretation, target);
2535 // Type consistency
2536 find mayInstanceOfETypedElement_class(problem,interpretation,source);
2537 find mayInstanceOfEClassifier_class(problem,interpretation,target);
2538 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2539 // the upper bound of the multiplicity should be considered.
2540 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
2541 check(numberOfExistingReferences < 1);
2542} or {
2543 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
2544}
2545/**
2546 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
2547 */
2548private pattern mustInRelationeGenericType_reference_ETypedElement(
2549 problem:LogicProblem, interpretation:PartialInterpretation,
2550 source: DefinedElement, target:DefinedElement)
2551{
2552 find interpretation(problem,interpretation);
2553 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2554 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
2555 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2556 BinaryElementRelationLink.param1(link,source);
2557 BinaryElementRelationLink.param2(link,target);
2558}
2559/**
2560 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
2561 */
2562private pattern mayInRelationeGenericType_reference_ETypedElement(
2563 problem:LogicProblem, interpretation:PartialInterpretation,
2564 source: DefinedElement, target:DefinedElement)
2565{
2566 find interpretation(problem,interpretation);
2567 // The two endpoint of the link have to exist
2568 find mayExist(problem, interpretation, source);
2569 find mayExist(problem, interpretation, target);
2570 // Type consistency
2571 find mayInstanceOfETypedElement_class(problem,interpretation,source);
2572 find mayInstanceOfEGenericType_class(problem,interpretation,target);
2573 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2574 // the upper bound of the multiplicity should be considered.
2575 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
2576 check(numberOfExistingReferences < 1);
2577 // The reference is containment, then a new reference cannot be create if:
2578 // 1. Multiple parents
2579 neg find mustContains4(problem,interpretation,_,target);
2580 // 2. Circle in the containment hierarchy
2581 neg find mustTransitiveContains(source,target);
2582} or {
2583 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
2584}
2585/**
2586 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
2587 */
2588private pattern mustInRelationeUpperBound_reference_EGenericType(
2589 problem:LogicProblem, interpretation:PartialInterpretation,
2590 source: DefinedElement, target:DefinedElement)
2591{
2592 find interpretation(problem,interpretation);
2593 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2594 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
2595 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2596 BinaryElementRelationLink.param1(link,source);
2597 BinaryElementRelationLink.param2(link,target);
2598}
2599/**
2600 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
2601 */
2602private pattern mayInRelationeUpperBound_reference_EGenericType(
2603 problem:LogicProblem, interpretation:PartialInterpretation,
2604 source: DefinedElement, target:DefinedElement)
2605{
2606 find interpretation(problem,interpretation);
2607 // The two endpoint of the link have to exist
2608 find mayExist(problem, interpretation, source);
2609 find mayExist(problem, interpretation, target);
2610 // Type consistency
2611 find mayInstanceOfEGenericType_class(problem,interpretation,source);
2612 find mayInstanceOfEGenericType_class(problem,interpretation,target);
2613 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2614 // the upper bound of the multiplicity should be considered.
2615 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
2616 check(numberOfExistingReferences < 1);
2617 // The reference is containment, then a new reference cannot be create if:
2618 // 1. Multiple parents
2619 neg find mustContains4(problem,interpretation,_,target);
2620 // 2. Circle in the containment hierarchy
2621 neg find mustTransitiveContains(source,target);
2622} or {
2623 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
2624}
2625/**
2626 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
2627 */
2628private pattern mustInRelationeTypeArguments_reference_EGenericType(
2629 problem:LogicProblem, interpretation:PartialInterpretation,
2630 source: DefinedElement, target:DefinedElement)
2631{
2632 find interpretation(problem,interpretation);
2633 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2634 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
2635 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2636 BinaryElementRelationLink.param1(link,source);
2637 BinaryElementRelationLink.param2(link,target);
2638}
2639/**
2640 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
2641 */
2642private pattern mayInRelationeTypeArguments_reference_EGenericType(
2643 problem:LogicProblem, interpretation:PartialInterpretation,
2644 source: DefinedElement, target:DefinedElement)
2645{
2646 find interpretation(problem,interpretation);
2647 // The two endpoint of the link have to exist
2648 find mayExist(problem, interpretation, source);
2649 find mayExist(problem, interpretation, target);
2650 // Type consistency
2651 find mayInstanceOfEGenericType_class(problem,interpretation,source);
2652 find mayInstanceOfEGenericType_class(problem,interpretation,target);
2653 // The reference is containment, then a new reference cannot be create if:
2654 // 1. Multiple parents
2655 neg find mustContains4(problem,interpretation,_,target);
2656 // 2. Circle in the containment hierarchy
2657 neg find mustTransitiveContains(source,target);
2658} or {
2659 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
2660}
2661/**
2662 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
2663 */
2664private pattern mustInRelationeRawType_reference_EGenericType(
2665 problem:LogicProblem, interpretation:PartialInterpretation,
2666 source: DefinedElement, target:DefinedElement)
2667{
2668 find interpretation(problem,interpretation);
2669 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2670 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
2671 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2672 BinaryElementRelationLink.param1(link,source);
2673 BinaryElementRelationLink.param2(link,target);
2674}
2675/**
2676 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
2677 */
2678private pattern mayInRelationeRawType_reference_EGenericType(
2679 problem:LogicProblem, interpretation:PartialInterpretation,
2680 source: DefinedElement, target:DefinedElement)
2681{
2682 find interpretation(problem,interpretation);
2683 // The two endpoint of the link have to exist
2684 find mayExist(problem, interpretation, source);
2685 find mayExist(problem, interpretation, target);
2686 // Type consistency
2687 find mayInstanceOfEGenericType_class(problem,interpretation,source);
2688 find mayInstanceOfEClassifier_class(problem,interpretation,target);
2689 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2690 // the upper bound of the multiplicity should be considered.
2691 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
2692 check(numberOfExistingReferences < 1);
2693} or {
2694 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
2695}
2696/**
2697 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
2698 */
2699private pattern mustInRelationeLowerBound_reference_EGenericType(
2700 problem:LogicProblem, interpretation:PartialInterpretation,
2701 source: DefinedElement, target:DefinedElement)
2702{
2703 find interpretation(problem,interpretation);
2704 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2705 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
2706 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2707 BinaryElementRelationLink.param1(link,source);
2708 BinaryElementRelationLink.param2(link,target);
2709}
2710/**
2711 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
2712 */
2713private pattern mayInRelationeLowerBound_reference_EGenericType(
2714 problem:LogicProblem, interpretation:PartialInterpretation,
2715 source: DefinedElement, target:DefinedElement)
2716{
2717 find interpretation(problem,interpretation);
2718 // The two endpoint of the link have to exist
2719 find mayExist(problem, interpretation, source);
2720 find mayExist(problem, interpretation, target);
2721 // Type consistency
2722 find mayInstanceOfEGenericType_class(problem,interpretation,source);
2723 find mayInstanceOfEGenericType_class(problem,interpretation,target);
2724 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2725 // the upper bound of the multiplicity should be considered.
2726 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
2727 check(numberOfExistingReferences < 1);
2728 // The reference is containment, then a new reference cannot be create if:
2729 // 1. Multiple parents
2730 neg find mustContains4(problem,interpretation,_,target);
2731 // 2. Circle in the containment hierarchy
2732 neg find mustTransitiveContains(source,target);
2733} or {
2734 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
2735}
2736/**
2737 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
2738 */
2739private pattern mustInRelationeTypeParameter_reference_EGenericType(
2740 problem:LogicProblem, interpretation:PartialInterpretation,
2741 source: DefinedElement, target:DefinedElement)
2742{
2743 find interpretation(problem,interpretation);
2744 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2745 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
2746 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2747 BinaryElementRelationLink.param1(link,source);
2748 BinaryElementRelationLink.param2(link,target);
2749}
2750/**
2751 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
2752 */
2753private pattern mayInRelationeTypeParameter_reference_EGenericType(
2754 problem:LogicProblem, interpretation:PartialInterpretation,
2755 source: DefinedElement, target:DefinedElement)
2756{
2757 find interpretation(problem,interpretation);
2758 // The two endpoint of the link have to exist
2759 find mayExist(problem, interpretation, source);
2760 find mayExist(problem, interpretation, target);
2761 // Type consistency
2762 find mayInstanceOfEGenericType_class(problem,interpretation,source);
2763 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
2764 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2765 // the upper bound of the multiplicity should be considered.
2766 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
2767 check(numberOfExistingReferences < 1);
2768} or {
2769 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
2770}
2771/**
2772 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
2773 */
2774private pattern mustInRelationeClassifier_reference_EGenericType(
2775 problem:LogicProblem, interpretation:PartialInterpretation,
2776 source: DefinedElement, target:DefinedElement)
2777{
2778 find interpretation(problem,interpretation);
2779 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2780 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
2781 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2782 BinaryElementRelationLink.param1(link,source);
2783 BinaryElementRelationLink.param2(link,target);
2784}
2785/**
2786 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
2787 */
2788private pattern mayInRelationeClassifier_reference_EGenericType(
2789 problem:LogicProblem, interpretation:PartialInterpretation,
2790 source: DefinedElement, target:DefinedElement)
2791{
2792 find interpretation(problem,interpretation);
2793 // The two endpoint of the link have to exist
2794 find mayExist(problem, interpretation, source);
2795 find mayExist(problem, interpretation, target);
2796 // Type consistency
2797 find mayInstanceOfEGenericType_class(problem,interpretation,source);
2798 find mayInstanceOfEClassifier_class(problem,interpretation,target);
2799 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2800 // the upper bound of the multiplicity should be considered.
2801 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
2802 check(numberOfExistingReferences < 1);
2803} or {
2804 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
2805}
2806/**
2807 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
2808 */
2809private pattern mustInRelationeBounds_reference_ETypeParameter(
2810 problem:LogicProblem, interpretation:PartialInterpretation,
2811 source: DefinedElement, target:DefinedElement)
2812{
2813 find interpretation(problem,interpretation);
2814 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2815 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
2816 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2817 BinaryElementRelationLink.param1(link,source);
2818 BinaryElementRelationLink.param2(link,target);
2819}
2820/**
2821 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
2822 */
2823private pattern mayInRelationeBounds_reference_ETypeParameter(
2824 problem:LogicProblem, interpretation:PartialInterpretation,
2825 source: DefinedElement, target:DefinedElement)
2826{
2827 find interpretation(problem,interpretation);
2828 // The two endpoint of the link have to exist
2829 find mayExist(problem, interpretation, source);
2830 find mayExist(problem, interpretation, target);
2831 // Type consistency
2832 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
2833 find mayInstanceOfEGenericType_class(problem,interpretation,target);
2834 // The reference is containment, then a new reference cannot be create if:
2835 // 1. Multiple parents
2836 neg find mustContains4(problem,interpretation,_,target);
2837 // 2. Circle in the containment hierarchy
2838 neg find mustTransitiveContains(source,target);
2839} or {
2840 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
2841}
2842/**
2843 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
2844 */
2845private pattern mustInRelationiD_attribute_EAttribute(
2846 problem:LogicProblem, interpretation:PartialInterpretation,
2847 source: DefinedElement, target:DefinedElement)
2848{
2849 find interpretation(problem,interpretation);
2850 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2851 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
2852 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2853 BinaryElementRelationLink.param1(link,source);
2854 BinaryElementRelationLink.param2(link,target);
2855}
2856/**
2857 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
2858 */
2859private pattern mayInRelationiD_attribute_EAttribute(
2860 problem:LogicProblem, interpretation:PartialInterpretation,
2861 source: DefinedElement, target:DefinedElement)
2862{
2863 find interpretation(problem,interpretation);
2864 // The two endpoint of the link have to exist
2865 find mayExist(problem, interpretation, source);
2866 find mayExist(problem, interpretation, target);
2867 // Type consistency
2868 find mayInstanceOfEAttribute_class(problem,interpretation,source);
2869 BooleanElement(target);
2870 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2871 // the upper bound of the multiplicity should be considered.
2872 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
2873 check(numberOfExistingReferences < 1);
2874} or {
2875 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
2876}
2877/**
2878 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
2879 */
2880private pattern mustInRelationsource_attribute_EAnnotation(
2881 problem:LogicProblem, interpretation:PartialInterpretation,
2882 source: DefinedElement, target:DefinedElement)
2883{
2884 find interpretation(problem,interpretation);
2885 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2886 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
2887 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2888 BinaryElementRelationLink.param1(link,source);
2889 BinaryElementRelationLink.param2(link,target);
2890}
2891/**
2892 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
2893 */
2894private pattern mayInRelationsource_attribute_EAnnotation(
2895 problem:LogicProblem, interpretation:PartialInterpretation,
2896 source: DefinedElement, target:DefinedElement)
2897{
2898 find interpretation(problem,interpretation);
2899 // The two endpoint of the link have to exist
2900 find mayExist(problem, interpretation, source);
2901 find mayExist(problem, interpretation, target);
2902 // Type consistency
2903 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
2904 StringElement(target);
2905 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2906 // the upper bound of the multiplicity should be considered.
2907 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
2908 check(numberOfExistingReferences < 1);
2909} or {
2910 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
2911}
2912/**
2913 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
2914 */
2915private pattern mustInRelationabstract_attribute_EClass(
2916 problem:LogicProblem, interpretation:PartialInterpretation,
2917 source: DefinedElement, target:DefinedElement)
2918{
2919 find interpretation(problem,interpretation);
2920 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2921 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
2922 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2923 BinaryElementRelationLink.param1(link,source);
2924 BinaryElementRelationLink.param2(link,target);
2925}
2926/**
2927 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
2928 */
2929private pattern mayInRelationabstract_attribute_EClass(
2930 problem:LogicProblem, interpretation:PartialInterpretation,
2931 source: DefinedElement, target:DefinedElement)
2932{
2933 find interpretation(problem,interpretation);
2934 // The two endpoint of the link have to exist
2935 find mayExist(problem, interpretation, source);
2936 find mayExist(problem, interpretation, target);
2937 // Type consistency
2938 find mayInstanceOfEClass_class(problem,interpretation,source);
2939 BooleanElement(target);
2940 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2941 // the upper bound of the multiplicity should be considered.
2942 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
2943 check(numberOfExistingReferences < 1);
2944} or {
2945 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
2946}
2947/**
2948 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
2949 */
2950private pattern mustInRelationinterface_attribute_EClass(
2951 problem:LogicProblem, interpretation:PartialInterpretation,
2952 source: DefinedElement, target:DefinedElement)
2953{
2954 find interpretation(problem,interpretation);
2955 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2956 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
2957 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2958 BinaryElementRelationLink.param1(link,source);
2959 BinaryElementRelationLink.param2(link,target);
2960}
2961/**
2962 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
2963 */
2964private pattern mayInRelationinterface_attribute_EClass(
2965 problem:LogicProblem, interpretation:PartialInterpretation,
2966 source: DefinedElement, target:DefinedElement)
2967{
2968 find interpretation(problem,interpretation);
2969 // The two endpoint of the link have to exist
2970 find mayExist(problem, interpretation, source);
2971 find mayExist(problem, interpretation, target);
2972 // Type consistency
2973 find mayInstanceOfEClass_class(problem,interpretation,source);
2974 BooleanElement(target);
2975 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2976 // the upper bound of the multiplicity should be considered.
2977 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
2978 check(numberOfExistingReferences < 1);
2979} or {
2980 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
2981}
2982/**
2983 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
2984 */
2985private pattern mustInRelationinstanceClassName_attribute_EClassifier(
2986 problem:LogicProblem, interpretation:PartialInterpretation,
2987 source: DefinedElement, target:DefinedElement)
2988{
2989 find interpretation(problem,interpretation);
2990 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2991 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
2992 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2993 BinaryElementRelationLink.param1(link,source);
2994 BinaryElementRelationLink.param2(link,target);
2995}
2996/**
2997 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
2998 */
2999private pattern mayInRelationinstanceClassName_attribute_EClassifier(
3000 problem:LogicProblem, interpretation:PartialInterpretation,
3001 source: DefinedElement, target:DefinedElement)
3002{
3003 find interpretation(problem,interpretation);
3004 // The two endpoint of the link have to exist
3005 find mayExist(problem, interpretation, source);
3006 find mayExist(problem, interpretation, target);
3007 // Type consistency
3008 find mayInstanceOfEClassifier_class(problem,interpretation,source);
3009 StringElement(target);
3010 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3011 // the upper bound of the multiplicity should be considered.
3012 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
3013 check(numberOfExistingReferences < 1);
3014} or {
3015 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
3016}
3017/**
3018 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
3019 */
3020private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
3021 problem:LogicProblem, interpretation:PartialInterpretation,
3022 source: DefinedElement, target:DefinedElement)
3023{
3024 find interpretation(problem,interpretation);
3025 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3026 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
3027 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3028 BinaryElementRelationLink.param1(link,source);
3029 BinaryElementRelationLink.param2(link,target);
3030}
3031/**
3032 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
3033 */
3034private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
3035 problem:LogicProblem, interpretation:PartialInterpretation,
3036 source: DefinedElement, target:DefinedElement)
3037{
3038 find interpretation(problem,interpretation);
3039 // The two endpoint of the link have to exist
3040 find mayExist(problem, interpretation, source);
3041 find mayExist(problem, interpretation, target);
3042 // Type consistency
3043 find mayInstanceOfEClassifier_class(problem,interpretation,source);
3044 StringElement(target);
3045 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3046 // the upper bound of the multiplicity should be considered.
3047 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
3048 check(numberOfExistingReferences < 1);
3049} or {
3050 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
3051}
3052/**
3053 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
3054 */
3055private pattern mustInRelationserializable_attribute_EDataType(
3056 problem:LogicProblem, interpretation:PartialInterpretation,
3057 source: DefinedElement, target:DefinedElement)
3058{
3059 find interpretation(problem,interpretation);
3060 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3061 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
3062 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3063 BinaryElementRelationLink.param1(link,source);
3064 BinaryElementRelationLink.param2(link,target);
3065}
3066/**
3067 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
3068 */
3069private pattern mayInRelationserializable_attribute_EDataType(
3070 problem:LogicProblem, interpretation:PartialInterpretation,
3071 source: DefinedElement, target:DefinedElement)
3072{
3073 find interpretation(problem,interpretation);
3074 // The two endpoint of the link have to exist
3075 find mayExist(problem, interpretation, source);
3076 find mayExist(problem, interpretation, target);
3077 // Type consistency
3078 find mayInstanceOfEDataType_class(problem,interpretation,source);
3079 BooleanElement(target);
3080 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3081 // the upper bound of the multiplicity should be considered.
3082 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
3083 check(numberOfExistingReferences < 1);
3084} or {
3085 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
3086}
3087/**
3088 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
3089 */
3090private pattern mustInRelationvalue_attribute_EEnumLiteral(
3091 problem:LogicProblem, interpretation:PartialInterpretation,
3092 source: DefinedElement, target:DefinedElement)
3093{
3094 find interpretation(problem,interpretation);
3095 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3096 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
3097 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3098 BinaryElementRelationLink.param1(link,source);
3099 BinaryElementRelationLink.param2(link,target);
3100}
3101/**
3102 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
3103 */
3104private pattern mayInRelationvalue_attribute_EEnumLiteral(
3105 problem:LogicProblem, interpretation:PartialInterpretation,
3106 source: DefinedElement, target:DefinedElement)
3107{
3108 find interpretation(problem,interpretation);
3109 // The two endpoint of the link have to exist
3110 find mayExist(problem, interpretation, source);
3111 find mayExist(problem, interpretation, target);
3112 // Type consistency
3113 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
3114 IntegerElement(target);
3115 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3116 // the upper bound of the multiplicity should be considered.
3117 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
3118 check(numberOfExistingReferences < 1);
3119} or {
3120 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
3121}
3122/**
3123 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
3124 */
3125private pattern mustInRelationliteral_attribute_EEnumLiteral(
3126 problem:LogicProblem, interpretation:PartialInterpretation,
3127 source: DefinedElement, target:DefinedElement)
3128{
3129 find interpretation(problem,interpretation);
3130 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3131 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
3132 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3133 BinaryElementRelationLink.param1(link,source);
3134 BinaryElementRelationLink.param2(link,target);
3135}
3136/**
3137 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
3138 */
3139private pattern mayInRelationliteral_attribute_EEnumLiteral(
3140 problem:LogicProblem, interpretation:PartialInterpretation,
3141 source: DefinedElement, target:DefinedElement)
3142{
3143 find interpretation(problem,interpretation);
3144 // The two endpoint of the link have to exist
3145 find mayExist(problem, interpretation, source);
3146 find mayExist(problem, interpretation, target);
3147 // Type consistency
3148 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
3149 StringElement(target);
3150 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3151 // the upper bound of the multiplicity should be considered.
3152 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
3153 check(numberOfExistingReferences < 1);
3154} or {
3155 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
3156}
3157/**
3158 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
3159 */
3160private pattern mustInRelationname_attribute_ENamedElement(
3161 problem:LogicProblem, interpretation:PartialInterpretation,
3162 source: DefinedElement, target:DefinedElement)
3163{
3164 find interpretation(problem,interpretation);
3165 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3166 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
3167 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3168 BinaryElementRelationLink.param1(link,source);
3169 BinaryElementRelationLink.param2(link,target);
3170}
3171/**
3172 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
3173 */
3174private pattern mayInRelationname_attribute_ENamedElement(
3175 problem:LogicProblem, interpretation:PartialInterpretation,
3176 source: DefinedElement, target:DefinedElement)
3177{
3178 find interpretation(problem,interpretation);
3179 // The two endpoint of the link have to exist
3180 find mayExist(problem, interpretation, source);
3181 find mayExist(problem, interpretation, target);
3182 // Type consistency
3183 find mayInstanceOfENamedElement_class(problem,interpretation,source);
3184 StringElement(target);
3185 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3186 // the upper bound of the multiplicity should be considered.
3187 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
3188 check(numberOfExistingReferences < 1);
3189} or {
3190 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
3191}
3192/**
3193 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
3194 */
3195private pattern mustInRelationnsURI_attribute_EPackage(
3196 problem:LogicProblem, interpretation:PartialInterpretation,
3197 source: DefinedElement, target:DefinedElement)
3198{
3199 find interpretation(problem,interpretation);
3200 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3201 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
3202 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3203 BinaryElementRelationLink.param1(link,source);
3204 BinaryElementRelationLink.param2(link,target);
3205}
3206/**
3207 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
3208 */
3209private pattern mayInRelationnsURI_attribute_EPackage(
3210 problem:LogicProblem, interpretation:PartialInterpretation,
3211 source: DefinedElement, target:DefinedElement)
3212{
3213 find interpretation(problem,interpretation);
3214 // The two endpoint of the link have to exist
3215 find mayExist(problem, interpretation, source);
3216 find mayExist(problem, interpretation, target);
3217 // Type consistency
3218 find mayInstanceOfEPackage_class(problem,interpretation,source);
3219 StringElement(target);
3220 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3221 // the upper bound of the multiplicity should be considered.
3222 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
3223 check(numberOfExistingReferences < 1);
3224} or {
3225 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
3226}
3227/**
3228 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
3229 */
3230private pattern mustInRelationnsPrefix_attribute_EPackage(
3231 problem:LogicProblem, interpretation:PartialInterpretation,
3232 source: DefinedElement, target:DefinedElement)
3233{
3234 find interpretation(problem,interpretation);
3235 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3236 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
3237 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3238 BinaryElementRelationLink.param1(link,source);
3239 BinaryElementRelationLink.param2(link,target);
3240}
3241/**
3242 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
3243 */
3244private pattern mayInRelationnsPrefix_attribute_EPackage(
3245 problem:LogicProblem, interpretation:PartialInterpretation,
3246 source: DefinedElement, target:DefinedElement)
3247{
3248 find interpretation(problem,interpretation);
3249 // The two endpoint of the link have to exist
3250 find mayExist(problem, interpretation, source);
3251 find mayExist(problem, interpretation, target);
3252 // Type consistency
3253 find mayInstanceOfEPackage_class(problem,interpretation,source);
3254 StringElement(target);
3255 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3256 // the upper bound of the multiplicity should be considered.
3257 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
3258 check(numberOfExistingReferences < 1);
3259} or {
3260 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
3261}
3262/**
3263 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
3264 */
3265private pattern mustInRelationcontainment_attribute_EReference(
3266 problem:LogicProblem, interpretation:PartialInterpretation,
3267 source: DefinedElement, target:DefinedElement)
3268{
3269 find interpretation(problem,interpretation);
3270 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3271 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
3272 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3273 BinaryElementRelationLink.param1(link,source);
3274 BinaryElementRelationLink.param2(link,target);
3275}
3276/**
3277 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
3278 */
3279private pattern mayInRelationcontainment_attribute_EReference(
3280 problem:LogicProblem, interpretation:PartialInterpretation,
3281 source: DefinedElement, target:DefinedElement)
3282{
3283 find interpretation(problem,interpretation);
3284 // The two endpoint of the link have to exist
3285 find mayExist(problem, interpretation, source);
3286 find mayExist(problem, interpretation, target);
3287 // Type consistency
3288 find mayInstanceOfEReference_class(problem,interpretation,source);
3289 BooleanElement(target);
3290 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3291 // the upper bound of the multiplicity should be considered.
3292 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
3293 check(numberOfExistingReferences < 1);
3294} or {
3295 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
3296}
3297/**
3298 * Matcher for detecting tuples t where []container attribute EReference(source,target)
3299 */
3300private pattern mustInRelationcontainer_attribute_EReference(
3301 problem:LogicProblem, interpretation:PartialInterpretation,
3302 source: DefinedElement, target:DefinedElement)
3303{
3304 find interpretation(problem,interpretation);
3305 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3306 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
3307 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3308 BinaryElementRelationLink.param1(link,source);
3309 BinaryElementRelationLink.param2(link,target);
3310}
3311/**
3312 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
3313 */
3314private pattern mayInRelationcontainer_attribute_EReference(
3315 problem:LogicProblem, interpretation:PartialInterpretation,
3316 source: DefinedElement, target:DefinedElement)
3317{
3318 find interpretation(problem,interpretation);
3319 // The two endpoint of the link have to exist
3320 find mayExist(problem, interpretation, source);
3321 find mayExist(problem, interpretation, target);
3322 // Type consistency
3323 find mayInstanceOfEReference_class(problem,interpretation,source);
3324 BooleanElement(target);
3325 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3326 // the upper bound of the multiplicity should be considered.
3327 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
3328 check(numberOfExistingReferences < 1);
3329} or {
3330 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
3331}
3332/**
3333 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
3334 */
3335private pattern mustInRelationresolveProxies_attribute_EReference(
3336 problem:LogicProblem, interpretation:PartialInterpretation,
3337 source: DefinedElement, target:DefinedElement)
3338{
3339 find interpretation(problem,interpretation);
3340 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3341 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
3342 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3343 BinaryElementRelationLink.param1(link,source);
3344 BinaryElementRelationLink.param2(link,target);
3345}
3346/**
3347 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
3348 */
3349private pattern mayInRelationresolveProxies_attribute_EReference(
3350 problem:LogicProblem, interpretation:PartialInterpretation,
3351 source: DefinedElement, target:DefinedElement)
3352{
3353 find interpretation(problem,interpretation);
3354 // The two endpoint of the link have to exist
3355 find mayExist(problem, interpretation, source);
3356 find mayExist(problem, interpretation, target);
3357 // Type consistency
3358 find mayInstanceOfEReference_class(problem,interpretation,source);
3359 BooleanElement(target);
3360 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3361 // the upper bound of the multiplicity should be considered.
3362 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
3363 check(numberOfExistingReferences < 1);
3364} or {
3365 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
3366}
3367/**
3368 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
3369 */
3370private pattern mustInRelationchangeable_attribute_EStructuralFeature(
3371 problem:LogicProblem, interpretation:PartialInterpretation,
3372 source: DefinedElement, target:DefinedElement)
3373{
3374 find interpretation(problem,interpretation);
3375 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3376 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
3377 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3378 BinaryElementRelationLink.param1(link,source);
3379 BinaryElementRelationLink.param2(link,target);
3380}
3381/**
3382 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
3383 */
3384private pattern mayInRelationchangeable_attribute_EStructuralFeature(
3385 problem:LogicProblem, interpretation:PartialInterpretation,
3386 source: DefinedElement, target:DefinedElement)
3387{
3388 find interpretation(problem,interpretation);
3389 // The two endpoint of the link have to exist
3390 find mayExist(problem, interpretation, source);
3391 find mayExist(problem, interpretation, target);
3392 // Type consistency
3393 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
3394 BooleanElement(target);
3395 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3396 // the upper bound of the multiplicity should be considered.
3397 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
3398 check(numberOfExistingReferences < 1);
3399} or {
3400 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
3401}
3402/**
3403 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
3404 */
3405private pattern mustInRelationvolatile_attribute_EStructuralFeature(
3406 problem:LogicProblem, interpretation:PartialInterpretation,
3407 source: DefinedElement, target:DefinedElement)
3408{
3409 find interpretation(problem,interpretation);
3410 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3411 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
3412 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3413 BinaryElementRelationLink.param1(link,source);
3414 BinaryElementRelationLink.param2(link,target);
3415}
3416/**
3417 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
3418 */
3419private pattern mayInRelationvolatile_attribute_EStructuralFeature(
3420 problem:LogicProblem, interpretation:PartialInterpretation,
3421 source: DefinedElement, target:DefinedElement)
3422{
3423 find interpretation(problem,interpretation);
3424 // The two endpoint of the link have to exist
3425 find mayExist(problem, interpretation, source);
3426 find mayExist(problem, interpretation, target);
3427 // Type consistency
3428 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
3429 BooleanElement(target);
3430 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3431 // the upper bound of the multiplicity should be considered.
3432 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
3433 check(numberOfExistingReferences < 1);
3434} or {
3435 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
3436}
3437/**
3438 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
3439 */
3440private pattern mustInRelationtransient_attribute_EStructuralFeature(
3441 problem:LogicProblem, interpretation:PartialInterpretation,
3442 source: DefinedElement, target:DefinedElement)
3443{
3444 find interpretation(problem,interpretation);
3445 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3446 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
3447 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3448 BinaryElementRelationLink.param1(link,source);
3449 BinaryElementRelationLink.param2(link,target);
3450}
3451/**
3452 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
3453 */
3454private pattern mayInRelationtransient_attribute_EStructuralFeature(
3455 problem:LogicProblem, interpretation:PartialInterpretation,
3456 source: DefinedElement, target:DefinedElement)
3457{
3458 find interpretation(problem,interpretation);
3459 // The two endpoint of the link have to exist
3460 find mayExist(problem, interpretation, source);
3461 find mayExist(problem, interpretation, target);
3462 // Type consistency
3463 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
3464 BooleanElement(target);
3465 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3466 // the upper bound of the multiplicity should be considered.
3467 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
3468 check(numberOfExistingReferences < 1);
3469} or {
3470 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
3471}
3472/**
3473 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
3474 */
3475private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
3476 problem:LogicProblem, interpretation:PartialInterpretation,
3477 source: DefinedElement, target:DefinedElement)
3478{
3479 find interpretation(problem,interpretation);
3480 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3481 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
3482 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3483 BinaryElementRelationLink.param1(link,source);
3484 BinaryElementRelationLink.param2(link,target);
3485}
3486/**
3487 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
3488 */
3489private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
3490 problem:LogicProblem, interpretation:PartialInterpretation,
3491 source: DefinedElement, target:DefinedElement)
3492{
3493 find interpretation(problem,interpretation);
3494 // The two endpoint of the link have to exist
3495 find mayExist(problem, interpretation, source);
3496 find mayExist(problem, interpretation, target);
3497 // Type consistency
3498 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
3499 StringElement(target);
3500 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3501 // the upper bound of the multiplicity should be considered.
3502 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
3503 check(numberOfExistingReferences < 1);
3504} or {
3505 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
3506}
3507/**
3508 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
3509 */
3510private pattern mustInRelationunsettable_attribute_EStructuralFeature(
3511 problem:LogicProblem, interpretation:PartialInterpretation,
3512 source: DefinedElement, target:DefinedElement)
3513{
3514 find interpretation(problem,interpretation);
3515 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3516 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
3517 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3518 BinaryElementRelationLink.param1(link,source);
3519 BinaryElementRelationLink.param2(link,target);
3520}
3521/**
3522 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
3523 */
3524private pattern mayInRelationunsettable_attribute_EStructuralFeature(
3525 problem:LogicProblem, interpretation:PartialInterpretation,
3526 source: DefinedElement, target:DefinedElement)
3527{
3528 find interpretation(problem,interpretation);
3529 // The two endpoint of the link have to exist
3530 find mayExist(problem, interpretation, source);
3531 find mayExist(problem, interpretation, target);
3532 // Type consistency
3533 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
3534 BooleanElement(target);
3535 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3536 // the upper bound of the multiplicity should be considered.
3537 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
3538 check(numberOfExistingReferences < 1);
3539} or {
3540 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
3541}
3542/**
3543 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
3544 */
3545private pattern mustInRelationderived_attribute_EStructuralFeature(
3546 problem:LogicProblem, interpretation:PartialInterpretation,
3547 source: DefinedElement, target:DefinedElement)
3548{
3549 find interpretation(problem,interpretation);
3550 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3551 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
3552 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3553 BinaryElementRelationLink.param1(link,source);
3554 BinaryElementRelationLink.param2(link,target);
3555}
3556/**
3557 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
3558 */
3559private pattern mayInRelationderived_attribute_EStructuralFeature(
3560 problem:LogicProblem, interpretation:PartialInterpretation,
3561 source: DefinedElement, target:DefinedElement)
3562{
3563 find interpretation(problem,interpretation);
3564 // The two endpoint of the link have to exist
3565 find mayExist(problem, interpretation, source);
3566 find mayExist(problem, interpretation, target);
3567 // Type consistency
3568 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
3569 BooleanElement(target);
3570 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3571 // the upper bound of the multiplicity should be considered.
3572 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
3573 check(numberOfExistingReferences < 1);
3574} or {
3575 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
3576}
3577/**
3578 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
3579 */
3580private pattern mustInRelationordered_attribute_ETypedElement(
3581 problem:LogicProblem, interpretation:PartialInterpretation,
3582 source: DefinedElement, target:DefinedElement)
3583{
3584 find interpretation(problem,interpretation);
3585 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3586 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
3587 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3588 BinaryElementRelationLink.param1(link,source);
3589 BinaryElementRelationLink.param2(link,target);
3590}
3591/**
3592 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
3593 */
3594private pattern mayInRelationordered_attribute_ETypedElement(
3595 problem:LogicProblem, interpretation:PartialInterpretation,
3596 source: DefinedElement, target:DefinedElement)
3597{
3598 find interpretation(problem,interpretation);
3599 // The two endpoint of the link have to exist
3600 find mayExist(problem, interpretation, source);
3601 find mayExist(problem, interpretation, target);
3602 // Type consistency
3603 find mayInstanceOfETypedElement_class(problem,interpretation,source);
3604 BooleanElement(target);
3605 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3606 // the upper bound of the multiplicity should be considered.
3607 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
3608 check(numberOfExistingReferences < 1);
3609} or {
3610 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
3611}
3612/**
3613 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
3614 */
3615private pattern mustInRelationunique_attribute_ETypedElement(
3616 problem:LogicProblem, interpretation:PartialInterpretation,
3617 source: DefinedElement, target:DefinedElement)
3618{
3619 find interpretation(problem,interpretation);
3620 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3621 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
3622 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3623 BinaryElementRelationLink.param1(link,source);
3624 BinaryElementRelationLink.param2(link,target);
3625}
3626/**
3627 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
3628 */
3629private pattern mayInRelationunique_attribute_ETypedElement(
3630 problem:LogicProblem, interpretation:PartialInterpretation,
3631 source: DefinedElement, target:DefinedElement)
3632{
3633 find interpretation(problem,interpretation);
3634 // The two endpoint of the link have to exist
3635 find mayExist(problem, interpretation, source);
3636 find mayExist(problem, interpretation, target);
3637 // Type consistency
3638 find mayInstanceOfETypedElement_class(problem,interpretation,source);
3639 BooleanElement(target);
3640 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3641 // the upper bound of the multiplicity should be considered.
3642 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
3643 check(numberOfExistingReferences < 1);
3644} or {
3645 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
3646}
3647/**
3648 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
3649 */
3650private pattern mustInRelationlowerBound_attribute_ETypedElement(
3651 problem:LogicProblem, interpretation:PartialInterpretation,
3652 source: DefinedElement, target:DefinedElement)
3653{
3654 find interpretation(problem,interpretation);
3655 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3656 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
3657 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3658 BinaryElementRelationLink.param1(link,source);
3659 BinaryElementRelationLink.param2(link,target);
3660}
3661/**
3662 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
3663 */
3664private pattern mayInRelationlowerBound_attribute_ETypedElement(
3665 problem:LogicProblem, interpretation:PartialInterpretation,
3666 source: DefinedElement, target:DefinedElement)
3667{
3668 find interpretation(problem,interpretation);
3669 // The two endpoint of the link have to exist
3670 find mayExist(problem, interpretation, source);
3671 find mayExist(problem, interpretation, target);
3672 // Type consistency
3673 find mayInstanceOfETypedElement_class(problem,interpretation,source);
3674 IntegerElement(target);
3675 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3676 // the upper bound of the multiplicity should be considered.
3677 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
3678 check(numberOfExistingReferences < 1);
3679} or {
3680 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
3681}
3682/**
3683 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
3684 */
3685private pattern mustInRelationupperBound_attribute_ETypedElement(
3686 problem:LogicProblem, interpretation:PartialInterpretation,
3687 source: DefinedElement, target:DefinedElement)
3688{
3689 find interpretation(problem,interpretation);
3690 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3691 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
3692 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3693 BinaryElementRelationLink.param1(link,source);
3694 BinaryElementRelationLink.param2(link,target);
3695}
3696/**
3697 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
3698 */
3699private pattern mayInRelationupperBound_attribute_ETypedElement(
3700 problem:LogicProblem, interpretation:PartialInterpretation,
3701 source: DefinedElement, target:DefinedElement)
3702{
3703 find interpretation(problem,interpretation);
3704 // The two endpoint of the link have to exist
3705 find mayExist(problem, interpretation, source);
3706 find mayExist(problem, interpretation, target);
3707 // Type consistency
3708 find mayInstanceOfETypedElement_class(problem,interpretation,source);
3709 IntegerElement(target);
3710 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3711 // the upper bound of the multiplicity should be considered.
3712 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
3713 check(numberOfExistingReferences < 1);
3714} or {
3715 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
3716}
3717/**
3718 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
3719 */
3720private pattern mustInRelationmany_attribute_ETypedElement(
3721 problem:LogicProblem, interpretation:PartialInterpretation,
3722 source: DefinedElement, target:DefinedElement)
3723{
3724 find interpretation(problem,interpretation);
3725 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3726 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
3727 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3728 BinaryElementRelationLink.param1(link,source);
3729 BinaryElementRelationLink.param2(link,target);
3730}
3731/**
3732 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
3733 */
3734private pattern mayInRelationmany_attribute_ETypedElement(
3735 problem:LogicProblem, interpretation:PartialInterpretation,
3736 source: DefinedElement, target:DefinedElement)
3737{
3738 find interpretation(problem,interpretation);
3739 // The two endpoint of the link have to exist
3740 find mayExist(problem, interpretation, source);
3741 find mayExist(problem, interpretation, target);
3742 // Type consistency
3743 find mayInstanceOfETypedElement_class(problem,interpretation,source);
3744 BooleanElement(target);
3745 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3746 // the upper bound of the multiplicity should be considered.
3747 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
3748 check(numberOfExistingReferences < 1);
3749} or {
3750 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
3751}
3752/**
3753 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
3754 */
3755private pattern mustInRelationrequired_attribute_ETypedElement(
3756 problem:LogicProblem, interpretation:PartialInterpretation,
3757 source: DefinedElement, target:DefinedElement)
3758{
3759 find interpretation(problem,interpretation);
3760 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3761 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
3762 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3763 BinaryElementRelationLink.param1(link,source);
3764 BinaryElementRelationLink.param2(link,target);
3765}
3766/**
3767 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
3768 */
3769private pattern mayInRelationrequired_attribute_ETypedElement(
3770 problem:LogicProblem, interpretation:PartialInterpretation,
3771 source: DefinedElement, target:DefinedElement)
3772{
3773 find interpretation(problem,interpretation);
3774 // The two endpoint of the link have to exist
3775 find mayExist(problem, interpretation, source);
3776 find mayExist(problem, interpretation, target);
3777 // Type consistency
3778 find mayInstanceOfETypedElement_class(problem,interpretation,source);
3779 BooleanElement(target);
3780 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3781 // the upper bound of the multiplicity should be considered.
3782 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
3783 check(numberOfExistingReferences < 1);
3784} or {
3785 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
3786}
3787/**
3788 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
3789 */
3790private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
3791 problem:LogicProblem, interpretation:PartialInterpretation,
3792 source: DefinedElement, target:DefinedElement)
3793{
3794 find interpretation(problem,interpretation);
3795 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3796 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
3797 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3798 BinaryElementRelationLink.param1(link,source);
3799 BinaryElementRelationLink.param2(link,target);
3800}
3801/**
3802 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
3803 */
3804private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
3805 problem:LogicProblem, interpretation:PartialInterpretation,
3806 source: DefinedElement, target:DefinedElement)
3807{
3808 find interpretation(problem,interpretation);
3809 // The two endpoint of the link have to exist
3810 find mayExist(problem, interpretation, source);
3811 find mayExist(problem, interpretation, target);
3812 // Type consistency
3813 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
3814 StringElement(target);
3815 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3816 // the upper bound of the multiplicity should be considered.
3817 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
3818 check(numberOfExistingReferences < 1);
3819} or {
3820 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
3821}
3822/**
3823 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
3824 */
3825private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
3826 problem:LogicProblem, interpretation:PartialInterpretation,
3827 source: DefinedElement, target:DefinedElement)
3828{
3829 find interpretation(problem,interpretation);
3830 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3831 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
3832 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
3833 BinaryElementRelationLink.param1(link,source);
3834 BinaryElementRelationLink.param2(link,target);
3835}
3836/**
3837 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
3838 */
3839private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
3840 problem:LogicProblem, interpretation:PartialInterpretation,
3841 source: DefinedElement, target:DefinedElement)
3842{
3843 find interpretation(problem,interpretation);
3844 // The two endpoint of the link have to exist
3845 find mayExist(problem, interpretation, source);
3846 find mayExist(problem, interpretation, target);
3847 // Type consistency
3848 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
3849 StringElement(target);
3850 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
3851 // the upper bound of the multiplicity should be considered.
3852 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
3853 check(numberOfExistingReferences < 1);
3854} or {
3855 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
3856}
3857
3858//////////
3859// 1.3 Relation Definition Indexers
3860//////////
3861
3862//////////
3863// 1.4 Containment Indexer
3864//////////
3865private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
3866 find mustContains4(_,_,source,target);
3867}
3868
3869private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
3870 source: DefinedElement, target: DefinedElement)
3871 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
3872
3873 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
3874
3875 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
3876
3877 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
3878
3879 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
3880
3881 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
3882
3883 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
3884
3885 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
3886
3887 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
3888
3889 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
3890
3891 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
3892
3893 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
3894
3895 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
3896
3897 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
3898
3899 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
3900
3901 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
3902
3903 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
3904
3905 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
3906
3907private pattern mustTransitiveContains(source,target) {
3908 find mustContains2+(source,target);
3909}
3910
3911//////////
3912// 2. Invalidation Indexers
3913//////////
3914// 2.1 Invalidated by WF Queries
3915//////////
3916
3917//////////
3918// 3. Unfinishedness Indexers
3919//////////
3920// 3.1 Unfinishedness Measured by Multiplicity
3921//////////
3922pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
3923 find interpretation(problem,interpretation);
3924 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3925 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
3926 find mustInstanceOfEAttribute_class(problem,interpretation,object);
3927 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
3928 check(numberOfExistingReferences < 1);
3929 missingMultiplicity == eval(1-numberOfExistingReferences);
3930}
3931pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
3932 find interpretation(problem,interpretation);
3933 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3934 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
3935 find mustInstanceOfEReference_class(problem,interpretation,object);
3936 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
3937 check(numberOfExistingReferences < 1);
3938 missingMultiplicity == eval(1-numberOfExistingReferences);
3939}
3940pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
3941 find interpretation(problem,interpretation);
3942 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3943 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
3944 find mustInstanceOfEGenericType_class(problem,interpretation,object);
3945 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
3946 check(numberOfExistingReferences < 1);
3947 missingMultiplicity == eval(1-numberOfExistingReferences);
3948}
3949
3950//////////
3951// 3.2 Unfinishedness Measured by WF Queries
3952//////////
3953
3954//////////
3955// 4. Refinement Indexers
3956//////////
3957// 4.1 Object constructors
3958//////////
3959private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
3960{
3961 find interpretation(problem,interpretation);
3962 find mustInstanceOfEObject_class(problem,interpretation,root);
3963 find mustExist(problem, interpretation, root);
3964}or{
3965 find interpretation(problem,interpretation);
3966 find mustInstanceOfEGenericType_class(problem,interpretation,root);
3967 find mustExist(problem, interpretation, root);
3968}or{
3969 find interpretation(problem,interpretation);
3970 find mustInstanceOfEClassifier_class(problem,interpretation,root);
3971 find mustExist(problem, interpretation, root);
3972}or{
3973 find interpretation(problem,interpretation);
3974 find mustInstanceOfEPackage_class(problem,interpretation,root);
3975 find mustExist(problem, interpretation, root);
3976}or{
3977 find interpretation(problem,interpretation);
3978 find mustInstanceOfEReference_class(problem,interpretation,root);
3979 find mustExist(problem, interpretation, root);
3980}or{
3981 find interpretation(problem,interpretation);
3982 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
3983 find mustExist(problem, interpretation, root);
3984}or{
3985 find interpretation(problem,interpretation);
3986 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
3987 find mustExist(problem, interpretation, root);
3988}or{
3989 find interpretation(problem,interpretation);
3990 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
3991 find mustExist(problem, interpretation, root);
3992}or{
3993 find interpretation(problem,interpretation);
3994 find mustInstanceOfEOperation_class(problem,interpretation,root);
3995 find mustExist(problem, interpretation, root);
3996}or{
3997 find interpretation(problem,interpretation);
3998 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
3999 find mustExist(problem, interpretation, root);
4000}or{
4001 find interpretation(problem,interpretation);
4002 find mustInstanceOfEAttribute_class(problem,interpretation,root);
4003 find mustExist(problem, interpretation, root);
4004}or{
4005 find interpretation(problem,interpretation);
4006 find mustInstanceOfEClass_class(problem,interpretation,root);
4007 find mustExist(problem, interpretation, root);
4008}or{
4009 find interpretation(problem,interpretation);
4010 find mustInstanceOfEDataType_class(problem,interpretation,root);
4011 find mustExist(problem, interpretation, root);
4012}or{
4013 find interpretation(problem,interpretation);
4014 find mustInstanceOfEModelElement_class(problem,interpretation,root);
4015 find mustExist(problem, interpretation, root);
4016}or{
4017 find interpretation(problem,interpretation);
4018 find mustInstanceOfETypedElement_class(problem,interpretation,root);
4019 find mustExist(problem, interpretation, root);
4020}or{
4021 find interpretation(problem,interpretation);
4022 find mustInstanceOfENamedElement_class(problem,interpretation,root);
4023 find mustExist(problem, interpretation, root);
4024}or{
4025 find interpretation(problem,interpretation);
4026 find mustInstanceOfEEnum_class(problem,interpretation,root);
4027 find mustExist(problem, interpretation, root);
4028}or{
4029 find interpretation(problem,interpretation);
4030 find mustInstanceOfEParameter_class(problem,interpretation,root);
4031 find mustExist(problem, interpretation, root);
4032}or{
4033 find interpretation(problem,interpretation);
4034 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
4035 find mustExist(problem, interpretation, root);
4036}or{
4037 find interpretation(problem,interpretation);
4038 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
4039 find mustExist(problem, interpretation, root);
4040}or{
4041 find interpretation(problem,interpretation);
4042 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
4043 find mustExist(problem, interpretation, root);
4044}or{
4045 find interpretation(problem,interpretation);
4046 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
4047 find mustExist(problem, interpretation, root);
4048}or{
4049 find interpretation(problem,interpretation);
4050 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
4051 find mustExist(problem, interpretation, root);
4052}or{
4053 find interpretation(problem,interpretation);
4054 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
4055 find mustExist(problem, interpretation, root);
4056}or{
4057 find interpretation(problem,interpretation);
4058 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
4059 find mustExist(problem, interpretation, root);
4060}
4061pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
4062 problem:LogicProblem, interpretation:PartialInterpretation,
4063 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4064 container:DefinedElement)
4065{
4066 find interpretation(problem,interpretation);
4067 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4068 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
4069 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4070 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
4071 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4072 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
4073 find mustInstanceOfEOperation_class(problem,interpretation,container);
4074 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
4075 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
4076 find mustExist(problem, interpretation, container);
4077 neg find mustExist(problem, interpretation, newObject);
4078}
4079pattern createObject_EParameter_class(
4080 problem:LogicProblem, interpretation:PartialInterpretation,
4081 typeInterpretation:PartialComplexTypeInterpretation)
4082{
4083 find interpretation(problem,interpretation);
4084 neg find hasElementInContainment(problem,interpretation);
4085 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4086 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
4087 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
4088 find mayExist(problem, interpretation, newObject);
4089 neg find mustExist(problem, interpretation, newObject);
4090}
4091pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
4092 problem:LogicProblem, interpretation:PartialInterpretation,
4093 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4094 container:DefinedElement)
4095{
4096 find interpretation(problem,interpretation);
4097 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4098 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
4099 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4100 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
4101 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4102 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
4103 find mustInstanceOfEPackage_class(problem,interpretation,container);
4104 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
4105 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
4106 find mustExist(problem, interpretation, container);
4107 neg find mustExist(problem, interpretation, newObject);
4108}
4109pattern createObject_EDataType_class(
4110 problem:LogicProblem, interpretation:PartialInterpretation,
4111 typeInterpretation:PartialComplexTypeInterpretation)
4112{
4113 find interpretation(problem,interpretation);
4114 neg find hasElementInContainment(problem,interpretation);
4115 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4116 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
4117 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
4118 find mayExist(problem, interpretation, newObject);
4119 neg find mustExist(problem, interpretation, newObject);
4120}
4121pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
4122 problem:LogicProblem, interpretation:PartialInterpretation,
4123 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4124 container:DefinedElement)
4125{
4126 find interpretation(problem,interpretation);
4127 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4128 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
4129 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4130 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
4131 find mustInstanceOfEClassifier_class(problem,interpretation,container);
4132 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
4133 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
4134 find mustExist(problem, interpretation, container);
4135 neg find mustExist(problem, interpretation, newObject);
4136}
4137pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
4138 problem:LogicProblem, interpretation:PartialInterpretation,
4139 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4140 container:DefinedElement)
4141{
4142 find interpretation(problem,interpretation);
4143 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4144 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
4145 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4146 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
4147 find mustInstanceOfEOperation_class(problem,interpretation,container);
4148 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
4149 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
4150 find mustExist(problem, interpretation, container);
4151 neg find mustExist(problem, interpretation, newObject);
4152}
4153pattern createObject_ETypeParameter_class(
4154 problem:LogicProblem, interpretation:PartialInterpretation,
4155 typeInterpretation:PartialComplexTypeInterpretation)
4156{
4157 find interpretation(problem,interpretation);
4158 neg find hasElementInContainment(problem,interpretation);
4159 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4160 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
4161 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
4162 find mayExist(problem, interpretation, newObject);
4163 neg find mustExist(problem, interpretation, newObject);
4164}
4165pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
4166 problem:LogicProblem, interpretation:PartialInterpretation,
4167 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4168 container:DefinedElement)
4169{
4170 find interpretation(problem,interpretation);
4171 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4172 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
4173 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4174 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
4175 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4176 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
4177 find mustInstanceOfEPackage_class(problem,interpretation,container);
4178 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
4179 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
4180 find mustExist(problem, interpretation, container);
4181 neg find mustExist(problem, interpretation, newObject);
4182}
4183pattern createObject_EPackage_class_UndefinedPart(
4184 problem:LogicProblem, interpretation:PartialInterpretation,
4185 typeInterpretation:PartialComplexTypeInterpretation)
4186{
4187 find interpretation(problem,interpretation);
4188 neg find hasElementInContainment(problem,interpretation);
4189 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4190 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
4191 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
4192 find mayExist(problem, interpretation, newObject);
4193 neg find mustExist(problem, interpretation, newObject);
4194}
4195pattern createObject_EObject_class_by_contents_reference_EAnnotation(
4196 problem:LogicProblem, interpretation:PartialInterpretation,
4197 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4198 container:DefinedElement)
4199{
4200 find interpretation(problem,interpretation);
4201 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4202 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
4203 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4204 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
4205 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
4206 find mayInstanceOfEObject_class(problem,interpretation,newObject);
4207 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
4208 find mustExist(problem, interpretation, container);
4209 neg find mustExist(problem, interpretation, newObject);
4210}
4211pattern createObject_EObject_class(
4212 problem:LogicProblem, interpretation:PartialInterpretation,
4213 typeInterpretation:PartialComplexTypeInterpretation)
4214{
4215 find interpretation(problem,interpretation);
4216 neg find hasElementInContainment(problem,interpretation);
4217 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4218 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
4219 find mayInstanceOfEObject_class(problem,interpretation,newObject);
4220 find mayExist(problem, interpretation, newObject);
4221 neg find mustExist(problem, interpretation, newObject);
4222}
4223pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
4224 problem:LogicProblem, interpretation:PartialInterpretation,
4225 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4226 container:DefinedElement)
4227{
4228 find interpretation(problem,interpretation);
4229 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4230 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
4231 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4232 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
4233 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
4234 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
4235 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
4236 find mustExist(problem, interpretation, container);
4237 neg find mustExist(problem, interpretation, newObject);
4238}
4239pattern createObject_EStringToStringMapEntry_class(
4240 problem:LogicProblem, interpretation:PartialInterpretation,
4241 typeInterpretation:PartialComplexTypeInterpretation)
4242{
4243 find interpretation(problem,interpretation);
4244 neg find hasElementInContainment(problem,interpretation);
4245 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4246 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
4247 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
4248 find mayExist(problem, interpretation, newObject);
4249 neg find mustExist(problem, interpretation, newObject);
4250}
4251pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
4252 problem:LogicProblem, interpretation:PartialInterpretation,
4253 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4254 container:DefinedElement)
4255{
4256 find interpretation(problem,interpretation);
4257 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4258 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
4259 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4260 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
4261 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4262 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
4263 find mustInstanceOfEClass_class(problem,interpretation,container);
4264 find mayInstanceOfEReference_class(problem,interpretation,newObject);
4265 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
4266 find mustExist(problem, interpretation, container);
4267 neg find mustExist(problem, interpretation, newObject);
4268}
4269pattern createObject_EReference_class(
4270 problem:LogicProblem, interpretation:PartialInterpretation,
4271 typeInterpretation:PartialComplexTypeInterpretation)
4272{
4273 find interpretation(problem,interpretation);
4274 neg find hasElementInContainment(problem,interpretation);
4275 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4276 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
4277 find mayInstanceOfEReference_class(problem,interpretation,newObject);
4278 find mayExist(problem, interpretation, newObject);
4279 neg find mustExist(problem, interpretation, newObject);
4280}
4281pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
4282 problem:LogicProblem, interpretation:PartialInterpretation,
4283 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4284 container:DefinedElement)
4285{
4286 find interpretation(problem,interpretation);
4287 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4288 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
4289 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4290 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
4291 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4292 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
4293 find mustInstanceOfEEnum_class(problem,interpretation,container);
4294 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
4295 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
4296 find mustExist(problem, interpretation, container);
4297 neg find mustExist(problem, interpretation, newObject);
4298}
4299pattern createObject_EEnumLiteral_class(
4300 problem:LogicProblem, interpretation:PartialInterpretation,
4301 typeInterpretation:PartialComplexTypeInterpretation)
4302{
4303 find interpretation(problem,interpretation);
4304 neg find hasElementInContainment(problem,interpretation);
4305 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4306 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
4307 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
4308 find mayExist(problem, interpretation, newObject);
4309 neg find mustExist(problem, interpretation, newObject);
4310}
4311pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
4312 problem:LogicProblem, interpretation:PartialInterpretation,
4313 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4314 container:DefinedElement)
4315{
4316 find interpretation(problem,interpretation);
4317 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4318 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
4319 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4320 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
4321 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4322 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
4323 find mustInstanceOfEPackage_class(problem,interpretation,container);
4324 find mayInstanceOfEClass_class(problem,interpretation,newObject);
4325 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
4326 find mustExist(problem, interpretation, container);
4327 neg find mustExist(problem, interpretation, newObject);
4328}
4329pattern createObject_EClass_class(
4330 problem:LogicProblem, interpretation:PartialInterpretation,
4331 typeInterpretation:PartialComplexTypeInterpretation)
4332{
4333 find interpretation(problem,interpretation);
4334 neg find hasElementInContainment(problem,interpretation);
4335 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4336 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
4337 find mayInstanceOfEClass_class(problem,interpretation,newObject);
4338 find mayExist(problem, interpretation, newObject);
4339 neg find mustExist(problem, interpretation, newObject);
4340}
4341pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
4342 problem:LogicProblem, interpretation:PartialInterpretation,
4343 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4344 container:DefinedElement)
4345{
4346 find interpretation(problem,interpretation);
4347 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4348 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
4349 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4350 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
4351 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4352 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
4353 find mustInstanceOfEClass_class(problem,interpretation,container);
4354 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
4355 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
4356 find mustExist(problem, interpretation, container);
4357 neg find mustExist(problem, interpretation, newObject);
4358}
4359pattern createObject_EOperation_class(
4360 problem:LogicProblem, interpretation:PartialInterpretation,
4361 typeInterpretation:PartialComplexTypeInterpretation)
4362{
4363 find interpretation(problem,interpretation);
4364 neg find hasElementInContainment(problem,interpretation);
4365 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4366 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
4367 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
4368 find mayExist(problem, interpretation, newObject);
4369 neg find mustExist(problem, interpretation, newObject);
4370}
4371pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
4372 problem:LogicProblem, interpretation:PartialInterpretation,
4373 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4374 container:DefinedElement)
4375{
4376 find interpretation(problem,interpretation);
4377 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4378 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
4379 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4380 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
4381 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4382 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
4383 find mustInstanceOfEModelElement_class(problem,interpretation,container);
4384 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
4385 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
4386 find mustExist(problem, interpretation, container);
4387 neg find mustExist(problem, interpretation, newObject);
4388}
4389pattern createObject_EAnnotation_class(
4390 problem:LogicProblem, interpretation:PartialInterpretation,
4391 typeInterpretation:PartialComplexTypeInterpretation)
4392{
4393 find interpretation(problem,interpretation);
4394 neg find hasElementInContainment(problem,interpretation);
4395 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4396 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
4397 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
4398 find mayExist(problem, interpretation, newObject);
4399 neg find mustExist(problem, interpretation, newObject);
4400}
4401pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
4402 problem:LogicProblem, interpretation:PartialInterpretation,
4403 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4404 container:DefinedElement)
4405{
4406 find interpretation(problem,interpretation);
4407 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4408 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
4409 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4410 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
4411 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4412 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
4413 find mustInstanceOfEClass_class(problem,interpretation,container);
4414 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
4415 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
4416 find mustExist(problem, interpretation, container);
4417 neg find mustExist(problem, interpretation, newObject);
4418}
4419pattern createObject_EAttribute_class(
4420 problem:LogicProblem, interpretation:PartialInterpretation,
4421 typeInterpretation:PartialComplexTypeInterpretation)
4422{
4423 find interpretation(problem,interpretation);
4424 neg find hasElementInContainment(problem,interpretation);
4425 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4426 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
4427 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
4428 find mayExist(problem, interpretation, newObject);
4429 neg find mustExist(problem, interpretation, newObject);
4430}
4431pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
4432 problem:LogicProblem, interpretation:PartialInterpretation,
4433 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4434 container:DefinedElement)
4435{
4436 find interpretation(problem,interpretation);
4437 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4438 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
4439 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4440 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
4441 find mustInstanceOfEClass_class(problem,interpretation,container);
4442 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
4443 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
4444 find mustExist(problem, interpretation, container);
4445 neg find mustExist(problem, interpretation, newObject);
4446}
4447pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
4448 problem:LogicProblem, interpretation:PartialInterpretation,
4449 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4450 container:DefinedElement)
4451{
4452 find interpretation(problem,interpretation);
4453 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4454 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
4455 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4456 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
4457 find mustInstanceOfEOperation_class(problem,interpretation,container);
4458 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
4459 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
4460 find mustExist(problem, interpretation, container);
4461 neg find mustExist(problem, interpretation, newObject);
4462}
4463pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
4464 problem:LogicProblem, interpretation:PartialInterpretation,
4465 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4466 container:DefinedElement)
4467{
4468 find interpretation(problem,interpretation);
4469 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4470 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
4471 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4472 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
4473 find mustInstanceOfETypedElement_class(problem,interpretation,container);
4474 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
4475 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
4476 find mustExist(problem, interpretation, container);
4477 neg find mustExist(problem, interpretation, newObject);
4478}
4479pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
4480 problem:LogicProblem, interpretation:PartialInterpretation,
4481 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4482 container:DefinedElement)
4483{
4484 find interpretation(problem,interpretation);
4485 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4486 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
4487 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4488 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
4489 find mustInstanceOfEGenericType_class(problem,interpretation,container);
4490 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
4491 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
4492 find mustExist(problem, interpretation, container);
4493 neg find mustExist(problem, interpretation, newObject);
4494}
4495pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
4496 problem:LogicProblem, interpretation:PartialInterpretation,
4497 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4498 container:DefinedElement)
4499{
4500 find interpretation(problem,interpretation);
4501 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4502 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
4503 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4504 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
4505 find mustInstanceOfEGenericType_class(problem,interpretation,container);
4506 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
4507 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
4508 find mustExist(problem, interpretation, container);
4509 neg find mustExist(problem, interpretation, newObject);
4510}
4511pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
4512 problem:LogicProblem, interpretation:PartialInterpretation,
4513 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4514 container:DefinedElement)
4515{
4516 find interpretation(problem,interpretation);
4517 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4518 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
4519 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4520 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
4521 find mustInstanceOfEGenericType_class(problem,interpretation,container);
4522 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
4523 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
4524 find mustExist(problem, interpretation, container);
4525 neg find mustExist(problem, interpretation, newObject);
4526}
4527pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
4528 problem:LogicProblem, interpretation:PartialInterpretation,
4529 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4530 container:DefinedElement)
4531{
4532 find interpretation(problem,interpretation);
4533 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4534 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
4535 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4536 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
4537 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
4538 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
4539 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
4540 find mustExist(problem, interpretation, container);
4541 neg find mustExist(problem, interpretation, newObject);
4542}
4543pattern createObject_EGenericType_class(
4544 problem:LogicProblem, interpretation:PartialInterpretation,
4545 typeInterpretation:PartialComplexTypeInterpretation)
4546{
4547 find interpretation(problem,interpretation);
4548 neg find hasElementInContainment(problem,interpretation);
4549 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4550 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
4551 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
4552 find mayExist(problem, interpretation, newObject);
4553 neg find mustExist(problem, interpretation, newObject);
4554}
4555pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
4556 problem:LogicProblem, interpretation:PartialInterpretation,
4557 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
4558 container:DefinedElement)
4559{
4560 find interpretation(problem,interpretation);
4561 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4562 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
4563 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
4564 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
4565 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
4566 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
4567 find mustInstanceOfEPackage_class(problem,interpretation,container);
4568 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
4569 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
4570 find mustExist(problem, interpretation, container);
4571 neg find mustExist(problem, interpretation, newObject);
4572}
4573pattern createObject_EEnum_class(
4574 problem:LogicProblem, interpretation:PartialInterpretation,
4575 typeInterpretation:PartialComplexTypeInterpretation)
4576{
4577 find interpretation(problem,interpretation);
4578 neg find hasElementInContainment(problem,interpretation);
4579 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
4580 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
4581 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
4582 find mayExist(problem, interpretation, newObject);
4583 neg find mustExist(problem, interpretation, newObject);
4584}
4585
4586//////////
4587// 4.2 Type refinement
4588//////////
4589pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4590 find interpretation(problem,interpretation);
4591 PartialInterpretation.newElements(interpretation,element);
4592 find mayInstanceOfEParameter_class(problem,interpretation,element);
4593 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4594 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4595 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
4596 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
4597 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
4598 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4599 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4600 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4601 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
4602 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
4603 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4604}
4605pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4606 find interpretation(problem,interpretation);
4607 PartialInterpretation.newElements(interpretation,element);
4608 find mayInstanceOfEDataType_class(problem,interpretation,element);
4609 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4610 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
4611 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4612 neg find mustInstanceOfEClass_class(problem,interpretation,element);
4613 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
4614 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4615 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4616 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4617 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
4618 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
4619 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4620}
4621pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4622 find interpretation(problem,interpretation);
4623 PartialInterpretation.newElements(interpretation,element);
4624 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
4625 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4626 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4627 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
4628 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4629 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4630 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4631 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
4632 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
4633 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4634}
4635pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4636 find interpretation(problem,interpretation);
4637 PartialInterpretation.newElements(interpretation,element);
4638 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
4639 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4640 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4641 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
4642 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4643 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4644 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4645 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
4646 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
4647 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4648}
4649pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4650 find interpretation(problem,interpretation);
4651 PartialInterpretation.newElements(interpretation,element);
4652 find mayInstanceOfEObject_class(problem,interpretation,element);
4653 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4654 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
4655 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4656 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4657}
4658pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4659 find interpretation(problem,interpretation);
4660 PartialInterpretation.newElements(interpretation,element);
4661 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4662 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4663 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
4664 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4665 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4666}
4667pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4668 find interpretation(problem,interpretation);
4669 PartialInterpretation.newElements(interpretation,element);
4670 find mayInstanceOfEReference_class(problem,interpretation,element);
4671 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4672 neg find mustInstanceOfEReference_class(problem,interpretation,element);
4673 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4674 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
4675 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
4676 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4677 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
4678 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4679 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4680 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
4681 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
4682 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4683}
4684pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4685 find interpretation(problem,interpretation);
4686 PartialInterpretation.newElements(interpretation,element);
4687 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
4688 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4689 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
4690 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4691 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4692 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4693 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4694 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
4695 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
4696 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4697}
4698pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4699 find interpretation(problem,interpretation);
4700 PartialInterpretation.newElements(interpretation,element);
4701 find mayInstanceOfEClass_class(problem,interpretation,element);
4702 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4703 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4704 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
4705 neg find mustInstanceOfEClass_class(problem,interpretation,element);
4706 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
4707 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4708 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4709 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4710 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
4711 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4712}
4713pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4714 find interpretation(problem,interpretation);
4715 PartialInterpretation.newElements(interpretation,element);
4716 find mayInstanceOfEOperation_class(problem,interpretation,element);
4717 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4718 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4719 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
4720 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
4721 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
4722 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4723 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4724 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4725 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
4726 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
4727 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4728}
4729pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4730 find interpretation(problem,interpretation);
4731 PartialInterpretation.newElements(interpretation,element);
4732 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
4733 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4734 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4735 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4736 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
4737 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4738}
4739pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4740 find interpretation(problem,interpretation);
4741 PartialInterpretation.newElements(interpretation,element);
4742 find mayInstanceOfEAttribute_class(problem,interpretation,element);
4743 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4744 neg find mustInstanceOfEReference_class(problem,interpretation,element);
4745 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4746 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
4747 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
4748 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
4749 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4750 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4751 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4752 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
4753 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
4754 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4755}
4756pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4757 find interpretation(problem,interpretation);
4758 PartialInterpretation.newElements(interpretation,element);
4759 find mayInstanceOfEGenericType_class(problem,interpretation,element);
4760 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4761 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
4762 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4763 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4764}
4765pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
4766 find interpretation(problem,interpretation);
4767 PartialInterpretation.newElements(interpretation,element);
4768 find mayInstanceOfEEnum_class(problem,interpretation,element);
4769 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
4770 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
4771 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
4772 neg find mustInstanceOfEClass_class(problem,interpretation,element);
4773 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
4774 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
4775 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
4776 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
4777 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
4778 neg find mustInstanceOfEObject_class(problem,interpretation,element);
4779}
4780
4781//////////
4782// 4.3 Relation refinement
4783//////////
4784pattern refineRelation_eAttributeType_reference_EAttribute(
4785 problem:LogicProblem, interpretation:PartialInterpretation,
4786 relationIterpretation:PartialRelationInterpretation,
4787 from: DefinedElement, to: DefinedElement)
4788{
4789 find interpretation(problem,interpretation);
4790 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4791 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
4792 find mustExist(problem, interpretation, from);
4793 find mustExist(problem, interpretation, to);
4794 find mustInstanceOfEAttribute_class(problem,interpretation,from);
4795 find mustInstanceOfEDataType_class(problem,interpretation,to);
4796 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
4797 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
4798}
4799pattern refineRelation_references_reference_EAnnotation(
4800 problem:LogicProblem, interpretation:PartialInterpretation,
4801 relationIterpretation:PartialRelationInterpretation,
4802 from: DefinedElement, to: DefinedElement)
4803{
4804 find interpretation(problem,interpretation);
4805 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4806 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
4807 find mustExist(problem, interpretation, from);
4808 find mustExist(problem, interpretation, to);
4809 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
4810 find mustInstanceOfEObject_class(problem,interpretation,to);
4811 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
4812 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
4813}
4814pattern refineRelation_eSuperTypes_reference_EClass(
4815 problem:LogicProblem, interpretation:PartialInterpretation,
4816 relationIterpretation:PartialRelationInterpretation,
4817 from: DefinedElement, to: DefinedElement)
4818{
4819 find interpretation(problem,interpretation);
4820 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4821 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
4822 find mustExist(problem, interpretation, from);
4823 find mustExist(problem, interpretation, to);
4824 find mustInstanceOfEClass_class(problem,interpretation,from);
4825 find mustInstanceOfEClass_class(problem,interpretation,to);
4826 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
4827 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
4828}
4829pattern refineRelation_eAllAttributes_reference_EClass(
4830 problem:LogicProblem, interpretation:PartialInterpretation,
4831 relationIterpretation:PartialRelationInterpretation,
4832 from: DefinedElement, to: DefinedElement)
4833{
4834 find interpretation(problem,interpretation);
4835 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4836 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
4837 find mustExist(problem, interpretation, from);
4838 find mustExist(problem, interpretation, to);
4839 find mustInstanceOfEClass_class(problem,interpretation,from);
4840 find mustInstanceOfEAttribute_class(problem,interpretation,to);
4841 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
4842 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
4843}
4844pattern refineRelation_eAllReferences_reference_EClass(
4845 problem:LogicProblem, interpretation:PartialInterpretation,
4846 relationIterpretation:PartialRelationInterpretation,
4847 from: DefinedElement, to: DefinedElement)
4848{
4849 find interpretation(problem,interpretation);
4850 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4851 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
4852 find mustExist(problem, interpretation, from);
4853 find mustExist(problem, interpretation, to);
4854 find mustInstanceOfEClass_class(problem,interpretation,from);
4855 find mustInstanceOfEReference_class(problem,interpretation,to);
4856 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
4857 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
4858}
4859pattern refineRelation_eReferences_reference_EClass(
4860 problem:LogicProblem, interpretation:PartialInterpretation,
4861 relationIterpretation:PartialRelationInterpretation,
4862 from: DefinedElement, to: DefinedElement)
4863{
4864 find interpretation(problem,interpretation);
4865 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4866 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
4867 find mustExist(problem, interpretation, from);
4868 find mustExist(problem, interpretation, to);
4869 find mustInstanceOfEClass_class(problem,interpretation,from);
4870 find mustInstanceOfEReference_class(problem,interpretation,to);
4871 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
4872 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
4873}
4874pattern refineRelation_eAttributes_reference_EClass(
4875 problem:LogicProblem, interpretation:PartialInterpretation,
4876 relationIterpretation:PartialRelationInterpretation,
4877 from: DefinedElement, to: DefinedElement)
4878{
4879 find interpretation(problem,interpretation);
4880 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4881 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
4882 find mustExist(problem, interpretation, from);
4883 find mustExist(problem, interpretation, to);
4884 find mustInstanceOfEClass_class(problem,interpretation,from);
4885 find mustInstanceOfEAttribute_class(problem,interpretation,to);
4886 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
4887 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
4888}
4889pattern refineRelation_eAllContainments_reference_EClass(
4890 problem:LogicProblem, interpretation:PartialInterpretation,
4891 relationIterpretation:PartialRelationInterpretation,
4892 from: DefinedElement, to: DefinedElement)
4893{
4894 find interpretation(problem,interpretation);
4895 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4896 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
4897 find mustExist(problem, interpretation, from);
4898 find mustExist(problem, interpretation, to);
4899 find mustInstanceOfEClass_class(problem,interpretation,from);
4900 find mustInstanceOfEReference_class(problem,interpretation,to);
4901 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
4902 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
4903}
4904pattern refineRelation_eAllOperations_reference_EClass(
4905 problem:LogicProblem, interpretation:PartialInterpretation,
4906 relationIterpretation:PartialRelationInterpretation,
4907 from: DefinedElement, to: DefinedElement)
4908{
4909 find interpretation(problem,interpretation);
4910 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4911 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
4912 find mustExist(problem, interpretation, from);
4913 find mustExist(problem, interpretation, to);
4914 find mustInstanceOfEClass_class(problem,interpretation,from);
4915 find mustInstanceOfEOperation_class(problem,interpretation,to);
4916 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
4917 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
4918}
4919pattern refineRelation_eAllStructuralFeatures_reference_EClass(
4920 problem:LogicProblem, interpretation:PartialInterpretation,
4921 relationIterpretation:PartialRelationInterpretation,
4922 from: DefinedElement, to: DefinedElement)
4923{
4924 find interpretation(problem,interpretation);
4925 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4926 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
4927 find mustExist(problem, interpretation, from);
4928 find mustExist(problem, interpretation, to);
4929 find mustInstanceOfEClass_class(problem,interpretation,from);
4930 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
4931 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
4932 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
4933}
4934pattern refineRelation_eAllSuperTypes_reference_EClass(
4935 problem:LogicProblem, interpretation:PartialInterpretation,
4936 relationIterpretation:PartialRelationInterpretation,
4937 from: DefinedElement, to: DefinedElement)
4938{
4939 find interpretation(problem,interpretation);
4940 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4941 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
4942 find mustExist(problem, interpretation, from);
4943 find mustExist(problem, interpretation, to);
4944 find mustInstanceOfEClass_class(problem,interpretation,from);
4945 find mustInstanceOfEClass_class(problem,interpretation,to);
4946 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
4947 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
4948}
4949pattern refineRelation_eIDAttribute_reference_EClass(
4950 problem:LogicProblem, interpretation:PartialInterpretation,
4951 relationIterpretation:PartialRelationInterpretation,
4952 from: DefinedElement, to: DefinedElement)
4953{
4954 find interpretation(problem,interpretation);
4955 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4956 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
4957 find mustExist(problem, interpretation, from);
4958 find mustExist(problem, interpretation, to);
4959 find mustInstanceOfEClass_class(problem,interpretation,from);
4960 find mustInstanceOfEAttribute_class(problem,interpretation,to);
4961 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
4962 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
4963}
4964pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
4965 problem:LogicProblem, interpretation:PartialInterpretation,
4966 relationIterpretation:PartialRelationInterpretation,
4967 from: DefinedElement, to: DefinedElement)
4968{
4969 find interpretation(problem,interpretation);
4970 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4971 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
4972 find mustExist(problem, interpretation, from);
4973 find mustExist(problem, interpretation, to);
4974 find mustInstanceOfEClass_class(problem,interpretation,from);
4975 find mustInstanceOfEGenericType_class(problem,interpretation,to);
4976 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
4977 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
4978}
4979pattern refineRelation_eExceptions_reference_EOperation(
4980 problem:LogicProblem, interpretation:PartialInterpretation,
4981 relationIterpretation:PartialRelationInterpretation,
4982 from: DefinedElement, to: DefinedElement)
4983{
4984 find interpretation(problem,interpretation);
4985 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4986 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
4987 find mustExist(problem, interpretation, from);
4988 find mustExist(problem, interpretation, to);
4989 find mustInstanceOfEOperation_class(problem,interpretation,from);
4990 find mustInstanceOfEClassifier_class(problem,interpretation,to);
4991 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
4992 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
4993}
4994pattern refineRelation_eOpposite_reference_EReference(
4995 problem:LogicProblem, interpretation:PartialInterpretation,
4996 relationIterpretation:PartialRelationInterpretation,
4997 from: DefinedElement, to: DefinedElement)
4998{
4999 find interpretation(problem,interpretation);
5000 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5001 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
5002 find mustExist(problem, interpretation, from);
5003 find mustExist(problem, interpretation, to);
5004 find mustInstanceOfEReference_class(problem,interpretation,from);
5005 find mustInstanceOfEReference_class(problem,interpretation,to);
5006 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
5007 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
5008}
5009pattern refineRelation_eReferenceType_reference_EReference(
5010 problem:LogicProblem, interpretation:PartialInterpretation,
5011 relationIterpretation:PartialRelationInterpretation,
5012 from: DefinedElement, to: DefinedElement)
5013{
5014 find interpretation(problem,interpretation);
5015 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5016 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
5017 find mustExist(problem, interpretation, from);
5018 find mustExist(problem, interpretation, to);
5019 find mustInstanceOfEReference_class(problem,interpretation,from);
5020 find mustInstanceOfEClass_class(problem,interpretation,to);
5021 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
5022 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
5023}
5024pattern refineRelation_eKeys_reference_EReference(
5025 problem:LogicProblem, interpretation:PartialInterpretation,
5026 relationIterpretation:PartialRelationInterpretation,
5027 from: DefinedElement, to: DefinedElement)
5028{
5029 find interpretation(problem,interpretation);
5030 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5031 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
5032 find mustExist(problem, interpretation, from);
5033 find mustExist(problem, interpretation, to);
5034 find mustInstanceOfEReference_class(problem,interpretation,from);
5035 find mustInstanceOfEAttribute_class(problem,interpretation,to);
5036 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
5037 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
5038}
5039pattern refineRelation_eType_reference_ETypedElement(
5040 problem:LogicProblem, interpretation:PartialInterpretation,
5041 relationIterpretation:PartialRelationInterpretation,
5042 from: DefinedElement, to: DefinedElement)
5043{
5044 find interpretation(problem,interpretation);
5045 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5046 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
5047 find mustExist(problem, interpretation, from);
5048 find mustExist(problem, interpretation, to);
5049 find mustInstanceOfETypedElement_class(problem,interpretation,from);
5050 find mustInstanceOfEClassifier_class(problem,interpretation,to);
5051 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
5052 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
5053}
5054pattern refineRelation_eRawType_reference_EGenericType(
5055 problem:LogicProblem, interpretation:PartialInterpretation,
5056 relationIterpretation:PartialRelationInterpretation,
5057 from: DefinedElement, to: DefinedElement)
5058{
5059 find interpretation(problem,interpretation);
5060 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5061 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
5062 find mustExist(problem, interpretation, from);
5063 find mustExist(problem, interpretation, to);
5064 find mustInstanceOfEGenericType_class(problem,interpretation,from);
5065 find mustInstanceOfEClassifier_class(problem,interpretation,to);
5066 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
5067 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
5068}
5069pattern refineRelation_eTypeParameter_reference_EGenericType(
5070 problem:LogicProblem, interpretation:PartialInterpretation,
5071 relationIterpretation:PartialRelationInterpretation,
5072 from: DefinedElement, to: DefinedElement)
5073{
5074 find interpretation(problem,interpretation);
5075 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5076 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
5077 find mustExist(problem, interpretation, from);
5078 find mustExist(problem, interpretation, to);
5079 find mustInstanceOfEGenericType_class(problem,interpretation,from);
5080 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
5081 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
5082 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
5083}
5084pattern refineRelation_eClassifier_reference_EGenericType(
5085 problem:LogicProblem, interpretation:PartialInterpretation,
5086 relationIterpretation:PartialRelationInterpretation,
5087 from: DefinedElement, to: DefinedElement)
5088{
5089 find interpretation(problem,interpretation);
5090 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5091 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
5092 find mustExist(problem, interpretation, from);
5093 find mustExist(problem, interpretation, to);
5094 find mustInstanceOfEGenericType_class(problem,interpretation,from);
5095 find mustInstanceOfEClassifier_class(problem,interpretation,to);
5096 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
5097 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
5098}
5099pattern refineRelation_iD_attribute_EAttribute(
5100 problem:LogicProblem, interpretation:PartialInterpretation,
5101 relationIterpretation:PartialRelationInterpretation,
5102 from: DefinedElement, to: DefinedElement)
5103{
5104 find interpretation(problem,interpretation);
5105 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5106 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
5107 find mustExist(problem, interpretation, from);
5108 find mustExist(problem, interpretation, to);
5109 find mustInstanceOfEAttribute_class(problem,interpretation,from);
5110 BooleanElement(to);
5111 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
5112 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
5113}
5114pattern refineRelation_source_attribute_EAnnotation(
5115 problem:LogicProblem, interpretation:PartialInterpretation,
5116 relationIterpretation:PartialRelationInterpretation,
5117 from: DefinedElement, to: DefinedElement)
5118{
5119 find interpretation(problem,interpretation);
5120 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5121 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
5122 find mustExist(problem, interpretation, from);
5123 find mustExist(problem, interpretation, to);
5124 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
5125 StringElement(to);
5126 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
5127 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
5128}
5129pattern refineRelation_abstract_attribute_EClass(
5130 problem:LogicProblem, interpretation:PartialInterpretation,
5131 relationIterpretation:PartialRelationInterpretation,
5132 from: DefinedElement, to: DefinedElement)
5133{
5134 find interpretation(problem,interpretation);
5135 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5136 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
5137 find mustExist(problem, interpretation, from);
5138 find mustExist(problem, interpretation, to);
5139 find mustInstanceOfEClass_class(problem,interpretation,from);
5140 BooleanElement(to);
5141 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
5142 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
5143}
5144pattern refineRelation_interface_attribute_EClass(
5145 problem:LogicProblem, interpretation:PartialInterpretation,
5146 relationIterpretation:PartialRelationInterpretation,
5147 from: DefinedElement, to: DefinedElement)
5148{
5149 find interpretation(problem,interpretation);
5150 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5151 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
5152 find mustExist(problem, interpretation, from);
5153 find mustExist(problem, interpretation, to);
5154 find mustInstanceOfEClass_class(problem,interpretation,from);
5155 BooleanElement(to);
5156 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
5157 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
5158}
5159pattern refineRelation_instanceClassName_attribute_EClassifier(
5160 problem:LogicProblem, interpretation:PartialInterpretation,
5161 relationIterpretation:PartialRelationInterpretation,
5162 from: DefinedElement, to: DefinedElement)
5163{
5164 find interpretation(problem,interpretation);
5165 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5166 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
5167 find mustExist(problem, interpretation, from);
5168 find mustExist(problem, interpretation, to);
5169 find mustInstanceOfEClassifier_class(problem,interpretation,from);
5170 StringElement(to);
5171 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
5172 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
5173}
5174pattern refineRelation_instanceTypeName_attribute_EClassifier(
5175 problem:LogicProblem, interpretation:PartialInterpretation,
5176 relationIterpretation:PartialRelationInterpretation,
5177 from: DefinedElement, to: DefinedElement)
5178{
5179 find interpretation(problem,interpretation);
5180 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5181 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
5182 find mustExist(problem, interpretation, from);
5183 find mustExist(problem, interpretation, to);
5184 find mustInstanceOfEClassifier_class(problem,interpretation,from);
5185 StringElement(to);
5186 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
5187 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
5188}
5189pattern refineRelation_serializable_attribute_EDataType(
5190 problem:LogicProblem, interpretation:PartialInterpretation,
5191 relationIterpretation:PartialRelationInterpretation,
5192 from: DefinedElement, to: DefinedElement)
5193{
5194 find interpretation(problem,interpretation);
5195 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5196 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
5197 find mustExist(problem, interpretation, from);
5198 find mustExist(problem, interpretation, to);
5199 find mustInstanceOfEDataType_class(problem,interpretation,from);
5200 BooleanElement(to);
5201 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
5202 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
5203}
5204pattern refineRelation_value_attribute_EEnumLiteral(
5205 problem:LogicProblem, interpretation:PartialInterpretation,
5206 relationIterpretation:PartialRelationInterpretation,
5207 from: DefinedElement, to: DefinedElement)
5208{
5209 find interpretation(problem,interpretation);
5210 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5211 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
5212 find mustExist(problem, interpretation, from);
5213 find mustExist(problem, interpretation, to);
5214 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
5215 IntegerElement(to);
5216 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
5217 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
5218}
5219pattern refineRelation_literal_attribute_EEnumLiteral(
5220 problem:LogicProblem, interpretation:PartialInterpretation,
5221 relationIterpretation:PartialRelationInterpretation,
5222 from: DefinedElement, to: DefinedElement)
5223{
5224 find interpretation(problem,interpretation);
5225 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5226 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
5227 find mustExist(problem, interpretation, from);
5228 find mustExist(problem, interpretation, to);
5229 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
5230 StringElement(to);
5231 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
5232 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
5233}
5234pattern refineRelation_name_attribute_ENamedElement(
5235 problem:LogicProblem, interpretation:PartialInterpretation,
5236 relationIterpretation:PartialRelationInterpretation,
5237 from: DefinedElement, to: DefinedElement)
5238{
5239 find interpretation(problem,interpretation);
5240 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5241 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
5242 find mustExist(problem, interpretation, from);
5243 find mustExist(problem, interpretation, to);
5244 find mustInstanceOfENamedElement_class(problem,interpretation,from);
5245 StringElement(to);
5246 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
5247 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
5248}
5249pattern refineRelation_nsURI_attribute_EPackage(
5250 problem:LogicProblem, interpretation:PartialInterpretation,
5251 relationIterpretation:PartialRelationInterpretation,
5252 from: DefinedElement, to: DefinedElement)
5253{
5254 find interpretation(problem,interpretation);
5255 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5256 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
5257 find mustExist(problem, interpretation, from);
5258 find mustExist(problem, interpretation, to);
5259 find mustInstanceOfEPackage_class(problem,interpretation,from);
5260 StringElement(to);
5261 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
5262 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
5263}
5264pattern refineRelation_nsPrefix_attribute_EPackage(
5265 problem:LogicProblem, interpretation:PartialInterpretation,
5266 relationIterpretation:PartialRelationInterpretation,
5267 from: DefinedElement, to: DefinedElement)
5268{
5269 find interpretation(problem,interpretation);
5270 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5271 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
5272 find mustExist(problem, interpretation, from);
5273 find mustExist(problem, interpretation, to);
5274 find mustInstanceOfEPackage_class(problem,interpretation,from);
5275 StringElement(to);
5276 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
5277 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
5278}
5279pattern refineRelation_containment_attribute_EReference(
5280 problem:LogicProblem, interpretation:PartialInterpretation,
5281 relationIterpretation:PartialRelationInterpretation,
5282 from: DefinedElement, to: DefinedElement)
5283{
5284 find interpretation(problem,interpretation);
5285 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5286 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
5287 find mustExist(problem, interpretation, from);
5288 find mustExist(problem, interpretation, to);
5289 find mustInstanceOfEReference_class(problem,interpretation,from);
5290 BooleanElement(to);
5291 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
5292 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
5293}
5294pattern refineRelation_container_attribute_EReference(
5295 problem:LogicProblem, interpretation:PartialInterpretation,
5296 relationIterpretation:PartialRelationInterpretation,
5297 from: DefinedElement, to: DefinedElement)
5298{
5299 find interpretation(problem,interpretation);
5300 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5301 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
5302 find mustExist(problem, interpretation, from);
5303 find mustExist(problem, interpretation, to);
5304 find mustInstanceOfEReference_class(problem,interpretation,from);
5305 BooleanElement(to);
5306 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
5307 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
5308}
5309pattern refineRelation_resolveProxies_attribute_EReference(
5310 problem:LogicProblem, interpretation:PartialInterpretation,
5311 relationIterpretation:PartialRelationInterpretation,
5312 from: DefinedElement, to: DefinedElement)
5313{
5314 find interpretation(problem,interpretation);
5315 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5316 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
5317 find mustExist(problem, interpretation, from);
5318 find mustExist(problem, interpretation, to);
5319 find mustInstanceOfEReference_class(problem,interpretation,from);
5320 BooleanElement(to);
5321 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
5322 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
5323}
5324pattern refineRelation_changeable_attribute_EStructuralFeature(
5325 problem:LogicProblem, interpretation:PartialInterpretation,
5326 relationIterpretation:PartialRelationInterpretation,
5327 from: DefinedElement, to: DefinedElement)
5328{
5329 find interpretation(problem,interpretation);
5330 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5331 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
5332 find mustExist(problem, interpretation, from);
5333 find mustExist(problem, interpretation, to);
5334 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
5335 BooleanElement(to);
5336 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
5337 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
5338}
5339pattern refineRelation_volatile_attribute_EStructuralFeature(
5340 problem:LogicProblem, interpretation:PartialInterpretation,
5341 relationIterpretation:PartialRelationInterpretation,
5342 from: DefinedElement, to: DefinedElement)
5343{
5344 find interpretation(problem,interpretation);
5345 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5346 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
5347 find mustExist(problem, interpretation, from);
5348 find mustExist(problem, interpretation, to);
5349 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
5350 BooleanElement(to);
5351 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
5352 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
5353}
5354pattern refineRelation_transient_attribute_EStructuralFeature(
5355 problem:LogicProblem, interpretation:PartialInterpretation,
5356 relationIterpretation:PartialRelationInterpretation,
5357 from: DefinedElement, to: DefinedElement)
5358{
5359 find interpretation(problem,interpretation);
5360 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5361 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
5362 find mustExist(problem, interpretation, from);
5363 find mustExist(problem, interpretation, to);
5364 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
5365 BooleanElement(to);
5366 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
5367 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
5368}
5369pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
5370 problem:LogicProblem, interpretation:PartialInterpretation,
5371 relationIterpretation:PartialRelationInterpretation,
5372 from: DefinedElement, to: DefinedElement)
5373{
5374 find interpretation(problem,interpretation);
5375 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5376 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
5377 find mustExist(problem, interpretation, from);
5378 find mustExist(problem, interpretation, to);
5379 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
5380 StringElement(to);
5381 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
5382 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
5383}
5384pattern refineRelation_unsettable_attribute_EStructuralFeature(
5385 problem:LogicProblem, interpretation:PartialInterpretation,
5386 relationIterpretation:PartialRelationInterpretation,
5387 from: DefinedElement, to: DefinedElement)
5388{
5389 find interpretation(problem,interpretation);
5390 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5391 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
5392 find mustExist(problem, interpretation, from);
5393 find mustExist(problem, interpretation, to);
5394 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
5395 BooleanElement(to);
5396 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
5397 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
5398}
5399pattern refineRelation_derived_attribute_EStructuralFeature(
5400 problem:LogicProblem, interpretation:PartialInterpretation,
5401 relationIterpretation:PartialRelationInterpretation,
5402 from: DefinedElement, to: DefinedElement)
5403{
5404 find interpretation(problem,interpretation);
5405 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5406 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
5407 find mustExist(problem, interpretation, from);
5408 find mustExist(problem, interpretation, to);
5409 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
5410 BooleanElement(to);
5411 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
5412 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
5413}
5414pattern refineRelation_ordered_attribute_ETypedElement(
5415 problem:LogicProblem, interpretation:PartialInterpretation,
5416 relationIterpretation:PartialRelationInterpretation,
5417 from: DefinedElement, to: DefinedElement)
5418{
5419 find interpretation(problem,interpretation);
5420 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5421 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
5422 find mustExist(problem, interpretation, from);
5423 find mustExist(problem, interpretation, to);
5424 find mustInstanceOfETypedElement_class(problem,interpretation,from);
5425 BooleanElement(to);
5426 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
5427 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
5428}
5429pattern refineRelation_unique_attribute_ETypedElement(
5430 problem:LogicProblem, interpretation:PartialInterpretation,
5431 relationIterpretation:PartialRelationInterpretation,
5432 from: DefinedElement, to: DefinedElement)
5433{
5434 find interpretation(problem,interpretation);
5435 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5436 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
5437 find mustExist(problem, interpretation, from);
5438 find mustExist(problem, interpretation, to);
5439 find mustInstanceOfETypedElement_class(problem,interpretation,from);
5440 BooleanElement(to);
5441 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
5442 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
5443}
5444pattern refineRelation_lowerBound_attribute_ETypedElement(
5445 problem:LogicProblem, interpretation:PartialInterpretation,
5446 relationIterpretation:PartialRelationInterpretation,
5447 from: DefinedElement, to: DefinedElement)
5448{
5449 find interpretation(problem,interpretation);
5450 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5451 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
5452 find mustExist(problem, interpretation, from);
5453 find mustExist(problem, interpretation, to);
5454 find mustInstanceOfETypedElement_class(problem,interpretation,from);
5455 IntegerElement(to);
5456 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
5457 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
5458}
5459pattern refineRelation_upperBound_attribute_ETypedElement(
5460 problem:LogicProblem, interpretation:PartialInterpretation,
5461 relationIterpretation:PartialRelationInterpretation,
5462 from: DefinedElement, to: DefinedElement)
5463{
5464 find interpretation(problem,interpretation);
5465 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5466 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
5467 find mustExist(problem, interpretation, from);
5468 find mustExist(problem, interpretation, to);
5469 find mustInstanceOfETypedElement_class(problem,interpretation,from);
5470 IntegerElement(to);
5471 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
5472 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
5473}
5474pattern refineRelation_many_attribute_ETypedElement(
5475 problem:LogicProblem, interpretation:PartialInterpretation,
5476 relationIterpretation:PartialRelationInterpretation,
5477 from: DefinedElement, to: DefinedElement)
5478{
5479 find interpretation(problem,interpretation);
5480 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5481 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
5482 find mustExist(problem, interpretation, from);
5483 find mustExist(problem, interpretation, to);
5484 find mustInstanceOfETypedElement_class(problem,interpretation,from);
5485 BooleanElement(to);
5486 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
5487 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
5488}
5489pattern refineRelation_required_attribute_ETypedElement(
5490 problem:LogicProblem, interpretation:PartialInterpretation,
5491 relationIterpretation:PartialRelationInterpretation,
5492 from: DefinedElement, to: DefinedElement)
5493{
5494 find interpretation(problem,interpretation);
5495 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5496 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
5497 find mustExist(problem, interpretation, from);
5498 find mustExist(problem, interpretation, to);
5499 find mustInstanceOfETypedElement_class(problem,interpretation,from);
5500 BooleanElement(to);
5501 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
5502 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
5503}
5504pattern refineRelation_key_attribute_EStringToStringMapEntry(
5505 problem:LogicProblem, interpretation:PartialInterpretation,
5506 relationIterpretation:PartialRelationInterpretation,
5507 from: DefinedElement, to: DefinedElement)
5508{
5509 find interpretation(problem,interpretation);
5510 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5511 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
5512 find mustExist(problem, interpretation, from);
5513 find mustExist(problem, interpretation, to);
5514 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
5515 StringElement(to);
5516 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
5517 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
5518}
5519pattern refineRelation_value_attribute_EStringToStringMapEntry(
5520 problem:LogicProblem, interpretation:PartialInterpretation,
5521 relationIterpretation:PartialRelationInterpretation,
5522 from: DefinedElement, to: DefinedElement)
5523{
5524 find interpretation(problem,interpretation);
5525 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5526 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
5527 find mustExist(problem, interpretation, from);
5528 find mustExist(problem, interpretation, to);
5529 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
5530 StringElement(to);
5531 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
5532 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
5533}
5534import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
5535import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
5536import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
5537
5538//////////
5539// 0. Util
5540//////////
5541private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
5542 PartialInterpretation.problem(interpretation,problem);
5543}
5544
5545/////////////////////////
5546// 0.1 Existence
5547/////////////////////////
5548private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5549 find interpretation(problem,interpretation);
5550 LogicProblem.elements(problem,element);
5551} or {
5552 find interpretation(problem,interpretation);
5553 PartialInterpretation.newElements(interpretation,element);
5554}
5555
5556private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5557 find mustExist(problem,interpretation,element);
5558} or {
5559 find interpretation(problem,interpretation);
5560 neg find elementCloseWorld(element);
5561 PartialInterpretation.openWorldElements(interpretation,element);
5562}
5563
5564private pattern elementCloseWorld(element:DefinedElement) {
5565 PartialInterpretation.openWorldElements(i,element);
5566 PartialInterpretation.maxNewElements(i,0);
5567} or {
5568 Scope.targetTypeInterpretation(scope,interpretation);
5569 PartialTypeInterpratation.elements(interpretation,element);
5570 Scope.maxNewElements(scope,0);
5571}
5572
5573////////////////////////
5574// 0.2 Equivalence
5575////////////////////////
5576pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
5577 find mayExist(problem,interpretation,a);
5578 find mayExist(problem,interpretation,b);
5579 a == b;
5580}
5581
5582////////////////////////
5583// 0.3 Required Patterns by TypeIndexer
5584////////////////////////
5585private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
5586 find interpretation(problem,interpretation);
5587 LogicProblem.types(problem,type);
5588 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5589 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5590}
5591
5592private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
5593 find interpretation(problem,interpretation);
5594 LogicProblem.types(problem,type);
5595 TypeDefinition.elements(type,element);
5596} or {
5597 find interpretation(problem,interpretation);
5598 find typeInterpretation(problem,interpretation,type,typeInterpretation);
5599 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
5600}
5601
5602private pattern isPrimitive(element: PrimitiveElement) {
5603 PrimitiveElement(element);
5604}
5605
5606//////////
5607// 1. Problem-Specific Base Indexers
5608//////////
5609// 1.1 Type Indexers
5610//////////
5611// 1.1.1 primitive Type Indexers
5612//////////
5613
5614//////////
5615// 1.1.2 domain-specific Type Indexers
5616//////////
5617/**
5618 * An element must be an instance of type "EAttribute class".
5619 */
5620private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5621 Type.name(type,"EAttribute class");
5622 find directInstanceOf(problem,interpretation,element,type);
5623}
5624private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5625 find interpretation(problem,interpretation);
5626 PartialInterpretation.scopes(interpretation,scope);
5627 Scope.targetTypeInterpretation(scope,typeInterpretation);
5628 Scope.maxNewElements(scope,0);
5629 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5630 Type.name(type,"EAttribute class");
5631}
5632
5633/**
5634 * An element may be an instance of type "EAttribute class".
5635 */
5636private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5637{
5638 find interpretation(problem,interpretation);
5639 PartialInterpretation.newElements(interpretation,element);
5640 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5641 neg find mustInstanceOfEReference_class(problem,interpretation,element);
5642 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5643 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
5644 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5645 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5646 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
5647 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
5648 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5649 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5650 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5651 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
5652 neg find isPrimitive(element);
5653} or {
5654 find interpretation(problem,interpretation);
5655 PartialInterpretation.openWorldElements(interpretation,element);
5656 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5657 neg find mustInstanceOfEReference_class(problem,interpretation,element);
5658 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5659 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
5660 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5661 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5662 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
5663 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
5664 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5665 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5666 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5667 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
5668 neg find isPrimitive(element);
5669} or
5670{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
5671/**
5672 * An element must be an instance of type "EAnnotation class".
5673 */
5674private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5675 Type.name(type,"EAnnotation class");
5676 find directInstanceOf(problem,interpretation,element,type);
5677}
5678private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5679 find interpretation(problem,interpretation);
5680 PartialInterpretation.scopes(interpretation,scope);
5681 Scope.targetTypeInterpretation(scope,typeInterpretation);
5682 Scope.maxNewElements(scope,0);
5683 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5684 Type.name(type,"EAnnotation class");
5685}
5686
5687/**
5688 * An element may be an instance of type "EAnnotation class".
5689 */
5690private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5691{
5692 find interpretation(problem,interpretation);
5693 PartialInterpretation.newElements(interpretation,element);
5694 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
5695 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5696 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5697 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5698 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
5699 neg find isPrimitive(element);
5700} or {
5701 find interpretation(problem,interpretation);
5702 PartialInterpretation.openWorldElements(interpretation,element);
5703 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
5704 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5705 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5706 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5707 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
5708 neg find isPrimitive(element);
5709} or
5710{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
5711/**
5712 * An element must be an instance of type "EClass class".
5713 */
5714private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5715 Type.name(type,"EClass class");
5716 find directInstanceOf(problem,interpretation,element,type);
5717}
5718private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5719 find interpretation(problem,interpretation);
5720 PartialInterpretation.scopes(interpretation,scope);
5721 Scope.targetTypeInterpretation(scope,typeInterpretation);
5722 Scope.maxNewElements(scope,0);
5723 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5724 Type.name(type,"EClass class");
5725}
5726
5727/**
5728 * An element may be an instance of type "EClass class".
5729 */
5730private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5731{
5732 find interpretation(problem,interpretation);
5733 PartialInterpretation.newElements(interpretation,element);
5734 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5735 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5736 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5737 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5738 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
5739 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5740 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5741 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5742 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5743 neg find scopeDisallowsNewEClass_class(problem, interpretation);
5744 neg find isPrimitive(element);
5745} or {
5746 find interpretation(problem,interpretation);
5747 PartialInterpretation.openWorldElements(interpretation,element);
5748 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5749 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5750 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5751 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5752 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
5753 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5754 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5755 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5756 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5757 neg find scopeDisallowsNewEClass_class(problem, interpretation);
5758 neg find isPrimitive(element);
5759} or
5760{ find mustInstanceOfEClass_class(problem,interpretation,element); }
5761/**
5762 * An element must be an instance of type "EClassifier class".
5763 */
5764private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5765 Type.name(type,"EClassifier class");
5766 find directInstanceOf(problem,interpretation,element,type);
5767}
5768private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5769 find interpretation(problem,interpretation);
5770 PartialInterpretation.scopes(interpretation,scope);
5771 Scope.targetTypeInterpretation(scope,typeInterpretation);
5772 Scope.maxNewElements(scope,0);
5773 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5774 Type.name(type,"EClassifier class");
5775}
5776
5777/**
5778 * An element may be an instance of type "EClassifier class".
5779 */
5780private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5781{
5782 find interpretation(problem,interpretation);
5783 PartialInterpretation.newElements(interpretation,element);
5784 neg find mustInstanceOfEClass_class(problem,interpretation,element);
5785 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5786 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5787 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5788 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5789 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
5790 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5791 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5792 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5793 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5794 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
5795 neg find isPrimitive(element);
5796} or {
5797 find interpretation(problem,interpretation);
5798 PartialInterpretation.openWorldElements(interpretation,element);
5799 neg find mustInstanceOfEClass_class(problem,interpretation,element);
5800 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5801 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5802 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5803 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5804 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
5805 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5806 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5807 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5808 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5809 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
5810 neg find isPrimitive(element);
5811} or
5812{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
5813/**
5814 * An element must be an instance of type "EDataType class".
5815 */
5816private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5817 Type.name(type,"EDataType class");
5818 find directInstanceOf(problem,interpretation,element,type);
5819}
5820private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5821 find interpretation(problem,interpretation);
5822 PartialInterpretation.scopes(interpretation,scope);
5823 Scope.targetTypeInterpretation(scope,typeInterpretation);
5824 Scope.maxNewElements(scope,0);
5825 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5826 Type.name(type,"EDataType class");
5827}
5828
5829/**
5830 * An element may be an instance of type "EDataType class".
5831 */
5832private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5833{
5834 find interpretation(problem,interpretation);
5835 PartialInterpretation.newElements(interpretation,element);
5836 neg find mustInstanceOfEClass_class(problem,interpretation,element);
5837 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5838 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5839 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5840 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5841 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
5842 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5843 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5844 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5845 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5846 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
5847 neg find isPrimitive(element);
5848} or {
5849 find interpretation(problem,interpretation);
5850 PartialInterpretation.openWorldElements(interpretation,element);
5851 neg find mustInstanceOfEClass_class(problem,interpretation,element);
5852 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5853 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5854 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5855 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5856 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
5857 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5858 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5859 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5860 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5861 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
5862 neg find isPrimitive(element);
5863} or
5864{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
5865/**
5866 * An element must be an instance of type "EEnum class".
5867 */
5868private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5869 Type.name(type,"EEnum class");
5870 find directInstanceOf(problem,interpretation,element,type);
5871}
5872private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5873 find interpretation(problem,interpretation);
5874 PartialInterpretation.scopes(interpretation,scope);
5875 Scope.targetTypeInterpretation(scope,typeInterpretation);
5876 Scope.maxNewElements(scope,0);
5877 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5878 Type.name(type,"EEnum class");
5879}
5880
5881/**
5882 * An element may be an instance of type "EEnum class".
5883 */
5884private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5885{
5886 find interpretation(problem,interpretation);
5887 PartialInterpretation.newElements(interpretation,element);
5888 neg find mustInstanceOfEClass_class(problem,interpretation,element);
5889 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5890 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5891 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5892 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5893 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5894 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5895 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5896 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5897 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
5898 neg find isPrimitive(element);
5899} or {
5900 find interpretation(problem,interpretation);
5901 PartialInterpretation.openWorldElements(interpretation,element);
5902 neg find mustInstanceOfEClass_class(problem,interpretation,element);
5903 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5904 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5905 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5906 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5907 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5908 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5909 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
5910 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5911 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
5912 neg find isPrimitive(element);
5913} or
5914{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
5915/**
5916 * An element must be an instance of type "EEnumLiteral class".
5917 */
5918private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5919 Type.name(type,"EEnumLiteral class");
5920 find directInstanceOf(problem,interpretation,element,type);
5921}
5922private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5923 find interpretation(problem,interpretation);
5924 PartialInterpretation.scopes(interpretation,scope);
5925 Scope.targetTypeInterpretation(scope,typeInterpretation);
5926 Scope.maxNewElements(scope,0);
5927 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5928 Type.name(type,"EEnumLiteral class");
5929}
5930
5931/**
5932 * An element may be an instance of type "EEnumLiteral class".
5933 */
5934private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5935{
5936 find interpretation(problem,interpretation);
5937 PartialInterpretation.newElements(interpretation,element);
5938 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5939 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5940 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5941 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
5942 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5943 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5944 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5945 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5946 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
5947 neg find isPrimitive(element);
5948} or {
5949 find interpretation(problem,interpretation);
5950 PartialInterpretation.openWorldElements(interpretation,element);
5951 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
5952 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5953 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5954 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
5955 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
5956 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
5957 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5958 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
5959 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
5960 neg find isPrimitive(element);
5961} or
5962{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
5963/**
5964 * An element must be an instance of type "EModelElement class".
5965 */
5966private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5967 Type.name(type,"EModelElement class");
5968 find directInstanceOf(problem,interpretation,element,type);
5969}
5970private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5971 find interpretation(problem,interpretation);
5972 PartialInterpretation.scopes(interpretation,scope);
5973 Scope.targetTypeInterpretation(scope,typeInterpretation);
5974 Scope.maxNewElements(scope,0);
5975 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5976 Type.name(type,"EModelElement class");
5977}
5978
5979/**
5980 * An element may be an instance of type "EModelElement class".
5981 */
5982private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5983{
5984 find interpretation(problem,interpretation);
5985 PartialInterpretation.newElements(interpretation,element);
5986 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
5987 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5988 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5989 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
5990 neg find mustInstanceOfEObject_class(problem,interpretation,element);
5991 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
5992 neg find isPrimitive(element);
5993} or {
5994 find interpretation(problem,interpretation);
5995 PartialInterpretation.openWorldElements(interpretation,element);
5996 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
5997 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
5998 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
5999 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
6000 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6001 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
6002 neg find isPrimitive(element);
6003} or
6004{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
6005/**
6006 * An element must be an instance of type "ENamedElement class".
6007 */
6008private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6009 Type.name(type,"ENamedElement class");
6010 find directInstanceOf(problem,interpretation,element,type);
6011}
6012private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6013 find interpretation(problem,interpretation);
6014 PartialInterpretation.scopes(interpretation,scope);
6015 Scope.targetTypeInterpretation(scope,typeInterpretation);
6016 Scope.maxNewElements(scope,0);
6017 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6018 Type.name(type,"ENamedElement class");
6019}
6020
6021/**
6022 * An element may be an instance of type "ENamedElement class".
6023 */
6024private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6025{
6026 find interpretation(problem,interpretation);
6027 PartialInterpretation.newElements(interpretation,element);
6028 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6029 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
6030 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6031 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6032 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6033 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
6034 neg find isPrimitive(element);
6035} or {
6036 find interpretation(problem,interpretation);
6037 PartialInterpretation.openWorldElements(interpretation,element);
6038 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6039 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
6040 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6041 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6042 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6043 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
6044 neg find isPrimitive(element);
6045} or
6046{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
6047/**
6048 * An element must be an instance of type "EObject class".
6049 */
6050private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6051 Type.name(type,"EObject class");
6052 find directInstanceOf(problem,interpretation,element,type);
6053}
6054private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6055 find interpretation(problem,interpretation);
6056 PartialInterpretation.scopes(interpretation,scope);
6057 Scope.targetTypeInterpretation(scope,typeInterpretation);
6058 Scope.maxNewElements(scope,0);
6059 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6060 Type.name(type,"EObject class");
6061}
6062
6063/**
6064 * An element may be an instance of type "EObject class".
6065 */
6066private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6067{
6068 find interpretation(problem,interpretation);
6069 PartialInterpretation.newElements(interpretation,element);
6070 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6071 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6072 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
6073 neg find scopeDisallowsNewEObject_class(problem, interpretation);
6074 neg find isPrimitive(element);
6075} or {
6076 find interpretation(problem,interpretation);
6077 PartialInterpretation.openWorldElements(interpretation,element);
6078 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6079 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6080 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
6081 neg find scopeDisallowsNewEObject_class(problem, interpretation);
6082 neg find isPrimitive(element);
6083} or
6084{ find mustInstanceOfEObject_class(problem,interpretation,element); }
6085/**
6086 * An element must be an instance of type "EOperation class".
6087 */
6088private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6089 Type.name(type,"EOperation class");
6090 find directInstanceOf(problem,interpretation,element,type);
6091}
6092private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6093 find interpretation(problem,interpretation);
6094 PartialInterpretation.scopes(interpretation,scope);
6095 Scope.targetTypeInterpretation(scope,typeInterpretation);
6096 Scope.maxNewElements(scope,0);
6097 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6098 Type.name(type,"EOperation class");
6099}
6100
6101/**
6102 * An element may be an instance of type "EOperation class".
6103 */
6104private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6105{
6106 find interpretation(problem,interpretation);
6107 PartialInterpretation.newElements(interpretation,element);
6108 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6109 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6110 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6111 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6112 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6113 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
6114 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6115 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6116 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
6117 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6118 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
6119 neg find isPrimitive(element);
6120} or {
6121 find interpretation(problem,interpretation);
6122 PartialInterpretation.openWorldElements(interpretation,element);
6123 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6124 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6125 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6126 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6127 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6128 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
6129 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6130 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6131 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
6132 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6133 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
6134 neg find isPrimitive(element);
6135} or
6136{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
6137/**
6138 * An element must be an instance of type "EPackage class".
6139 */
6140private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6141 Type.name(type,"EPackage class");
6142 find directInstanceOf(problem,interpretation,element,type);
6143}
6144private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6145 find interpretation(problem,interpretation);
6146 PartialInterpretation.scopes(interpretation,scope);
6147 Scope.targetTypeInterpretation(scope,typeInterpretation);
6148 Scope.maxNewElements(scope,0);
6149 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6150 Type.name(type,"EPackage class");
6151}
6152
6153/**
6154 * An element may be an instance of type "EPackage class".
6155 */
6156private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6157{
6158 find interpretation(problem,interpretation);
6159 PartialInterpretation.newElements(interpretation,element);
6160 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6161 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
6162 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6163 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6164 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
6165 neg find isPrimitive(element);
6166} or {
6167 find interpretation(problem,interpretation);
6168 PartialInterpretation.openWorldElements(interpretation,element);
6169 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6170 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
6171 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6172 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6173 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
6174 neg find isPrimitive(element);
6175} or
6176{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
6177/**
6178 * An element must be an instance of type "EParameter class".
6179 */
6180private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6181 Type.name(type,"EParameter class");
6182 find directInstanceOf(problem,interpretation,element,type);
6183}
6184private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6185 find interpretation(problem,interpretation);
6186 PartialInterpretation.scopes(interpretation,scope);
6187 Scope.targetTypeInterpretation(scope,typeInterpretation);
6188 Scope.maxNewElements(scope,0);
6189 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6190 Type.name(type,"EParameter class");
6191}
6192
6193/**
6194 * An element may be an instance of type "EParameter class".
6195 */
6196private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6197{
6198 find interpretation(problem,interpretation);
6199 PartialInterpretation.newElements(interpretation,element);
6200 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6201 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6202 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6203 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6204 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6205 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
6206 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6207 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6208 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
6209 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6210 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
6211 neg find isPrimitive(element);
6212} or {
6213 find interpretation(problem,interpretation);
6214 PartialInterpretation.openWorldElements(interpretation,element);
6215 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6216 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6217 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6218 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6219 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6220 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
6221 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6222 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6223 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
6224 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6225 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
6226 neg find isPrimitive(element);
6227} or
6228{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
6229/**
6230 * An element must be an instance of type "EReference class".
6231 */
6232private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6233 Type.name(type,"EReference class");
6234 find directInstanceOf(problem,interpretation,element,type);
6235}
6236private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6237 find interpretation(problem,interpretation);
6238 PartialInterpretation.scopes(interpretation,scope);
6239 Scope.targetTypeInterpretation(scope,typeInterpretation);
6240 Scope.maxNewElements(scope,0);
6241 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6242 Type.name(type,"EReference class");
6243}
6244
6245/**
6246 * An element may be an instance of type "EReference class".
6247 */
6248private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6249{
6250 find interpretation(problem,interpretation);
6251 PartialInterpretation.newElements(interpretation,element);
6252 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6253 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6254 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6255 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6256 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6257 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
6258 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
6259 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6260 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6261 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
6262 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6263 neg find scopeDisallowsNewEReference_class(problem, interpretation);
6264 neg find isPrimitive(element);
6265} or {
6266 find interpretation(problem,interpretation);
6267 PartialInterpretation.openWorldElements(interpretation,element);
6268 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6269 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6270 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6271 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6272 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6273 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
6274 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
6275 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6276 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6277 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
6278 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6279 neg find scopeDisallowsNewEReference_class(problem, interpretation);
6280 neg find isPrimitive(element);
6281} or
6282{ find mustInstanceOfEReference_class(problem,interpretation,element); }
6283/**
6284 * An element must be an instance of type "EStructuralFeature class".
6285 */
6286private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6287 Type.name(type,"EStructuralFeature class");
6288 find directInstanceOf(problem,interpretation,element,type);
6289}
6290private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6291 find interpretation(problem,interpretation);
6292 PartialInterpretation.scopes(interpretation,scope);
6293 Scope.targetTypeInterpretation(scope,typeInterpretation);
6294 Scope.maxNewElements(scope,0);
6295 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6296 Type.name(type,"EStructuralFeature class");
6297}
6298
6299/**
6300 * An element may be an instance of type "EStructuralFeature class".
6301 */
6302private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6303{
6304 find interpretation(problem,interpretation);
6305 PartialInterpretation.newElements(interpretation,element);
6306 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6307 neg find mustInstanceOfEReference_class(problem,interpretation,element);
6308 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6309 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6310 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6311 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6312 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
6313 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
6314 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6315 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6316 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6317 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
6318 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
6319 neg find isPrimitive(element);
6320} or {
6321 find interpretation(problem,interpretation);
6322 PartialInterpretation.openWorldElements(interpretation,element);
6323 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6324 neg find mustInstanceOfEReference_class(problem,interpretation,element);
6325 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6326 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6327 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6328 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6329 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
6330 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
6331 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6332 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6333 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6334 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
6335 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
6336 neg find isPrimitive(element);
6337} or
6338{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
6339/**
6340 * An element must be an instance of type "ETypedElement class".
6341 */
6342private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6343 Type.name(type,"ETypedElement class");
6344 find directInstanceOf(problem,interpretation,element,type);
6345}
6346private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6347 find interpretation(problem,interpretation);
6348 PartialInterpretation.scopes(interpretation,scope);
6349 Scope.targetTypeInterpretation(scope,typeInterpretation);
6350 Scope.maxNewElements(scope,0);
6351 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6352 Type.name(type,"ETypedElement class");
6353}
6354
6355/**
6356 * An element may be an instance of type "ETypedElement class".
6357 */
6358private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6359{
6360 find interpretation(problem,interpretation);
6361 PartialInterpretation.newElements(interpretation,element);
6362 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6363 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6364 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6365 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6366 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6367 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
6368 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
6369 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6370 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6371 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
6372 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6373 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
6374 neg find isPrimitive(element);
6375} or {
6376 find interpretation(problem,interpretation);
6377 PartialInterpretation.openWorldElements(interpretation,element);
6378 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6379 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6380 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6381 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6382 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6383 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
6384 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
6385 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6386 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6387 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
6388 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6389 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
6390 neg find isPrimitive(element);
6391} or
6392{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
6393/**
6394 * An element must be an instance of type "EStringToStringMapEntry class".
6395 */
6396private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6397 Type.name(type,"EStringToStringMapEntry class");
6398 find directInstanceOf(problem,interpretation,element,type);
6399}
6400private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6401 find interpretation(problem,interpretation);
6402 PartialInterpretation.scopes(interpretation,scope);
6403 Scope.targetTypeInterpretation(scope,typeInterpretation);
6404 Scope.maxNewElements(scope,0);
6405 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6406 Type.name(type,"EStringToStringMapEntry class");
6407}
6408
6409/**
6410 * An element may be an instance of type "EStringToStringMapEntry class".
6411 */
6412private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6413{
6414 find interpretation(problem,interpretation);
6415 PartialInterpretation.newElements(interpretation,element);
6416 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6417 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
6418 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6419 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
6420 neg find isPrimitive(element);
6421} or {
6422 find interpretation(problem,interpretation);
6423 PartialInterpretation.openWorldElements(interpretation,element);
6424 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6425 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
6426 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6427 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
6428 neg find isPrimitive(element);
6429} or
6430{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
6431/**
6432 * An element must be an instance of type "EGenericType class".
6433 */
6434private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6435 Type.name(type,"EGenericType class");
6436 find directInstanceOf(problem,interpretation,element,type);
6437}
6438private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6439 find interpretation(problem,interpretation);
6440 PartialInterpretation.scopes(interpretation,scope);
6441 Scope.targetTypeInterpretation(scope,typeInterpretation);
6442 Scope.maxNewElements(scope,0);
6443 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6444 Type.name(type,"EGenericType class");
6445}
6446
6447/**
6448 * An element may be an instance of type "EGenericType class".
6449 */
6450private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6451{
6452 find interpretation(problem,interpretation);
6453 PartialInterpretation.newElements(interpretation,element);
6454 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6455 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
6456 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6457 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
6458 neg find isPrimitive(element);
6459} or {
6460 find interpretation(problem,interpretation);
6461 PartialInterpretation.openWorldElements(interpretation,element);
6462 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6463 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
6464 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6465 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
6466 neg find isPrimitive(element);
6467} or
6468{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
6469/**
6470 * An element must be an instance of type "ETypeParameter class".
6471 */
6472private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6473 Type.name(type,"ETypeParameter class");
6474 find directInstanceOf(problem,interpretation,element,type);
6475}
6476private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6477 find interpretation(problem,interpretation);
6478 PartialInterpretation.scopes(interpretation,scope);
6479 Scope.targetTypeInterpretation(scope,typeInterpretation);
6480 Scope.maxNewElements(scope,0);
6481 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6482 Type.name(type,"ETypeParameter class");
6483}
6484
6485/**
6486 * An element may be an instance of type "ETypeParameter class".
6487 */
6488private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6489{
6490 find interpretation(problem,interpretation);
6491 PartialInterpretation.newElements(interpretation,element);
6492 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6493 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6494 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6495 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6496 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6497 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6498 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6499 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
6500 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
6501 neg find isPrimitive(element);
6502} or {
6503 find interpretation(problem,interpretation);
6504 PartialInterpretation.openWorldElements(interpretation,element);
6505 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6506 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6507 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6508 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6509 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6510 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6511 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6512 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
6513 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
6514 neg find isPrimitive(element);
6515} or
6516{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
6517/**
6518 * An element must be an instance of type "EModelElement class DefinedPart".
6519 */
6520private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6521 Type.name(type,"EModelElement class DefinedPart");
6522 find directInstanceOf(problem,interpretation,element,type);
6523}
6524private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
6525 find interpretation(problem,interpretation);
6526 PartialInterpretation.scopes(interpretation,scope);
6527 Scope.targetTypeInterpretation(scope,typeInterpretation);
6528 Scope.maxNewElements(scope,0);
6529 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6530 Type.name(type,"EModelElement class DefinedPart");
6531}
6532
6533/**
6534 * An element may be an instance of type "EModelElement class DefinedPart".
6535 */
6536private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6537{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
6538/**
6539 * An element must be an instance of type "EModelElement class UndefinedPart".
6540 */
6541private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6542 Type.name(type,"EModelElement class UndefinedPart");
6543 find directInstanceOf(problem,interpretation,element,type);
6544}
6545private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
6546 find interpretation(problem,interpretation);
6547 PartialInterpretation.scopes(interpretation,scope);
6548 Scope.targetTypeInterpretation(scope,typeInterpretation);
6549 Scope.maxNewElements(scope,0);
6550 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6551 Type.name(type,"EModelElement class UndefinedPart");
6552}
6553
6554/**
6555 * An element may be an instance of type "EModelElement class UndefinedPart".
6556 */
6557private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6558{
6559 find interpretation(problem,interpretation);
6560 PartialInterpretation.newElements(interpretation,element);
6561 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
6562 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6563 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6564 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6565 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6566 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
6567 neg find isPrimitive(element);
6568} or {
6569 find interpretation(problem,interpretation);
6570 PartialInterpretation.openWorldElements(interpretation,element);
6571 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
6572 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6573 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6574 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6575 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6576 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
6577 neg find isPrimitive(element);
6578} or
6579{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
6580/**
6581 * An element must be an instance of type "ENamedElement class DefinedPart".
6582 */
6583private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6584 Type.name(type,"ENamedElement class DefinedPart");
6585 find directInstanceOf(problem,interpretation,element,type);
6586}
6587private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
6588 find interpretation(problem,interpretation);
6589 PartialInterpretation.scopes(interpretation,scope);
6590 Scope.targetTypeInterpretation(scope,typeInterpretation);
6591 Scope.maxNewElements(scope,0);
6592 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6593 Type.name(type,"ENamedElement class DefinedPart");
6594}
6595
6596/**
6597 * An element may be an instance of type "ENamedElement class DefinedPart".
6598 */
6599private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6600{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
6601/**
6602 * An element must be an instance of type "ENamedElement class UndefinedPart".
6603 */
6604private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6605 Type.name(type,"ENamedElement class UndefinedPart");
6606 find directInstanceOf(problem,interpretation,element,type);
6607}
6608private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
6609 find interpretation(problem,interpretation);
6610 PartialInterpretation.scopes(interpretation,scope);
6611 Scope.targetTypeInterpretation(scope,typeInterpretation);
6612 Scope.maxNewElements(scope,0);
6613 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6614 Type.name(type,"ENamedElement class UndefinedPart");
6615}
6616
6617/**
6618 * An element may be an instance of type "ENamedElement class UndefinedPart".
6619 */
6620private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6621{
6622 find interpretation(problem,interpretation);
6623 PartialInterpretation.newElements(interpretation,element);
6624 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6625 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6626 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6627 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6628 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6629 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6630 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6631 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6632 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
6633 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
6634 neg find isPrimitive(element);
6635} or {
6636 find interpretation(problem,interpretation);
6637 PartialInterpretation.openWorldElements(interpretation,element);
6638 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6639 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6640 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6641 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6642 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6643 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
6644 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6645 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6646 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
6647 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
6648 neg find isPrimitive(element);
6649} or
6650{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
6651/**
6652 * An element must be an instance of type "EPackage class DefinedPart".
6653 */
6654private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6655 Type.name(type,"EPackage class DefinedPart");
6656 find directInstanceOf(problem,interpretation,element,type);
6657}
6658private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
6659 find interpretation(problem,interpretation);
6660 PartialInterpretation.scopes(interpretation,scope);
6661 Scope.targetTypeInterpretation(scope,typeInterpretation);
6662 Scope.maxNewElements(scope,0);
6663 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6664 Type.name(type,"EPackage class DefinedPart");
6665}
6666
6667/**
6668 * An element may be an instance of type "EPackage class DefinedPart".
6669 */
6670private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6671{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
6672/**
6673 * An element must be an instance of type "EPackage class UndefinedPart".
6674 */
6675private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6676 Type.name(type,"EPackage class UndefinedPart");
6677 find directInstanceOf(problem,interpretation,element,type);
6678}
6679private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
6680 find interpretation(problem,interpretation);
6681 PartialInterpretation.scopes(interpretation,scope);
6682 Scope.targetTypeInterpretation(scope,typeInterpretation);
6683 Scope.maxNewElements(scope,0);
6684 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6685 Type.name(type,"EPackage class UndefinedPart");
6686}
6687
6688/**
6689 * An element may be an instance of type "EPackage class UndefinedPart".
6690 */
6691private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6692{
6693 find interpretation(problem,interpretation);
6694 PartialInterpretation.newElements(interpretation,element);
6695 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6696 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6697 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6698 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6699 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6700 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6701 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6702 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
6703 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
6704 neg find isPrimitive(element);
6705} or {
6706 find interpretation(problem,interpretation);
6707 PartialInterpretation.openWorldElements(interpretation,element);
6708 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
6709 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
6710 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
6711 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
6712 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
6713 neg find mustInstanceOfEObject_class(problem,interpretation,element);
6714 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
6715 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
6716 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
6717 neg find isPrimitive(element);
6718} or
6719{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
6720
6721//////////
6722// 1.2 Relation Declaration Indexers
6723//////////
6724/**
6725 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
6726 */
6727private pattern mustInRelationeAttributeType_reference_EAttribute(
6728 problem:LogicProblem, interpretation:PartialInterpretation,
6729 source: DefinedElement, target:DefinedElement)
6730{
6731 find interpretation(problem,interpretation);
6732 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6733 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
6734 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6735 BinaryElementRelationLink.param1(link,source);
6736 BinaryElementRelationLink.param2(link,target);
6737}
6738/**
6739 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
6740 */
6741private pattern mayInRelationeAttributeType_reference_EAttribute(
6742 problem:LogicProblem, interpretation:PartialInterpretation,
6743 source: DefinedElement, target:DefinedElement)
6744{
6745 find interpretation(problem,interpretation);
6746 // The two endpoint of the link have to exist
6747 find mayExist(problem, interpretation, source);
6748 find mayExist(problem, interpretation, target);
6749 // Type consistency
6750 find mayInstanceOfEAttribute_class(problem,interpretation,source);
6751 find mayInstanceOfEDataType_class(problem,interpretation,target);
6752 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6753 // the upper bound of the multiplicity should be considered.
6754 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
6755 check(numberOfExistingReferences < 1);
6756} or {
6757 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
6758}
6759/**
6760 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
6761 */
6762private pattern mustInRelationdetails_reference_EAnnotation(
6763 problem:LogicProblem, interpretation:PartialInterpretation,
6764 source: DefinedElement, target:DefinedElement)
6765{
6766 find interpretation(problem,interpretation);
6767 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6768 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
6769 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6770 BinaryElementRelationLink.param1(link,source);
6771 BinaryElementRelationLink.param2(link,target);
6772}
6773/**
6774 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
6775 */
6776private pattern mayInRelationdetails_reference_EAnnotation(
6777 problem:LogicProblem, interpretation:PartialInterpretation,
6778 source: DefinedElement, target:DefinedElement)
6779{
6780 find interpretation(problem,interpretation);
6781 // The two endpoint of the link have to exist
6782 find mayExist(problem, interpretation, source);
6783 find mayExist(problem, interpretation, target);
6784 // Type consistency
6785 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
6786 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
6787 // The reference is containment, then a new reference cannot be create if:
6788 // 1. Multiple parents
6789 neg find mustContains4(problem,interpretation,_,target);
6790 // 2. Circle in the containment hierarchy
6791 neg find mustTransitiveContains(source,target);
6792} or {
6793 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
6794}
6795/**
6796 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
6797 */
6798private pattern mustInRelationeModelElement_reference_EAnnotation(
6799 problem:LogicProblem, interpretation:PartialInterpretation,
6800 source: DefinedElement, target:DefinedElement)
6801{
6802 find interpretation(problem,interpretation);
6803 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6804 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
6805 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6806 BinaryElementRelationLink.param1(link,source);
6807 BinaryElementRelationLink.param2(link,target);
6808}
6809/**
6810 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
6811 */
6812private pattern mayInRelationeModelElement_reference_EAnnotation(
6813 problem:LogicProblem, interpretation:PartialInterpretation,
6814 source: DefinedElement, target:DefinedElement)
6815{
6816 find interpretation(problem,interpretation);
6817 // The two endpoint of the link have to exist
6818 find mayExist(problem, interpretation, source);
6819 find mayExist(problem, interpretation, target);
6820 // Type consistency
6821 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
6822 find mayInstanceOfEModelElement_class(problem,interpretation,target);
6823 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6824 // the upper bound of the multiplicity should be considered.
6825 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
6826 check(numberOfExistingReferences < 1);
6827 // The eOpposite of the reference is containment, then a referene cannot be created if
6828 // 1. Multiple parents
6829 neg find mustContains4(problem,interpretation,source,_);
6830 // 2. Circle in the containment hierarchy
6831 neg find mustTransitiveContains(source,target);
6832} or {
6833 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
6834}
6835/**
6836 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
6837 */
6838private pattern mustInRelationcontents_reference_EAnnotation(
6839 problem:LogicProblem, interpretation:PartialInterpretation,
6840 source: DefinedElement, target:DefinedElement)
6841{
6842 find interpretation(problem,interpretation);
6843 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6844 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
6845 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6846 BinaryElementRelationLink.param1(link,source);
6847 BinaryElementRelationLink.param2(link,target);
6848}
6849/**
6850 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
6851 */
6852private pattern mayInRelationcontents_reference_EAnnotation(
6853 problem:LogicProblem, interpretation:PartialInterpretation,
6854 source: DefinedElement, target:DefinedElement)
6855{
6856 find interpretation(problem,interpretation);
6857 // The two endpoint of the link have to exist
6858 find mayExist(problem, interpretation, source);
6859 find mayExist(problem, interpretation, target);
6860 // Type consistency
6861 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
6862 find mayInstanceOfEObject_class(problem,interpretation,target);
6863 // The reference is containment, then a new reference cannot be create if:
6864 // 1. Multiple parents
6865 neg find mustContains4(problem,interpretation,_,target);
6866 // 2. Circle in the containment hierarchy
6867 neg find mustTransitiveContains(source,target);
6868} or {
6869 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
6870}
6871/**
6872 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
6873 */
6874private pattern mustInRelationreferences_reference_EAnnotation(
6875 problem:LogicProblem, interpretation:PartialInterpretation,
6876 source: DefinedElement, target:DefinedElement)
6877{
6878 find interpretation(problem,interpretation);
6879 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6880 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
6881 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6882 BinaryElementRelationLink.param1(link,source);
6883 BinaryElementRelationLink.param2(link,target);
6884}
6885/**
6886 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
6887 */
6888private pattern mayInRelationreferences_reference_EAnnotation(
6889 problem:LogicProblem, interpretation:PartialInterpretation,
6890 source: DefinedElement, target:DefinedElement)
6891{
6892 find interpretation(problem,interpretation);
6893 // The two endpoint of the link have to exist
6894 find mayExist(problem, interpretation, source);
6895 find mayExist(problem, interpretation, target);
6896 // Type consistency
6897 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
6898 find mayInstanceOfEObject_class(problem,interpretation,target);
6899} or {
6900 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
6901}
6902/**
6903 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
6904 */
6905private pattern mustInRelationeSuperTypes_reference_EClass(
6906 problem:LogicProblem, interpretation:PartialInterpretation,
6907 source: DefinedElement, target:DefinedElement)
6908{
6909 find interpretation(problem,interpretation);
6910 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6911 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
6912 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6913 BinaryElementRelationLink.param1(link,source);
6914 BinaryElementRelationLink.param2(link,target);
6915}
6916/**
6917 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
6918 */
6919private pattern mayInRelationeSuperTypes_reference_EClass(
6920 problem:LogicProblem, interpretation:PartialInterpretation,
6921 source: DefinedElement, target:DefinedElement)
6922{
6923 find interpretation(problem,interpretation);
6924 // The two endpoint of the link have to exist
6925 find mayExist(problem, interpretation, source);
6926 find mayExist(problem, interpretation, target);
6927 // Type consistency
6928 find mayInstanceOfEClass_class(problem,interpretation,source);
6929 find mayInstanceOfEClass_class(problem,interpretation,target);
6930} or {
6931 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
6932}
6933/**
6934 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
6935 */
6936private pattern mustInRelationeOperations_reference_EClass(
6937 problem:LogicProblem, interpretation:PartialInterpretation,
6938 source: DefinedElement, target:DefinedElement)
6939{
6940 find interpretation(problem,interpretation);
6941 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6942 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
6943 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6944 BinaryElementRelationLink.param1(link,source);
6945 BinaryElementRelationLink.param2(link,target);
6946}
6947/**
6948 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
6949 */
6950private pattern mayInRelationeOperations_reference_EClass(
6951 problem:LogicProblem, interpretation:PartialInterpretation,
6952 source: DefinedElement, target:DefinedElement)
6953{
6954 find interpretation(problem,interpretation);
6955 // The two endpoint of the link have to exist
6956 find mayExist(problem, interpretation, source);
6957 find mayExist(problem, interpretation, target);
6958 // Type consistency
6959 find mayInstanceOfEClass_class(problem,interpretation,source);
6960 find mayInstanceOfEOperation_class(problem,interpretation,target);
6961 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
6962 // the upper bound of the opposite reference multiplicity should be considered.
6963 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
6964 check(numberOfExistingOppositeReferences < 1);
6965 // The reference is containment, then a new reference cannot be create if:
6966 // 1. Multiple parents
6967 neg find mustContains4(problem,interpretation,_,target);
6968 // 2. Circle in the containment hierarchy
6969 neg find mustTransitiveContains(source,target);
6970} or {
6971 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
6972}
6973/**
6974 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
6975 */
6976private pattern mustInRelationeAllAttributes_reference_EClass(
6977 problem:LogicProblem, interpretation:PartialInterpretation,
6978 source: DefinedElement, target:DefinedElement)
6979{
6980 find interpretation(problem,interpretation);
6981 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6982 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
6983 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6984 BinaryElementRelationLink.param1(link,source);
6985 BinaryElementRelationLink.param2(link,target);
6986}
6987/**
6988 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
6989 */
6990private pattern mayInRelationeAllAttributes_reference_EClass(
6991 problem:LogicProblem, interpretation:PartialInterpretation,
6992 source: DefinedElement, target:DefinedElement)
6993{
6994 find interpretation(problem,interpretation);
6995 // The two endpoint of the link have to exist
6996 find mayExist(problem, interpretation, source);
6997 find mayExist(problem, interpretation, target);
6998 // Type consistency
6999 find mayInstanceOfEClass_class(problem,interpretation,source);
7000 find mayInstanceOfEAttribute_class(problem,interpretation,target);
7001} or {
7002 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
7003}
7004/**
7005 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
7006 */
7007private pattern mustInRelationeAllReferences_reference_EClass(
7008 problem:LogicProblem, interpretation:PartialInterpretation,
7009 source: DefinedElement, target:DefinedElement)
7010{
7011 find interpretation(problem,interpretation);
7012 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7013 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
7014 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7015 BinaryElementRelationLink.param1(link,source);
7016 BinaryElementRelationLink.param2(link,target);
7017}
7018/**
7019 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
7020 */
7021private pattern mayInRelationeAllReferences_reference_EClass(
7022 problem:LogicProblem, interpretation:PartialInterpretation,
7023 source: DefinedElement, target:DefinedElement)
7024{
7025 find interpretation(problem,interpretation);
7026 // The two endpoint of the link have to exist
7027 find mayExist(problem, interpretation, source);
7028 find mayExist(problem, interpretation, target);
7029 // Type consistency
7030 find mayInstanceOfEClass_class(problem,interpretation,source);
7031 find mayInstanceOfEReference_class(problem,interpretation,target);
7032} or {
7033 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
7034}
7035/**
7036 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
7037 */
7038private pattern mustInRelationeReferences_reference_EClass(
7039 problem:LogicProblem, interpretation:PartialInterpretation,
7040 source: DefinedElement, target:DefinedElement)
7041{
7042 find interpretation(problem,interpretation);
7043 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7044 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
7045 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7046 BinaryElementRelationLink.param1(link,source);
7047 BinaryElementRelationLink.param2(link,target);
7048}
7049/**
7050 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
7051 */
7052private pattern mayInRelationeReferences_reference_EClass(
7053 problem:LogicProblem, interpretation:PartialInterpretation,
7054 source: DefinedElement, target:DefinedElement)
7055{
7056 find interpretation(problem,interpretation);
7057 // The two endpoint of the link have to exist
7058 find mayExist(problem, interpretation, source);
7059 find mayExist(problem, interpretation, target);
7060 // Type consistency
7061 find mayInstanceOfEClass_class(problem,interpretation,source);
7062 find mayInstanceOfEReference_class(problem,interpretation,target);
7063} or {
7064 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
7065}
7066/**
7067 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
7068 */
7069private pattern mustInRelationeAttributes_reference_EClass(
7070 problem:LogicProblem, interpretation:PartialInterpretation,
7071 source: DefinedElement, target:DefinedElement)
7072{
7073 find interpretation(problem,interpretation);
7074 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7075 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
7076 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7077 BinaryElementRelationLink.param1(link,source);
7078 BinaryElementRelationLink.param2(link,target);
7079}
7080/**
7081 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
7082 */
7083private pattern mayInRelationeAttributes_reference_EClass(
7084 problem:LogicProblem, interpretation:PartialInterpretation,
7085 source: DefinedElement, target:DefinedElement)
7086{
7087 find interpretation(problem,interpretation);
7088 // The two endpoint of the link have to exist
7089 find mayExist(problem, interpretation, source);
7090 find mayExist(problem, interpretation, target);
7091 // Type consistency
7092 find mayInstanceOfEClass_class(problem,interpretation,source);
7093 find mayInstanceOfEAttribute_class(problem,interpretation,target);
7094} or {
7095 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
7096}
7097/**
7098 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
7099 */
7100private pattern mustInRelationeAllContainments_reference_EClass(
7101 problem:LogicProblem, interpretation:PartialInterpretation,
7102 source: DefinedElement, target:DefinedElement)
7103{
7104 find interpretation(problem,interpretation);
7105 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7106 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
7107 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7108 BinaryElementRelationLink.param1(link,source);
7109 BinaryElementRelationLink.param2(link,target);
7110}
7111/**
7112 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
7113 */
7114private pattern mayInRelationeAllContainments_reference_EClass(
7115 problem:LogicProblem, interpretation:PartialInterpretation,
7116 source: DefinedElement, target:DefinedElement)
7117{
7118 find interpretation(problem,interpretation);
7119 // The two endpoint of the link have to exist
7120 find mayExist(problem, interpretation, source);
7121 find mayExist(problem, interpretation, target);
7122 // Type consistency
7123 find mayInstanceOfEClass_class(problem,interpretation,source);
7124 find mayInstanceOfEReference_class(problem,interpretation,target);
7125} or {
7126 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
7127}
7128/**
7129 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
7130 */
7131private pattern mustInRelationeAllOperations_reference_EClass(
7132 problem:LogicProblem, interpretation:PartialInterpretation,
7133 source: DefinedElement, target:DefinedElement)
7134{
7135 find interpretation(problem,interpretation);
7136 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7137 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
7138 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7139 BinaryElementRelationLink.param1(link,source);
7140 BinaryElementRelationLink.param2(link,target);
7141}
7142/**
7143 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
7144 */
7145private pattern mayInRelationeAllOperations_reference_EClass(
7146 problem:LogicProblem, interpretation:PartialInterpretation,
7147 source: DefinedElement, target:DefinedElement)
7148{
7149 find interpretation(problem,interpretation);
7150 // The two endpoint of the link have to exist
7151 find mayExist(problem, interpretation, source);
7152 find mayExist(problem, interpretation, target);
7153 // Type consistency
7154 find mayInstanceOfEClass_class(problem,interpretation,source);
7155 find mayInstanceOfEOperation_class(problem,interpretation,target);
7156} or {
7157 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
7158}
7159/**
7160 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
7161 */
7162private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
7163 problem:LogicProblem, interpretation:PartialInterpretation,
7164 source: DefinedElement, target:DefinedElement)
7165{
7166 find interpretation(problem,interpretation);
7167 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7168 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
7169 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7170 BinaryElementRelationLink.param1(link,source);
7171 BinaryElementRelationLink.param2(link,target);
7172}
7173/**
7174 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
7175 */
7176private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
7177 problem:LogicProblem, interpretation:PartialInterpretation,
7178 source: DefinedElement, target:DefinedElement)
7179{
7180 find interpretation(problem,interpretation);
7181 // The two endpoint of the link have to exist
7182 find mayExist(problem, interpretation, source);
7183 find mayExist(problem, interpretation, target);
7184 // Type consistency
7185 find mayInstanceOfEClass_class(problem,interpretation,source);
7186 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
7187} or {
7188 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
7189}
7190/**
7191 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
7192 */
7193private pattern mustInRelationeAllSuperTypes_reference_EClass(
7194 problem:LogicProblem, interpretation:PartialInterpretation,
7195 source: DefinedElement, target:DefinedElement)
7196{
7197 find interpretation(problem,interpretation);
7198 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7199 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
7200 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7201 BinaryElementRelationLink.param1(link,source);
7202 BinaryElementRelationLink.param2(link,target);
7203}
7204/**
7205 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
7206 */
7207private pattern mayInRelationeAllSuperTypes_reference_EClass(
7208 problem:LogicProblem, interpretation:PartialInterpretation,
7209 source: DefinedElement, target:DefinedElement)
7210{
7211 find interpretation(problem,interpretation);
7212 // The two endpoint of the link have to exist
7213 find mayExist(problem, interpretation, source);
7214 find mayExist(problem, interpretation, target);
7215 // Type consistency
7216 find mayInstanceOfEClass_class(problem,interpretation,source);
7217 find mayInstanceOfEClass_class(problem,interpretation,target);
7218} or {
7219 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
7220}
7221/**
7222 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
7223 */
7224private pattern mustInRelationeIDAttribute_reference_EClass(
7225 problem:LogicProblem, interpretation:PartialInterpretation,
7226 source: DefinedElement, target:DefinedElement)
7227{
7228 find interpretation(problem,interpretation);
7229 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7230 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
7231 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7232 BinaryElementRelationLink.param1(link,source);
7233 BinaryElementRelationLink.param2(link,target);
7234}
7235/**
7236 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
7237 */
7238private pattern mayInRelationeIDAttribute_reference_EClass(
7239 problem:LogicProblem, interpretation:PartialInterpretation,
7240 source: DefinedElement, target:DefinedElement)
7241{
7242 find interpretation(problem,interpretation);
7243 // The two endpoint of the link have to exist
7244 find mayExist(problem, interpretation, source);
7245 find mayExist(problem, interpretation, target);
7246 // Type consistency
7247 find mayInstanceOfEClass_class(problem,interpretation,source);
7248 find mayInstanceOfEAttribute_class(problem,interpretation,target);
7249 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
7250 // the upper bound of the multiplicity should be considered.
7251 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
7252 check(numberOfExistingReferences < 1);
7253} or {
7254 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
7255}
7256/**
7257 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
7258 */
7259private pattern mustInRelationeStructuralFeatures_reference_EClass(
7260 problem:LogicProblem, interpretation:PartialInterpretation,
7261 source: DefinedElement, target:DefinedElement)
7262{
7263 find interpretation(problem,interpretation);
7264 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7265 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
7266 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7267 BinaryElementRelationLink.param1(link,source);
7268 BinaryElementRelationLink.param2(link,target);
7269}
7270/**
7271 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
7272 */
7273private pattern mayInRelationeStructuralFeatures_reference_EClass(
7274 problem:LogicProblem, interpretation:PartialInterpretation,
7275 source: DefinedElement, target:DefinedElement)
7276{
7277 find interpretation(problem,interpretation);
7278 // The two endpoint of the link have to exist
7279 find mayExist(problem, interpretation, source);
7280 find mayExist(problem, interpretation, target);
7281 // Type consistency
7282 find mayInstanceOfEClass_class(problem,interpretation,source);
7283 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
7284 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
7285 // the upper bound of the opposite reference multiplicity should be considered.
7286 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
7287 check(numberOfExistingOppositeReferences < 1);
7288 // The reference is containment, then a new reference cannot be create if:
7289 // 1. Multiple parents
7290 neg find mustContains4(problem,interpretation,_,target);
7291 // 2. Circle in the containment hierarchy
7292 neg find mustTransitiveContains(source,target);
7293} or {
7294 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
7295}
7296/**
7297 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
7298 */
7299private pattern mustInRelationeGenericSuperTypes_reference_EClass(
7300 problem:LogicProblem, interpretation:PartialInterpretation,
7301 source: DefinedElement, target:DefinedElement)
7302{
7303 find interpretation(problem,interpretation);
7304 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7305 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
7306 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7307 BinaryElementRelationLink.param1(link,source);
7308 BinaryElementRelationLink.param2(link,target);
7309}
7310/**
7311 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
7312 */
7313private pattern mayInRelationeGenericSuperTypes_reference_EClass(
7314 problem:LogicProblem, interpretation:PartialInterpretation,
7315 source: DefinedElement, target:DefinedElement)
7316{
7317 find interpretation(problem,interpretation);
7318 // The two endpoint of the link have to exist
7319 find mayExist(problem, interpretation, source);
7320 find mayExist(problem, interpretation, target);
7321 // Type consistency
7322 find mayInstanceOfEClass_class(problem,interpretation,source);
7323 find mayInstanceOfEGenericType_class(problem,interpretation,target);
7324 // The reference is containment, then a new reference cannot be create if:
7325 // 1. Multiple parents
7326 neg find mustContains4(problem,interpretation,_,target);
7327 // 2. Circle in the containment hierarchy
7328 neg find mustTransitiveContains(source,target);
7329} or {
7330 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
7331}
7332/**
7333 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
7334 */
7335private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
7336 problem:LogicProblem, interpretation:PartialInterpretation,
7337 source: DefinedElement, target:DefinedElement)
7338{
7339 find interpretation(problem,interpretation);
7340 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7341 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
7342 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7343 BinaryElementRelationLink.param1(link,source);
7344 BinaryElementRelationLink.param2(link,target);
7345}
7346/**
7347 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
7348 */
7349private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
7350 problem:LogicProblem, interpretation:PartialInterpretation,
7351 source: DefinedElement, target:DefinedElement)
7352{
7353 find interpretation(problem,interpretation);
7354 // The two endpoint of the link have to exist
7355 find mayExist(problem, interpretation, source);
7356 find mayExist(problem, interpretation, target);
7357 // Type consistency
7358 find mayInstanceOfEClass_class(problem,interpretation,source);
7359 find mayInstanceOfEGenericType_class(problem,interpretation,target);
7360} or {
7361 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
7362}
7363/**
7364 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
7365 */
7366private pattern mustInRelationePackage_reference_EClassifier(
7367 problem:LogicProblem, interpretation:PartialInterpretation,
7368 source: DefinedElement, target:DefinedElement)
7369{
7370 find interpretation(problem,interpretation);
7371 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7372 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
7373 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7374 BinaryElementRelationLink.param1(link,source);
7375 BinaryElementRelationLink.param2(link,target);
7376}
7377/**
7378 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
7379 */
7380private pattern mayInRelationePackage_reference_EClassifier(
7381 problem:LogicProblem, interpretation:PartialInterpretation,
7382 source: DefinedElement, target:DefinedElement)
7383{
7384 find interpretation(problem,interpretation);
7385 // The two endpoint of the link have to exist
7386 find mayExist(problem, interpretation, source);
7387 find mayExist(problem, interpretation, target);
7388 // Type consistency
7389 find mayInstanceOfEClassifier_class(problem,interpretation,source);
7390 find mayInstanceOfEPackage_class(problem,interpretation,target);
7391 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
7392 // the upper bound of the multiplicity should be considered.
7393 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
7394 check(numberOfExistingReferences < 1);
7395 // The eOpposite of the reference is containment, then a referene cannot be created if
7396 // 1. Multiple parents
7397 neg find mustContains4(problem,interpretation,source,_);
7398 // 2. Circle in the containment hierarchy
7399 neg find mustTransitiveContains(source,target);
7400} or {
7401 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
7402}
7403/**
7404 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
7405 */
7406private pattern mustInRelationeTypeParameters_reference_EClassifier(
7407 problem:LogicProblem, interpretation:PartialInterpretation,
7408 source: DefinedElement, target:DefinedElement)
7409{
7410 find interpretation(problem,interpretation);
7411 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7412 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
7413 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7414 BinaryElementRelationLink.param1(link,source);
7415 BinaryElementRelationLink.param2(link,target);
7416}
7417/**
7418 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
7419 */
7420private pattern mayInRelationeTypeParameters_reference_EClassifier(
7421 problem:LogicProblem, interpretation:PartialInterpretation,
7422 source: DefinedElement, target:DefinedElement)
7423{
7424 find interpretation(problem,interpretation);
7425 // The two endpoint of the link have to exist
7426 find mayExist(problem, interpretation, source);
7427 find mayExist(problem, interpretation, target);
7428 // Type consistency
7429 find mayInstanceOfEClassifier_class(problem,interpretation,source);
7430 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
7431 // The reference is containment, then a new reference cannot be create if:
7432 // 1. Multiple parents
7433 neg find mustContains4(problem,interpretation,_,target);
7434 // 2. Circle in the containment hierarchy
7435 neg find mustTransitiveContains(source,target);
7436} or {
7437 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
7438}
7439/**
7440 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
7441 */
7442private pattern mustInRelationeLiterals_reference_EEnum(
7443 problem:LogicProblem, interpretation:PartialInterpretation,
7444 source: DefinedElement, target:DefinedElement)
7445{
7446 find interpretation(problem,interpretation);
7447 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7448 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
7449 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7450 BinaryElementRelationLink.param1(link,source);
7451 BinaryElementRelationLink.param2(link,target);
7452}
7453/**
7454 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
7455 */
7456private pattern mayInRelationeLiterals_reference_EEnum(
7457 problem:LogicProblem, interpretation:PartialInterpretation,
7458 source: DefinedElement, target:DefinedElement)
7459{
7460 find interpretation(problem,interpretation);
7461 // The two endpoint of the link have to exist
7462 find mayExist(problem, interpretation, source);
7463 find mayExist(problem, interpretation, target);
7464 // Type consistency
7465 find mayInstanceOfEEnum_class(problem,interpretation,source);
7466 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
7467 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
7468 // the upper bound of the opposite reference multiplicity should be considered.
7469 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
7470 check(numberOfExistingOppositeReferences < 1);
7471 // The reference is containment, then a new reference cannot be create if:
7472 // 1. Multiple parents
7473 neg find mustContains4(problem,interpretation,_,target);
7474 // 2. Circle in the containment hierarchy
7475 neg find mustTransitiveContains(source,target);
7476} or {
7477 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
7478}
7479/**
7480 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
7481 */
7482private pattern mustInRelationeEnum_reference_EEnumLiteral(
7483 problem:LogicProblem, interpretation:PartialInterpretation,
7484 source: DefinedElement, target:DefinedElement)
7485{
7486 find interpretation(problem,interpretation);
7487 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7488 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
7489 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7490 BinaryElementRelationLink.param1(link,source);
7491 BinaryElementRelationLink.param2(link,target);
7492}
7493/**
7494 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
7495 */
7496private pattern mayInRelationeEnum_reference_EEnumLiteral(
7497 problem:LogicProblem, interpretation:PartialInterpretation,
7498 source: DefinedElement, target:DefinedElement)
7499{
7500 find interpretation(problem,interpretation);
7501 // The two endpoint of the link have to exist
7502 find mayExist(problem, interpretation, source);
7503 find mayExist(problem, interpretation, target);
7504 // Type consistency
7505 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
7506 find mayInstanceOfEEnum_class(problem,interpretation,target);
7507 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
7508 // the upper bound of the multiplicity should be considered.
7509 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
7510 check(numberOfExistingReferences < 1);
7511 // The eOpposite of the reference is containment, then a referene cannot be created if
7512 // 1. Multiple parents
7513 neg find mustContains4(problem,interpretation,source,_);
7514 // 2. Circle in the containment hierarchy
7515 neg find mustTransitiveContains(source,target);
7516} or {
7517 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
7518}
7519/**
7520 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
7521 */
7522private pattern mustInRelationeAnnotations_reference_EModelElement(
7523 problem:LogicProblem, interpretation:PartialInterpretation,
7524 source: DefinedElement, target:DefinedElement)
7525{
7526 find interpretation(problem,interpretation);
7527 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7528 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
7529 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7530 BinaryElementRelationLink.param1(link,source);
7531 BinaryElementRelationLink.param2(link,target);
7532}
7533/**
7534 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
7535 */
7536private pattern mayInRelationeAnnotations_reference_EModelElement(
7537 problem:LogicProblem, interpretation:PartialInterpretation,
7538 source: DefinedElement, target:DefinedElement)
7539{
7540 find interpretation(problem,interpretation);
7541 // The two endpoint of the link have to exist
7542 find mayExist(problem, interpretation, source);
7543 find mayExist(problem, interpretation, target);
7544 // Type consistency
7545 find mayInstanceOfEModelElement_class(problem,interpretation,source);
7546 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
7547 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
7548 // the upper bound of the opposite reference multiplicity should be considered.
7549 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
7550 check(numberOfExistingOppositeReferences < 1);
7551 // The reference is containment, then a new reference cannot be create if:
7552 // 1. Multiple parents
7553 neg find mustContains4(problem,interpretation,_,target);
7554 // 2. Circle in the containment hierarchy
7555 neg find mustTransitiveContains(source,target);
7556} or {
7557 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
7558}
7559/**
7560 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
7561 */
7562private pattern mustInRelationeContainingClass_reference_EOperation(
7563 problem:LogicProblem, interpretation:PartialInterpretation,
7564 source: DefinedElement, target:DefinedElement)
7565{
7566 find interpretation(problem,interpretation);
7567 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7568 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
7569 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7570 BinaryElementRelationLink.param1(link,source);
7571 BinaryElementRelationLink.param2(link,target);
7572}
7573/**
7574 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
7575 */
7576private pattern mayInRelationeContainingClass_reference_EOperation(
7577 problem:LogicProblem, interpretation:PartialInterpretation,
7578 source: DefinedElement, target:DefinedElement)
7579{
7580 find interpretation(problem,interpretation);
7581 // The two endpoint of the link have to exist
7582 find mayExist(problem, interpretation, source);
7583 find mayExist(problem, interpretation, target);
7584 // Type consistency
7585 find mayInstanceOfEOperation_class(problem,interpretation,source);
7586 find mayInstanceOfEClass_class(problem,interpretation,target);
7587 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
7588 // the upper bound of the multiplicity should be considered.
7589 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
7590 check(numberOfExistingReferences < 1);
7591 // The eOpposite of the reference is containment, then a referene cannot be created if
7592 // 1. Multiple parents
7593 neg find mustContains4(problem,interpretation,source,_);
7594 // 2. Circle in the containment hierarchy
7595 neg find mustTransitiveContains(source,target);
7596} or {
7597 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
7598}
7599/**
7600 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
7601 */
7602private pattern mustInRelationeTypeParameters_reference_EOperation(
7603 problem:LogicProblem, interpretation:PartialInterpretation,
7604 source: DefinedElement, target:DefinedElement)
7605{
7606 find interpretation(problem,interpretation);
7607 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7608 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
7609 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7610 BinaryElementRelationLink.param1(link,source);
7611 BinaryElementRelationLink.param2(link,target);
7612}
7613/**
7614 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
7615 */
7616private pattern mayInRelationeTypeParameters_reference_EOperation(
7617 problem:LogicProblem, interpretation:PartialInterpretation,
7618 source: DefinedElement, target:DefinedElement)
7619{
7620 find interpretation(problem,interpretation);
7621 // The two endpoint of the link have to exist
7622 find mayExist(problem, interpretation, source);
7623 find mayExist(problem, interpretation, target);
7624 // Type consistency
7625 find mayInstanceOfEOperation_class(problem,interpretation,source);
7626 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
7627 // The reference is containment, then a new reference cannot be create if:
7628 // 1. Multiple parents
7629 neg find mustContains4(problem,interpretation,_,target);
7630 // 2. Circle in the containment hierarchy
7631 neg find mustTransitiveContains(source,target);
7632} or {
7633 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
7634}
7635/**
7636 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
7637 */
7638private pattern mustInRelationeParameters_reference_EOperation(
7639 problem:LogicProblem, interpretation:PartialInterpretation,
7640 source: DefinedElement, target:DefinedElement)
7641{
7642 find interpretation(problem,interpretation);
7643 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7644 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
7645 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7646 BinaryElementRelationLink.param1(link,source);
7647 BinaryElementRelationLink.param2(link,target);
7648}
7649/**
7650 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
7651 */
7652private pattern mayInRelationeParameters_reference_EOperation(
7653 problem:LogicProblem, interpretation:PartialInterpretation,
7654 source: DefinedElement, target:DefinedElement)
7655{
7656 find interpretation(problem,interpretation);
7657 // The two endpoint of the link have to exist
7658 find mayExist(problem, interpretation, source);
7659 find mayExist(problem, interpretation, target);
7660 // Type consistency
7661 find mayInstanceOfEOperation_class(problem,interpretation,source);
7662 find mayInstanceOfEParameter_class(problem,interpretation,target);
7663 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
7664 // the upper bound of the opposite reference multiplicity should be considered.
7665 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
7666 check(numberOfExistingOppositeReferences < 1);
7667 // The reference is containment, then a new reference cannot be create if:
7668 // 1. Multiple parents
7669 neg find mustContains4(problem,interpretation,_,target);
7670 // 2. Circle in the containment hierarchy
7671 neg find mustTransitiveContains(source,target);
7672} or {
7673 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
7674}
7675/**
7676 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
7677 */
7678private pattern mustInRelationeExceptions_reference_EOperation(
7679 problem:LogicProblem, interpretation:PartialInterpretation,
7680 source: DefinedElement, target:DefinedElement)
7681{
7682 find interpretation(problem,interpretation);
7683 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7684 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
7685 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7686 BinaryElementRelationLink.param1(link,source);
7687 BinaryElementRelationLink.param2(link,target);
7688}
7689/**
7690 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
7691 */
7692private pattern mayInRelationeExceptions_reference_EOperation(
7693 problem:LogicProblem, interpretation:PartialInterpretation,
7694 source: DefinedElement, target:DefinedElement)
7695{
7696 find interpretation(problem,interpretation);
7697 // The two endpoint of the link have to exist
7698 find mayExist(problem, interpretation, source);
7699 find mayExist(problem, interpretation, target);
7700 // Type consistency
7701 find mayInstanceOfEOperation_class(problem,interpretation,source);
7702 find mayInstanceOfEClassifier_class(problem,interpretation,target);
7703} or {
7704 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
7705}
7706/**
7707 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
7708 */
7709private pattern mustInRelationeGenericExceptions_reference_EOperation(
7710 problem:LogicProblem, interpretation:PartialInterpretation,
7711 source: DefinedElement, target:DefinedElement)
7712{
7713 find interpretation(problem,interpretation);
7714 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7715 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
7716 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7717 BinaryElementRelationLink.param1(link,source);
7718 BinaryElementRelationLink.param2(link,target);
7719}
7720/**
7721 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
7722 */
7723private pattern mayInRelationeGenericExceptions_reference_EOperation(
7724 problem:LogicProblem, interpretation:PartialInterpretation,
7725 source: DefinedElement, target:DefinedElement)
7726{
7727 find interpretation(problem,interpretation);
7728 // The two endpoint of the link have to exist
7729 find mayExist(problem, interpretation, source);
7730 find mayExist(problem, interpretation, target);
7731 // Type consistency
7732 find mayInstanceOfEOperation_class(problem,interpretation,source);
7733 find mayInstanceOfEGenericType_class(problem,interpretation,target);
7734 // The reference is containment, then a new reference cannot be create if:
7735 // 1. Multiple parents
7736 neg find mustContains4(problem,interpretation,_,target);
7737 // 2. Circle in the containment hierarchy
7738 neg find mustTransitiveContains(source,target);
7739} or {
7740 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
7741}
7742/**
7743 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
7744 */
7745private pattern mustInRelationeClassifiers_reference_EPackage(
7746 problem:LogicProblem, interpretation:PartialInterpretation,
7747 source: DefinedElement, target:DefinedElement)
7748{
7749 find interpretation(problem,interpretation);
7750 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7751 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
7752 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7753 BinaryElementRelationLink.param1(link,source);
7754 BinaryElementRelationLink.param2(link,target);
7755}
7756/**
7757 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
7758 */
7759private pattern mayInRelationeClassifiers_reference_EPackage(
7760 problem:LogicProblem, interpretation:PartialInterpretation,
7761 source: DefinedElement, target:DefinedElement)
7762{
7763 find interpretation(problem,interpretation);
7764 // The two endpoint of the link have to exist
7765 find mayExist(problem, interpretation, source);
7766 find mayExist(problem, interpretation, target);
7767 // Type consistency
7768 find mayInstanceOfEPackage_class(problem,interpretation,source);
7769 find mayInstanceOfEClassifier_class(problem,interpretation,target);
7770 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
7771 // the upper bound of the opposite reference multiplicity should be considered.
7772 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
7773 check(numberOfExistingOppositeReferences < 1);
7774 // The reference is containment, then a new reference cannot be create if:
7775 // 1. Multiple parents
7776 neg find mustContains4(problem,interpretation,_,target);
7777 // 2. Circle in the containment hierarchy
7778 neg find mustTransitiveContains(source,target);
7779} or {
7780 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
7781}
7782/**
7783 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
7784 */
7785private pattern mustInRelationeSubpackages_reference_EPackage(
7786 problem:LogicProblem, interpretation:PartialInterpretation,
7787 source: DefinedElement, target:DefinedElement)
7788{
7789 find interpretation(problem,interpretation);
7790 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7791 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
7792 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7793 BinaryElementRelationLink.param1(link,source);
7794 BinaryElementRelationLink.param2(link,target);
7795}
7796/**
7797 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
7798 */
7799private pattern mayInRelationeSubpackages_reference_EPackage(
7800 problem:LogicProblem, interpretation:PartialInterpretation,
7801 source: DefinedElement, target:DefinedElement)
7802{
7803 find interpretation(problem,interpretation);
7804 // The two endpoint of the link have to exist
7805 find mayExist(problem, interpretation, source);
7806 find mayExist(problem, interpretation, target);
7807 // Type consistency
7808 find mayInstanceOfEPackage_class(problem,interpretation,source);
7809 find mayInstanceOfEPackage_class(problem,interpretation,target);
7810 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
7811 // the upper bound of the opposite reference multiplicity should be considered.
7812 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
7813 check(numberOfExistingOppositeReferences < 1);
7814 // The reference is containment, then a new reference cannot be create if:
7815 // 1. Multiple parents
7816 neg find mustContains4(problem,interpretation,_,target);
7817 // 2. Circle in the containment hierarchy
7818 neg find mustTransitiveContains(source,target);
7819} or {
7820 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
7821}
7822/**
7823 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
7824 */
7825private pattern mustInRelationeSuperPackage_reference_EPackage(
7826 problem:LogicProblem, interpretation:PartialInterpretation,
7827 source: DefinedElement, target:DefinedElement)
7828{
7829 find interpretation(problem,interpretation);
7830 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7831 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
7832 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7833 BinaryElementRelationLink.param1(link,source);
7834 BinaryElementRelationLink.param2(link,target);
7835}
7836/**
7837 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
7838 */
7839private pattern mayInRelationeSuperPackage_reference_EPackage(
7840 problem:LogicProblem, interpretation:PartialInterpretation,
7841 source: DefinedElement, target:DefinedElement)
7842{
7843 find interpretation(problem,interpretation);
7844 // The two endpoint of the link have to exist
7845 find mayExist(problem, interpretation, source);
7846 find mayExist(problem, interpretation, target);
7847 // Type consistency
7848 find mayInstanceOfEPackage_class(problem,interpretation,source);
7849 find mayInstanceOfEPackage_class(problem,interpretation,target);
7850 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
7851 // the upper bound of the multiplicity should be considered.
7852 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
7853 check(numberOfExistingReferences < 1);
7854 // The eOpposite of the reference is containment, then a referene cannot be created if
7855 // 1. Multiple parents
7856 neg find mustContains4(problem,interpretation,source,_);
7857 // 2. Circle in the containment hierarchy
7858 neg find mustTransitiveContains(source,target);
7859} or {
7860 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
7861}
7862/**
7863 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
7864 */
7865private pattern mustInRelationeOperation_reference_EParameter(
7866 problem:LogicProblem, interpretation:PartialInterpretation,
7867 source: DefinedElement, target:DefinedElement)
7868{
7869 find interpretation(problem,interpretation);
7870 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7871 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
7872 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7873 BinaryElementRelationLink.param1(link,source);
7874 BinaryElementRelationLink.param2(link,target);
7875}
7876/**
7877 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
7878 */
7879private pattern mayInRelationeOperation_reference_EParameter(
7880 problem:LogicProblem, interpretation:PartialInterpretation,
7881 source: DefinedElement, target:DefinedElement)
7882{
7883 find interpretation(problem,interpretation);
7884 // The two endpoint of the link have to exist
7885 find mayExist(problem, interpretation, source);
7886 find mayExist(problem, interpretation, target);
7887 // Type consistency
7888 find mayInstanceOfEParameter_class(problem,interpretation,source);
7889 find mayInstanceOfEOperation_class(problem,interpretation,target);
7890 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
7891 // the upper bound of the multiplicity should be considered.
7892 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
7893 check(numberOfExistingReferences < 1);
7894 // The eOpposite of the reference is containment, then a referene cannot be created if
7895 // 1. Multiple parents
7896 neg find mustContains4(problem,interpretation,source,_);
7897 // 2. Circle in the containment hierarchy
7898 neg find mustTransitiveContains(source,target);
7899} or {
7900 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
7901}
7902/**
7903 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
7904 */
7905private pattern mustInRelationeOpposite_reference_EReference(
7906 problem:LogicProblem, interpretation:PartialInterpretation,
7907 source: DefinedElement, target:DefinedElement)
7908{
7909 find interpretation(problem,interpretation);
7910 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7911 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
7912 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7913 BinaryElementRelationLink.param1(link,source);
7914 BinaryElementRelationLink.param2(link,target);
7915}
7916/**
7917 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
7918 */
7919private pattern mayInRelationeOpposite_reference_EReference(
7920 problem:LogicProblem, interpretation:PartialInterpretation,
7921 source: DefinedElement, target:DefinedElement)
7922{
7923 find interpretation(problem,interpretation);
7924 // The two endpoint of the link have to exist
7925 find mayExist(problem, interpretation, source);
7926 find mayExist(problem, interpretation, target);
7927 // Type consistency
7928 find mayInstanceOfEReference_class(problem,interpretation,source);
7929 find mayInstanceOfEReference_class(problem,interpretation,target);
7930 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
7931 // the upper bound of the multiplicity should be considered.
7932 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
7933 check(numberOfExistingReferences < 1);
7934} or {
7935 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
7936}
7937/**
7938 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
7939 */
7940private pattern mustInRelationeReferenceType_reference_EReference(
7941 problem:LogicProblem, interpretation:PartialInterpretation,
7942 source: DefinedElement, target:DefinedElement)
7943{
7944 find interpretation(problem,interpretation);
7945 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7946 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
7947 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7948 BinaryElementRelationLink.param1(link,source);
7949 BinaryElementRelationLink.param2(link,target);
7950}
7951/**
7952 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
7953 */
7954private pattern mayInRelationeReferenceType_reference_EReference(
7955 problem:LogicProblem, interpretation:PartialInterpretation,
7956 source: DefinedElement, target:DefinedElement)
7957{
7958 find interpretation(problem,interpretation);
7959 // The two endpoint of the link have to exist
7960 find mayExist(problem, interpretation, source);
7961 find mayExist(problem, interpretation, target);
7962 // Type consistency
7963 find mayInstanceOfEReference_class(problem,interpretation,source);
7964 find mayInstanceOfEClass_class(problem,interpretation,target);
7965 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
7966 // the upper bound of the multiplicity should be considered.
7967 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
7968 check(numberOfExistingReferences < 1);
7969} or {
7970 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
7971}
7972/**
7973 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
7974 */
7975private pattern mustInRelationeKeys_reference_EReference(
7976 problem:LogicProblem, interpretation:PartialInterpretation,
7977 source: DefinedElement, target:DefinedElement)
7978{
7979 find interpretation(problem,interpretation);
7980 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7981 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
7982 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
7983 BinaryElementRelationLink.param1(link,source);
7984 BinaryElementRelationLink.param2(link,target);
7985}
7986/**
7987 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
7988 */
7989private pattern mayInRelationeKeys_reference_EReference(
7990 problem:LogicProblem, interpretation:PartialInterpretation,
7991 source: DefinedElement, target:DefinedElement)
7992{
7993 find interpretation(problem,interpretation);
7994 // The two endpoint of the link have to exist
7995 find mayExist(problem, interpretation, source);
7996 find mayExist(problem, interpretation, target);
7997 // Type consistency
7998 find mayInstanceOfEReference_class(problem,interpretation,source);
7999 find mayInstanceOfEAttribute_class(problem,interpretation,target);
8000} or {
8001 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
8002}
8003/**
8004 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
8005 */
8006private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
8007 problem:LogicProblem, interpretation:PartialInterpretation,
8008 source: DefinedElement, target:DefinedElement)
8009{
8010 find interpretation(problem,interpretation);
8011 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8012 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
8013 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8014 BinaryElementRelationLink.param1(link,source);
8015 BinaryElementRelationLink.param2(link,target);
8016}
8017/**
8018 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
8019 */
8020private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
8021 problem:LogicProblem, interpretation:PartialInterpretation,
8022 source: DefinedElement, target:DefinedElement)
8023{
8024 find interpretation(problem,interpretation);
8025 // The two endpoint of the link have to exist
8026 find mayExist(problem, interpretation, source);
8027 find mayExist(problem, interpretation, target);
8028 // Type consistency
8029 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
8030 find mayInstanceOfEClass_class(problem,interpretation,target);
8031 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8032 // the upper bound of the multiplicity should be considered.
8033 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
8034 check(numberOfExistingReferences < 1);
8035 // The eOpposite of the reference is containment, then a referene cannot be created if
8036 // 1. Multiple parents
8037 neg find mustContains4(problem,interpretation,source,_);
8038 // 2. Circle in the containment hierarchy
8039 neg find mustTransitiveContains(source,target);
8040} or {
8041 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
8042}
8043/**
8044 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
8045 */
8046private pattern mustInRelationeType_reference_ETypedElement(
8047 problem:LogicProblem, interpretation:PartialInterpretation,
8048 source: DefinedElement, target:DefinedElement)
8049{
8050 find interpretation(problem,interpretation);
8051 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8052 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
8053 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8054 BinaryElementRelationLink.param1(link,source);
8055 BinaryElementRelationLink.param2(link,target);
8056}
8057/**
8058 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
8059 */
8060private pattern mayInRelationeType_reference_ETypedElement(
8061 problem:LogicProblem, interpretation:PartialInterpretation,
8062 source: DefinedElement, target:DefinedElement)
8063{
8064 find interpretation(problem,interpretation);
8065 // The two endpoint of the link have to exist
8066 find mayExist(problem, interpretation, source);
8067 find mayExist(problem, interpretation, target);
8068 // Type consistency
8069 find mayInstanceOfETypedElement_class(problem,interpretation,source);
8070 find mayInstanceOfEClassifier_class(problem,interpretation,target);
8071 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8072 // the upper bound of the multiplicity should be considered.
8073 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
8074 check(numberOfExistingReferences < 1);
8075} or {
8076 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
8077}
8078/**
8079 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
8080 */
8081private pattern mustInRelationeGenericType_reference_ETypedElement(
8082 problem:LogicProblem, interpretation:PartialInterpretation,
8083 source: DefinedElement, target:DefinedElement)
8084{
8085 find interpretation(problem,interpretation);
8086 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8087 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
8088 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8089 BinaryElementRelationLink.param1(link,source);
8090 BinaryElementRelationLink.param2(link,target);
8091}
8092/**
8093 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
8094 */
8095private pattern mayInRelationeGenericType_reference_ETypedElement(
8096 problem:LogicProblem, interpretation:PartialInterpretation,
8097 source: DefinedElement, target:DefinedElement)
8098{
8099 find interpretation(problem,interpretation);
8100 // The two endpoint of the link have to exist
8101 find mayExist(problem, interpretation, source);
8102 find mayExist(problem, interpretation, target);
8103 // Type consistency
8104 find mayInstanceOfETypedElement_class(problem,interpretation,source);
8105 find mayInstanceOfEGenericType_class(problem,interpretation,target);
8106 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8107 // the upper bound of the multiplicity should be considered.
8108 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
8109 check(numberOfExistingReferences < 1);
8110 // The reference is containment, then a new reference cannot be create if:
8111 // 1. Multiple parents
8112 neg find mustContains4(problem,interpretation,_,target);
8113 // 2. Circle in the containment hierarchy
8114 neg find mustTransitiveContains(source,target);
8115} or {
8116 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
8117}
8118/**
8119 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
8120 */
8121private pattern mustInRelationeUpperBound_reference_EGenericType(
8122 problem:LogicProblem, interpretation:PartialInterpretation,
8123 source: DefinedElement, target:DefinedElement)
8124{
8125 find interpretation(problem,interpretation);
8126 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8127 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
8128 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8129 BinaryElementRelationLink.param1(link,source);
8130 BinaryElementRelationLink.param2(link,target);
8131}
8132/**
8133 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
8134 */
8135private pattern mayInRelationeUpperBound_reference_EGenericType(
8136 problem:LogicProblem, interpretation:PartialInterpretation,
8137 source: DefinedElement, target:DefinedElement)
8138{
8139 find interpretation(problem,interpretation);
8140 // The two endpoint of the link have to exist
8141 find mayExist(problem, interpretation, source);
8142 find mayExist(problem, interpretation, target);
8143 // Type consistency
8144 find mayInstanceOfEGenericType_class(problem,interpretation,source);
8145 find mayInstanceOfEGenericType_class(problem,interpretation,target);
8146 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8147 // the upper bound of the multiplicity should be considered.
8148 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
8149 check(numberOfExistingReferences < 1);
8150 // The reference is containment, then a new reference cannot be create if:
8151 // 1. Multiple parents
8152 neg find mustContains4(problem,interpretation,_,target);
8153 // 2. Circle in the containment hierarchy
8154 neg find mustTransitiveContains(source,target);
8155} or {
8156 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
8157}
8158/**
8159 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
8160 */
8161private pattern mustInRelationeTypeArguments_reference_EGenericType(
8162 problem:LogicProblem, interpretation:PartialInterpretation,
8163 source: DefinedElement, target:DefinedElement)
8164{
8165 find interpretation(problem,interpretation);
8166 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8167 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
8168 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8169 BinaryElementRelationLink.param1(link,source);
8170 BinaryElementRelationLink.param2(link,target);
8171}
8172/**
8173 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
8174 */
8175private pattern mayInRelationeTypeArguments_reference_EGenericType(
8176 problem:LogicProblem, interpretation:PartialInterpretation,
8177 source: DefinedElement, target:DefinedElement)
8178{
8179 find interpretation(problem,interpretation);
8180 // The two endpoint of the link have to exist
8181 find mayExist(problem, interpretation, source);
8182 find mayExist(problem, interpretation, target);
8183 // Type consistency
8184 find mayInstanceOfEGenericType_class(problem,interpretation,source);
8185 find mayInstanceOfEGenericType_class(problem,interpretation,target);
8186 // The reference is containment, then a new reference cannot be create if:
8187 // 1. Multiple parents
8188 neg find mustContains4(problem,interpretation,_,target);
8189 // 2. Circle in the containment hierarchy
8190 neg find mustTransitiveContains(source,target);
8191} or {
8192 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
8193}
8194/**
8195 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
8196 */
8197private pattern mustInRelationeRawType_reference_EGenericType(
8198 problem:LogicProblem, interpretation:PartialInterpretation,
8199 source: DefinedElement, target:DefinedElement)
8200{
8201 find interpretation(problem,interpretation);
8202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
8204 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8205 BinaryElementRelationLink.param1(link,source);
8206 BinaryElementRelationLink.param2(link,target);
8207}
8208/**
8209 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
8210 */
8211private pattern mayInRelationeRawType_reference_EGenericType(
8212 problem:LogicProblem, interpretation:PartialInterpretation,
8213 source: DefinedElement, target:DefinedElement)
8214{
8215 find interpretation(problem,interpretation);
8216 // The two endpoint of the link have to exist
8217 find mayExist(problem, interpretation, source);
8218 find mayExist(problem, interpretation, target);
8219 // Type consistency
8220 find mayInstanceOfEGenericType_class(problem,interpretation,source);
8221 find mayInstanceOfEClassifier_class(problem,interpretation,target);
8222 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8223 // the upper bound of the multiplicity should be considered.
8224 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
8225 check(numberOfExistingReferences < 1);
8226} or {
8227 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
8228}
8229/**
8230 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
8231 */
8232private pattern mustInRelationeLowerBound_reference_EGenericType(
8233 problem:LogicProblem, interpretation:PartialInterpretation,
8234 source: DefinedElement, target:DefinedElement)
8235{
8236 find interpretation(problem,interpretation);
8237 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8238 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
8239 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8240 BinaryElementRelationLink.param1(link,source);
8241 BinaryElementRelationLink.param2(link,target);
8242}
8243/**
8244 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
8245 */
8246private pattern mayInRelationeLowerBound_reference_EGenericType(
8247 problem:LogicProblem, interpretation:PartialInterpretation,
8248 source: DefinedElement, target:DefinedElement)
8249{
8250 find interpretation(problem,interpretation);
8251 // The two endpoint of the link have to exist
8252 find mayExist(problem, interpretation, source);
8253 find mayExist(problem, interpretation, target);
8254 // Type consistency
8255 find mayInstanceOfEGenericType_class(problem,interpretation,source);
8256 find mayInstanceOfEGenericType_class(problem,interpretation,target);
8257 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8258 // the upper bound of the multiplicity should be considered.
8259 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
8260 check(numberOfExistingReferences < 1);
8261 // The reference is containment, then a new reference cannot be create if:
8262 // 1. Multiple parents
8263 neg find mustContains4(problem,interpretation,_,target);
8264 // 2. Circle in the containment hierarchy
8265 neg find mustTransitiveContains(source,target);
8266} or {
8267 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
8268}
8269/**
8270 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
8271 */
8272private pattern mustInRelationeTypeParameter_reference_EGenericType(
8273 problem:LogicProblem, interpretation:PartialInterpretation,
8274 source: DefinedElement, target:DefinedElement)
8275{
8276 find interpretation(problem,interpretation);
8277 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8278 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
8279 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8280 BinaryElementRelationLink.param1(link,source);
8281 BinaryElementRelationLink.param2(link,target);
8282}
8283/**
8284 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
8285 */
8286private pattern mayInRelationeTypeParameter_reference_EGenericType(
8287 problem:LogicProblem, interpretation:PartialInterpretation,
8288 source: DefinedElement, target:DefinedElement)
8289{
8290 find interpretation(problem,interpretation);
8291 // The two endpoint of the link have to exist
8292 find mayExist(problem, interpretation, source);
8293 find mayExist(problem, interpretation, target);
8294 // Type consistency
8295 find mayInstanceOfEGenericType_class(problem,interpretation,source);
8296 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
8297 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8298 // the upper bound of the multiplicity should be considered.
8299 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
8300 check(numberOfExistingReferences < 1);
8301} or {
8302 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
8303}
8304/**
8305 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
8306 */
8307private pattern mustInRelationeClassifier_reference_EGenericType(
8308 problem:LogicProblem, interpretation:PartialInterpretation,
8309 source: DefinedElement, target:DefinedElement)
8310{
8311 find interpretation(problem,interpretation);
8312 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8313 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
8314 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8315 BinaryElementRelationLink.param1(link,source);
8316 BinaryElementRelationLink.param2(link,target);
8317}
8318/**
8319 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
8320 */
8321private pattern mayInRelationeClassifier_reference_EGenericType(
8322 problem:LogicProblem, interpretation:PartialInterpretation,
8323 source: DefinedElement, target:DefinedElement)
8324{
8325 find interpretation(problem,interpretation);
8326 // The two endpoint of the link have to exist
8327 find mayExist(problem, interpretation, source);
8328 find mayExist(problem, interpretation, target);
8329 // Type consistency
8330 find mayInstanceOfEGenericType_class(problem,interpretation,source);
8331 find mayInstanceOfEClassifier_class(problem,interpretation,target);
8332 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8333 // the upper bound of the multiplicity should be considered.
8334 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
8335 check(numberOfExistingReferences < 1);
8336} or {
8337 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
8338}
8339/**
8340 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
8341 */
8342private pattern mustInRelationeBounds_reference_ETypeParameter(
8343 problem:LogicProblem, interpretation:PartialInterpretation,
8344 source: DefinedElement, target:DefinedElement)
8345{
8346 find interpretation(problem,interpretation);
8347 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8348 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
8349 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8350 BinaryElementRelationLink.param1(link,source);
8351 BinaryElementRelationLink.param2(link,target);
8352}
8353/**
8354 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
8355 */
8356private pattern mayInRelationeBounds_reference_ETypeParameter(
8357 problem:LogicProblem, interpretation:PartialInterpretation,
8358 source: DefinedElement, target:DefinedElement)
8359{
8360 find interpretation(problem,interpretation);
8361 // The two endpoint of the link have to exist
8362 find mayExist(problem, interpretation, source);
8363 find mayExist(problem, interpretation, target);
8364 // Type consistency
8365 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
8366 find mayInstanceOfEGenericType_class(problem,interpretation,target);
8367 // The reference is containment, then a new reference cannot be create if:
8368 // 1. Multiple parents
8369 neg find mustContains4(problem,interpretation,_,target);
8370 // 2. Circle in the containment hierarchy
8371 neg find mustTransitiveContains(source,target);
8372} or {
8373 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
8374}
8375/**
8376 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
8377 */
8378private pattern mustInRelationiD_attribute_EAttribute(
8379 problem:LogicProblem, interpretation:PartialInterpretation,
8380 source: DefinedElement, target:DefinedElement)
8381{
8382 find interpretation(problem,interpretation);
8383 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8384 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
8385 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8386 BinaryElementRelationLink.param1(link,source);
8387 BinaryElementRelationLink.param2(link,target);
8388}
8389/**
8390 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
8391 */
8392private pattern mayInRelationiD_attribute_EAttribute(
8393 problem:LogicProblem, interpretation:PartialInterpretation,
8394 source: DefinedElement, target:DefinedElement)
8395{
8396 find interpretation(problem,interpretation);
8397 // The two endpoint of the link have to exist
8398 find mayExist(problem, interpretation, source);
8399 find mayExist(problem, interpretation, target);
8400 // Type consistency
8401 find mayInstanceOfEAttribute_class(problem,interpretation,source);
8402 BooleanElement(target);
8403 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8404 // the upper bound of the multiplicity should be considered.
8405 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
8406 check(numberOfExistingReferences < 1);
8407} or {
8408 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
8409}
8410/**
8411 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
8412 */
8413private pattern mustInRelationsource_attribute_EAnnotation(
8414 problem:LogicProblem, interpretation:PartialInterpretation,
8415 source: DefinedElement, target:DefinedElement)
8416{
8417 find interpretation(problem,interpretation);
8418 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8419 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
8420 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8421 BinaryElementRelationLink.param1(link,source);
8422 BinaryElementRelationLink.param2(link,target);
8423}
8424/**
8425 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
8426 */
8427private pattern mayInRelationsource_attribute_EAnnotation(
8428 problem:LogicProblem, interpretation:PartialInterpretation,
8429 source: DefinedElement, target:DefinedElement)
8430{
8431 find interpretation(problem,interpretation);
8432 // The two endpoint of the link have to exist
8433 find mayExist(problem, interpretation, source);
8434 find mayExist(problem, interpretation, target);
8435 // Type consistency
8436 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
8437 StringElement(target);
8438 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8439 // the upper bound of the multiplicity should be considered.
8440 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
8441 check(numberOfExistingReferences < 1);
8442} or {
8443 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
8444}
8445/**
8446 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
8447 */
8448private pattern mustInRelationabstract_attribute_EClass(
8449 problem:LogicProblem, interpretation:PartialInterpretation,
8450 source: DefinedElement, target:DefinedElement)
8451{
8452 find interpretation(problem,interpretation);
8453 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8454 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
8455 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8456 BinaryElementRelationLink.param1(link,source);
8457 BinaryElementRelationLink.param2(link,target);
8458}
8459/**
8460 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
8461 */
8462private pattern mayInRelationabstract_attribute_EClass(
8463 problem:LogicProblem, interpretation:PartialInterpretation,
8464 source: DefinedElement, target:DefinedElement)
8465{
8466 find interpretation(problem,interpretation);
8467 // The two endpoint of the link have to exist
8468 find mayExist(problem, interpretation, source);
8469 find mayExist(problem, interpretation, target);
8470 // Type consistency
8471 find mayInstanceOfEClass_class(problem,interpretation,source);
8472 BooleanElement(target);
8473 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8474 // the upper bound of the multiplicity should be considered.
8475 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
8476 check(numberOfExistingReferences < 1);
8477} or {
8478 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
8479}
8480/**
8481 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
8482 */
8483private pattern mustInRelationinterface_attribute_EClass(
8484 problem:LogicProblem, interpretation:PartialInterpretation,
8485 source: DefinedElement, target:DefinedElement)
8486{
8487 find interpretation(problem,interpretation);
8488 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8489 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
8490 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8491 BinaryElementRelationLink.param1(link,source);
8492 BinaryElementRelationLink.param2(link,target);
8493}
8494/**
8495 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
8496 */
8497private pattern mayInRelationinterface_attribute_EClass(
8498 problem:LogicProblem, interpretation:PartialInterpretation,
8499 source: DefinedElement, target:DefinedElement)
8500{
8501 find interpretation(problem,interpretation);
8502 // The two endpoint of the link have to exist
8503 find mayExist(problem, interpretation, source);
8504 find mayExist(problem, interpretation, target);
8505 // Type consistency
8506 find mayInstanceOfEClass_class(problem,interpretation,source);
8507 BooleanElement(target);
8508 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8509 // the upper bound of the multiplicity should be considered.
8510 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
8511 check(numberOfExistingReferences < 1);
8512} or {
8513 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
8514}
8515/**
8516 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
8517 */
8518private pattern mustInRelationinstanceClassName_attribute_EClassifier(
8519 problem:LogicProblem, interpretation:PartialInterpretation,
8520 source: DefinedElement, target:DefinedElement)
8521{
8522 find interpretation(problem,interpretation);
8523 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8524 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
8525 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8526 BinaryElementRelationLink.param1(link,source);
8527 BinaryElementRelationLink.param2(link,target);
8528}
8529/**
8530 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
8531 */
8532private pattern mayInRelationinstanceClassName_attribute_EClassifier(
8533 problem:LogicProblem, interpretation:PartialInterpretation,
8534 source: DefinedElement, target:DefinedElement)
8535{
8536 find interpretation(problem,interpretation);
8537 // The two endpoint of the link have to exist
8538 find mayExist(problem, interpretation, source);
8539 find mayExist(problem, interpretation, target);
8540 // Type consistency
8541 find mayInstanceOfEClassifier_class(problem,interpretation,source);
8542 StringElement(target);
8543 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8544 // the upper bound of the multiplicity should be considered.
8545 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
8546 check(numberOfExistingReferences < 1);
8547} or {
8548 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
8549}
8550/**
8551 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
8552 */
8553private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
8554 problem:LogicProblem, interpretation:PartialInterpretation,
8555 source: DefinedElement, target:DefinedElement)
8556{
8557 find interpretation(problem,interpretation);
8558 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8559 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
8560 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8561 BinaryElementRelationLink.param1(link,source);
8562 BinaryElementRelationLink.param2(link,target);
8563}
8564/**
8565 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
8566 */
8567private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
8568 problem:LogicProblem, interpretation:PartialInterpretation,
8569 source: DefinedElement, target:DefinedElement)
8570{
8571 find interpretation(problem,interpretation);
8572 // The two endpoint of the link have to exist
8573 find mayExist(problem, interpretation, source);
8574 find mayExist(problem, interpretation, target);
8575 // Type consistency
8576 find mayInstanceOfEClassifier_class(problem,interpretation,source);
8577 StringElement(target);
8578 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8579 // the upper bound of the multiplicity should be considered.
8580 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
8581 check(numberOfExistingReferences < 1);
8582} or {
8583 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
8584}
8585/**
8586 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
8587 */
8588private pattern mustInRelationserializable_attribute_EDataType(
8589 problem:LogicProblem, interpretation:PartialInterpretation,
8590 source: DefinedElement, target:DefinedElement)
8591{
8592 find interpretation(problem,interpretation);
8593 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8594 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
8595 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8596 BinaryElementRelationLink.param1(link,source);
8597 BinaryElementRelationLink.param2(link,target);
8598}
8599/**
8600 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
8601 */
8602private pattern mayInRelationserializable_attribute_EDataType(
8603 problem:LogicProblem, interpretation:PartialInterpretation,
8604 source: DefinedElement, target:DefinedElement)
8605{
8606 find interpretation(problem,interpretation);
8607 // The two endpoint of the link have to exist
8608 find mayExist(problem, interpretation, source);
8609 find mayExist(problem, interpretation, target);
8610 // Type consistency
8611 find mayInstanceOfEDataType_class(problem,interpretation,source);
8612 BooleanElement(target);
8613 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8614 // the upper bound of the multiplicity should be considered.
8615 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
8616 check(numberOfExistingReferences < 1);
8617} or {
8618 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
8619}
8620/**
8621 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
8622 */
8623private pattern mustInRelationvalue_attribute_EEnumLiteral(
8624 problem:LogicProblem, interpretation:PartialInterpretation,
8625 source: DefinedElement, target:DefinedElement)
8626{
8627 find interpretation(problem,interpretation);
8628 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8629 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
8630 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8631 BinaryElementRelationLink.param1(link,source);
8632 BinaryElementRelationLink.param2(link,target);
8633}
8634/**
8635 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
8636 */
8637private pattern mayInRelationvalue_attribute_EEnumLiteral(
8638 problem:LogicProblem, interpretation:PartialInterpretation,
8639 source: DefinedElement, target:DefinedElement)
8640{
8641 find interpretation(problem,interpretation);
8642 // The two endpoint of the link have to exist
8643 find mayExist(problem, interpretation, source);
8644 find mayExist(problem, interpretation, target);
8645 // Type consistency
8646 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
8647 IntegerElement(target);
8648 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8649 // the upper bound of the multiplicity should be considered.
8650 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
8651 check(numberOfExistingReferences < 1);
8652} or {
8653 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
8654}
8655/**
8656 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
8657 */
8658private pattern mustInRelationliteral_attribute_EEnumLiteral(
8659 problem:LogicProblem, interpretation:PartialInterpretation,
8660 source: DefinedElement, target:DefinedElement)
8661{
8662 find interpretation(problem,interpretation);
8663 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8664 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
8665 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8666 BinaryElementRelationLink.param1(link,source);
8667 BinaryElementRelationLink.param2(link,target);
8668}
8669/**
8670 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
8671 */
8672private pattern mayInRelationliteral_attribute_EEnumLiteral(
8673 problem:LogicProblem, interpretation:PartialInterpretation,
8674 source: DefinedElement, target:DefinedElement)
8675{
8676 find interpretation(problem,interpretation);
8677 // The two endpoint of the link have to exist
8678 find mayExist(problem, interpretation, source);
8679 find mayExist(problem, interpretation, target);
8680 // Type consistency
8681 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
8682 StringElement(target);
8683 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8684 // the upper bound of the multiplicity should be considered.
8685 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
8686 check(numberOfExistingReferences < 1);
8687} or {
8688 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
8689}
8690/**
8691 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
8692 */
8693private pattern mustInRelationname_attribute_ENamedElement(
8694 problem:LogicProblem, interpretation:PartialInterpretation,
8695 source: DefinedElement, target:DefinedElement)
8696{
8697 find interpretation(problem,interpretation);
8698 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8699 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
8700 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8701 BinaryElementRelationLink.param1(link,source);
8702 BinaryElementRelationLink.param2(link,target);
8703}
8704/**
8705 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
8706 */
8707private pattern mayInRelationname_attribute_ENamedElement(
8708 problem:LogicProblem, interpretation:PartialInterpretation,
8709 source: DefinedElement, target:DefinedElement)
8710{
8711 find interpretation(problem,interpretation);
8712 // The two endpoint of the link have to exist
8713 find mayExist(problem, interpretation, source);
8714 find mayExist(problem, interpretation, target);
8715 // Type consistency
8716 find mayInstanceOfENamedElement_class(problem,interpretation,source);
8717 StringElement(target);
8718 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8719 // the upper bound of the multiplicity should be considered.
8720 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
8721 check(numberOfExistingReferences < 1);
8722} or {
8723 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
8724}
8725/**
8726 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
8727 */
8728private pattern mustInRelationnsURI_attribute_EPackage(
8729 problem:LogicProblem, interpretation:PartialInterpretation,
8730 source: DefinedElement, target:DefinedElement)
8731{
8732 find interpretation(problem,interpretation);
8733 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8734 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
8735 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8736 BinaryElementRelationLink.param1(link,source);
8737 BinaryElementRelationLink.param2(link,target);
8738}
8739/**
8740 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
8741 */
8742private pattern mayInRelationnsURI_attribute_EPackage(
8743 problem:LogicProblem, interpretation:PartialInterpretation,
8744 source: DefinedElement, target:DefinedElement)
8745{
8746 find interpretation(problem,interpretation);
8747 // The two endpoint of the link have to exist
8748 find mayExist(problem, interpretation, source);
8749 find mayExist(problem, interpretation, target);
8750 // Type consistency
8751 find mayInstanceOfEPackage_class(problem,interpretation,source);
8752 StringElement(target);
8753 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8754 // the upper bound of the multiplicity should be considered.
8755 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
8756 check(numberOfExistingReferences < 1);
8757} or {
8758 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
8759}
8760/**
8761 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
8762 */
8763private pattern mustInRelationnsPrefix_attribute_EPackage(
8764 problem:LogicProblem, interpretation:PartialInterpretation,
8765 source: DefinedElement, target:DefinedElement)
8766{
8767 find interpretation(problem,interpretation);
8768 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8769 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
8770 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8771 BinaryElementRelationLink.param1(link,source);
8772 BinaryElementRelationLink.param2(link,target);
8773}
8774/**
8775 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
8776 */
8777private pattern mayInRelationnsPrefix_attribute_EPackage(
8778 problem:LogicProblem, interpretation:PartialInterpretation,
8779 source: DefinedElement, target:DefinedElement)
8780{
8781 find interpretation(problem,interpretation);
8782 // The two endpoint of the link have to exist
8783 find mayExist(problem, interpretation, source);
8784 find mayExist(problem, interpretation, target);
8785 // Type consistency
8786 find mayInstanceOfEPackage_class(problem,interpretation,source);
8787 StringElement(target);
8788 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8789 // the upper bound of the multiplicity should be considered.
8790 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
8791 check(numberOfExistingReferences < 1);
8792} or {
8793 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
8794}
8795/**
8796 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
8797 */
8798private pattern mustInRelationcontainment_attribute_EReference(
8799 problem:LogicProblem, interpretation:PartialInterpretation,
8800 source: DefinedElement, target:DefinedElement)
8801{
8802 find interpretation(problem,interpretation);
8803 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8804 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
8805 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8806 BinaryElementRelationLink.param1(link,source);
8807 BinaryElementRelationLink.param2(link,target);
8808}
8809/**
8810 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
8811 */
8812private pattern mayInRelationcontainment_attribute_EReference(
8813 problem:LogicProblem, interpretation:PartialInterpretation,
8814 source: DefinedElement, target:DefinedElement)
8815{
8816 find interpretation(problem,interpretation);
8817 // The two endpoint of the link have to exist
8818 find mayExist(problem, interpretation, source);
8819 find mayExist(problem, interpretation, target);
8820 // Type consistency
8821 find mayInstanceOfEReference_class(problem,interpretation,source);
8822 BooleanElement(target);
8823 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8824 // the upper bound of the multiplicity should be considered.
8825 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
8826 check(numberOfExistingReferences < 1);
8827} or {
8828 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
8829}
8830/**
8831 * Matcher for detecting tuples t where []container attribute EReference(source,target)
8832 */
8833private pattern mustInRelationcontainer_attribute_EReference(
8834 problem:LogicProblem, interpretation:PartialInterpretation,
8835 source: DefinedElement, target:DefinedElement)
8836{
8837 find interpretation(problem,interpretation);
8838 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8839 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
8840 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8841 BinaryElementRelationLink.param1(link,source);
8842 BinaryElementRelationLink.param2(link,target);
8843}
8844/**
8845 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
8846 */
8847private pattern mayInRelationcontainer_attribute_EReference(
8848 problem:LogicProblem, interpretation:PartialInterpretation,
8849 source: DefinedElement, target:DefinedElement)
8850{
8851 find interpretation(problem,interpretation);
8852 // The two endpoint of the link have to exist
8853 find mayExist(problem, interpretation, source);
8854 find mayExist(problem, interpretation, target);
8855 // Type consistency
8856 find mayInstanceOfEReference_class(problem,interpretation,source);
8857 BooleanElement(target);
8858 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8859 // the upper bound of the multiplicity should be considered.
8860 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
8861 check(numberOfExistingReferences < 1);
8862} or {
8863 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
8864}
8865/**
8866 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
8867 */
8868private pattern mustInRelationresolveProxies_attribute_EReference(
8869 problem:LogicProblem, interpretation:PartialInterpretation,
8870 source: DefinedElement, target:DefinedElement)
8871{
8872 find interpretation(problem,interpretation);
8873 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8874 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
8875 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8876 BinaryElementRelationLink.param1(link,source);
8877 BinaryElementRelationLink.param2(link,target);
8878}
8879/**
8880 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
8881 */
8882private pattern mayInRelationresolveProxies_attribute_EReference(
8883 problem:LogicProblem, interpretation:PartialInterpretation,
8884 source: DefinedElement, target:DefinedElement)
8885{
8886 find interpretation(problem,interpretation);
8887 // The two endpoint of the link have to exist
8888 find mayExist(problem, interpretation, source);
8889 find mayExist(problem, interpretation, target);
8890 // Type consistency
8891 find mayInstanceOfEReference_class(problem,interpretation,source);
8892 BooleanElement(target);
8893 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8894 // the upper bound of the multiplicity should be considered.
8895 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
8896 check(numberOfExistingReferences < 1);
8897} or {
8898 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
8899}
8900/**
8901 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
8902 */
8903private pattern mustInRelationchangeable_attribute_EStructuralFeature(
8904 problem:LogicProblem, interpretation:PartialInterpretation,
8905 source: DefinedElement, target:DefinedElement)
8906{
8907 find interpretation(problem,interpretation);
8908 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8909 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
8910 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8911 BinaryElementRelationLink.param1(link,source);
8912 BinaryElementRelationLink.param2(link,target);
8913}
8914/**
8915 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
8916 */
8917private pattern mayInRelationchangeable_attribute_EStructuralFeature(
8918 problem:LogicProblem, interpretation:PartialInterpretation,
8919 source: DefinedElement, target:DefinedElement)
8920{
8921 find interpretation(problem,interpretation);
8922 // The two endpoint of the link have to exist
8923 find mayExist(problem, interpretation, source);
8924 find mayExist(problem, interpretation, target);
8925 // Type consistency
8926 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
8927 BooleanElement(target);
8928 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8929 // the upper bound of the multiplicity should be considered.
8930 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
8931 check(numberOfExistingReferences < 1);
8932} or {
8933 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
8934}
8935/**
8936 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
8937 */
8938private pattern mustInRelationvolatile_attribute_EStructuralFeature(
8939 problem:LogicProblem, interpretation:PartialInterpretation,
8940 source: DefinedElement, target:DefinedElement)
8941{
8942 find interpretation(problem,interpretation);
8943 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8944 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
8945 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8946 BinaryElementRelationLink.param1(link,source);
8947 BinaryElementRelationLink.param2(link,target);
8948}
8949/**
8950 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
8951 */
8952private pattern mayInRelationvolatile_attribute_EStructuralFeature(
8953 problem:LogicProblem, interpretation:PartialInterpretation,
8954 source: DefinedElement, target:DefinedElement)
8955{
8956 find interpretation(problem,interpretation);
8957 // The two endpoint of the link have to exist
8958 find mayExist(problem, interpretation, source);
8959 find mayExist(problem, interpretation, target);
8960 // Type consistency
8961 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
8962 BooleanElement(target);
8963 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8964 // the upper bound of the multiplicity should be considered.
8965 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
8966 check(numberOfExistingReferences < 1);
8967} or {
8968 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
8969}
8970/**
8971 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
8972 */
8973private pattern mustInRelationtransient_attribute_EStructuralFeature(
8974 problem:LogicProblem, interpretation:PartialInterpretation,
8975 source: DefinedElement, target:DefinedElement)
8976{
8977 find interpretation(problem,interpretation);
8978 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8979 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
8980 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8981 BinaryElementRelationLink.param1(link,source);
8982 BinaryElementRelationLink.param2(link,target);
8983}
8984/**
8985 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
8986 */
8987private pattern mayInRelationtransient_attribute_EStructuralFeature(
8988 problem:LogicProblem, interpretation:PartialInterpretation,
8989 source: DefinedElement, target:DefinedElement)
8990{
8991 find interpretation(problem,interpretation);
8992 // The two endpoint of the link have to exist
8993 find mayExist(problem, interpretation, source);
8994 find mayExist(problem, interpretation, target);
8995 // Type consistency
8996 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
8997 BooleanElement(target);
8998 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8999 // the upper bound of the multiplicity should be considered.
9000 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
9001 check(numberOfExistingReferences < 1);
9002} or {
9003 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
9004}
9005/**
9006 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
9007 */
9008private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
9009 problem:LogicProblem, interpretation:PartialInterpretation,
9010 source: DefinedElement, target:DefinedElement)
9011{
9012 find interpretation(problem,interpretation);
9013 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9014 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
9015 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9016 BinaryElementRelationLink.param1(link,source);
9017 BinaryElementRelationLink.param2(link,target);
9018}
9019/**
9020 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
9021 */
9022private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
9023 problem:LogicProblem, interpretation:PartialInterpretation,
9024 source: DefinedElement, target:DefinedElement)
9025{
9026 find interpretation(problem,interpretation);
9027 // The two endpoint of the link have to exist
9028 find mayExist(problem, interpretation, source);
9029 find mayExist(problem, interpretation, target);
9030 // Type consistency
9031 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
9032 StringElement(target);
9033 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9034 // the upper bound of the multiplicity should be considered.
9035 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
9036 check(numberOfExistingReferences < 1);
9037} or {
9038 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
9039}
9040/**
9041 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
9042 */
9043private pattern mustInRelationunsettable_attribute_EStructuralFeature(
9044 problem:LogicProblem, interpretation:PartialInterpretation,
9045 source: DefinedElement, target:DefinedElement)
9046{
9047 find interpretation(problem,interpretation);
9048 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9049 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
9050 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9051 BinaryElementRelationLink.param1(link,source);
9052 BinaryElementRelationLink.param2(link,target);
9053}
9054/**
9055 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
9056 */
9057private pattern mayInRelationunsettable_attribute_EStructuralFeature(
9058 problem:LogicProblem, interpretation:PartialInterpretation,
9059 source: DefinedElement, target:DefinedElement)
9060{
9061 find interpretation(problem,interpretation);
9062 // The two endpoint of the link have to exist
9063 find mayExist(problem, interpretation, source);
9064 find mayExist(problem, interpretation, target);
9065 // Type consistency
9066 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
9067 BooleanElement(target);
9068 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9069 // the upper bound of the multiplicity should be considered.
9070 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
9071 check(numberOfExistingReferences < 1);
9072} or {
9073 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
9074}
9075/**
9076 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
9077 */
9078private pattern mustInRelationderived_attribute_EStructuralFeature(
9079 problem:LogicProblem, interpretation:PartialInterpretation,
9080 source: DefinedElement, target:DefinedElement)
9081{
9082 find interpretation(problem,interpretation);
9083 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9084 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
9085 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9086 BinaryElementRelationLink.param1(link,source);
9087 BinaryElementRelationLink.param2(link,target);
9088}
9089/**
9090 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
9091 */
9092private pattern mayInRelationderived_attribute_EStructuralFeature(
9093 problem:LogicProblem, interpretation:PartialInterpretation,
9094 source: DefinedElement, target:DefinedElement)
9095{
9096 find interpretation(problem,interpretation);
9097 // The two endpoint of the link have to exist
9098 find mayExist(problem, interpretation, source);
9099 find mayExist(problem, interpretation, target);
9100 // Type consistency
9101 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
9102 BooleanElement(target);
9103 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9104 // the upper bound of the multiplicity should be considered.
9105 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
9106 check(numberOfExistingReferences < 1);
9107} or {
9108 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
9109}
9110/**
9111 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
9112 */
9113private pattern mustInRelationordered_attribute_ETypedElement(
9114 problem:LogicProblem, interpretation:PartialInterpretation,
9115 source: DefinedElement, target:DefinedElement)
9116{
9117 find interpretation(problem,interpretation);
9118 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9119 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
9120 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9121 BinaryElementRelationLink.param1(link,source);
9122 BinaryElementRelationLink.param2(link,target);
9123}
9124/**
9125 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
9126 */
9127private pattern mayInRelationordered_attribute_ETypedElement(
9128 problem:LogicProblem, interpretation:PartialInterpretation,
9129 source: DefinedElement, target:DefinedElement)
9130{
9131 find interpretation(problem,interpretation);
9132 // The two endpoint of the link have to exist
9133 find mayExist(problem, interpretation, source);
9134 find mayExist(problem, interpretation, target);
9135 // Type consistency
9136 find mayInstanceOfETypedElement_class(problem,interpretation,source);
9137 BooleanElement(target);
9138 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9139 // the upper bound of the multiplicity should be considered.
9140 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
9141 check(numberOfExistingReferences < 1);
9142} or {
9143 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
9144}
9145/**
9146 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
9147 */
9148private pattern mustInRelationunique_attribute_ETypedElement(
9149 problem:LogicProblem, interpretation:PartialInterpretation,
9150 source: DefinedElement, target:DefinedElement)
9151{
9152 find interpretation(problem,interpretation);
9153 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9154 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
9155 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9156 BinaryElementRelationLink.param1(link,source);
9157 BinaryElementRelationLink.param2(link,target);
9158}
9159/**
9160 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
9161 */
9162private pattern mayInRelationunique_attribute_ETypedElement(
9163 problem:LogicProblem, interpretation:PartialInterpretation,
9164 source: DefinedElement, target:DefinedElement)
9165{
9166 find interpretation(problem,interpretation);
9167 // The two endpoint of the link have to exist
9168 find mayExist(problem, interpretation, source);
9169 find mayExist(problem, interpretation, target);
9170 // Type consistency
9171 find mayInstanceOfETypedElement_class(problem,interpretation,source);
9172 BooleanElement(target);
9173 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9174 // the upper bound of the multiplicity should be considered.
9175 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
9176 check(numberOfExistingReferences < 1);
9177} or {
9178 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
9179}
9180/**
9181 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
9182 */
9183private pattern mustInRelationlowerBound_attribute_ETypedElement(
9184 problem:LogicProblem, interpretation:PartialInterpretation,
9185 source: DefinedElement, target:DefinedElement)
9186{
9187 find interpretation(problem,interpretation);
9188 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9189 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
9190 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9191 BinaryElementRelationLink.param1(link,source);
9192 BinaryElementRelationLink.param2(link,target);
9193}
9194/**
9195 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
9196 */
9197private pattern mayInRelationlowerBound_attribute_ETypedElement(
9198 problem:LogicProblem, interpretation:PartialInterpretation,
9199 source: DefinedElement, target:DefinedElement)
9200{
9201 find interpretation(problem,interpretation);
9202 // The two endpoint of the link have to exist
9203 find mayExist(problem, interpretation, source);
9204 find mayExist(problem, interpretation, target);
9205 // Type consistency
9206 find mayInstanceOfETypedElement_class(problem,interpretation,source);
9207 IntegerElement(target);
9208 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9209 // the upper bound of the multiplicity should be considered.
9210 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
9211 check(numberOfExistingReferences < 1);
9212} or {
9213 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
9214}
9215/**
9216 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
9217 */
9218private pattern mustInRelationupperBound_attribute_ETypedElement(
9219 problem:LogicProblem, interpretation:PartialInterpretation,
9220 source: DefinedElement, target:DefinedElement)
9221{
9222 find interpretation(problem,interpretation);
9223 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9224 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
9225 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9226 BinaryElementRelationLink.param1(link,source);
9227 BinaryElementRelationLink.param2(link,target);
9228}
9229/**
9230 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
9231 */
9232private pattern mayInRelationupperBound_attribute_ETypedElement(
9233 problem:LogicProblem, interpretation:PartialInterpretation,
9234 source: DefinedElement, target:DefinedElement)
9235{
9236 find interpretation(problem,interpretation);
9237 // The two endpoint of the link have to exist
9238 find mayExist(problem, interpretation, source);
9239 find mayExist(problem, interpretation, target);
9240 // Type consistency
9241 find mayInstanceOfETypedElement_class(problem,interpretation,source);
9242 IntegerElement(target);
9243 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9244 // the upper bound of the multiplicity should be considered.
9245 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
9246 check(numberOfExistingReferences < 1);
9247} or {
9248 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
9249}
9250/**
9251 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
9252 */
9253private pattern mustInRelationmany_attribute_ETypedElement(
9254 problem:LogicProblem, interpretation:PartialInterpretation,
9255 source: DefinedElement, target:DefinedElement)
9256{
9257 find interpretation(problem,interpretation);
9258 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9259 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
9260 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9261 BinaryElementRelationLink.param1(link,source);
9262 BinaryElementRelationLink.param2(link,target);
9263}
9264/**
9265 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
9266 */
9267private pattern mayInRelationmany_attribute_ETypedElement(
9268 problem:LogicProblem, interpretation:PartialInterpretation,
9269 source: DefinedElement, target:DefinedElement)
9270{
9271 find interpretation(problem,interpretation);
9272 // The two endpoint of the link have to exist
9273 find mayExist(problem, interpretation, source);
9274 find mayExist(problem, interpretation, target);
9275 // Type consistency
9276 find mayInstanceOfETypedElement_class(problem,interpretation,source);
9277 BooleanElement(target);
9278 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9279 // the upper bound of the multiplicity should be considered.
9280 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
9281 check(numberOfExistingReferences < 1);
9282} or {
9283 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
9284}
9285/**
9286 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
9287 */
9288private pattern mustInRelationrequired_attribute_ETypedElement(
9289 problem:LogicProblem, interpretation:PartialInterpretation,
9290 source: DefinedElement, target:DefinedElement)
9291{
9292 find interpretation(problem,interpretation);
9293 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9294 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
9295 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9296 BinaryElementRelationLink.param1(link,source);
9297 BinaryElementRelationLink.param2(link,target);
9298}
9299/**
9300 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
9301 */
9302private pattern mayInRelationrequired_attribute_ETypedElement(
9303 problem:LogicProblem, interpretation:PartialInterpretation,
9304 source: DefinedElement, target:DefinedElement)
9305{
9306 find interpretation(problem,interpretation);
9307 // The two endpoint of the link have to exist
9308 find mayExist(problem, interpretation, source);
9309 find mayExist(problem, interpretation, target);
9310 // Type consistency
9311 find mayInstanceOfETypedElement_class(problem,interpretation,source);
9312 BooleanElement(target);
9313 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9314 // the upper bound of the multiplicity should be considered.
9315 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
9316 check(numberOfExistingReferences < 1);
9317} or {
9318 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
9319}
9320/**
9321 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
9322 */
9323private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
9324 problem:LogicProblem, interpretation:PartialInterpretation,
9325 source: DefinedElement, target:DefinedElement)
9326{
9327 find interpretation(problem,interpretation);
9328 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9329 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
9330 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9331 BinaryElementRelationLink.param1(link,source);
9332 BinaryElementRelationLink.param2(link,target);
9333}
9334/**
9335 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
9336 */
9337private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
9338 problem:LogicProblem, interpretation:PartialInterpretation,
9339 source: DefinedElement, target:DefinedElement)
9340{
9341 find interpretation(problem,interpretation);
9342 // The two endpoint of the link have to exist
9343 find mayExist(problem, interpretation, source);
9344 find mayExist(problem, interpretation, target);
9345 // Type consistency
9346 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
9347 StringElement(target);
9348 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9349 // the upper bound of the multiplicity should be considered.
9350 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
9351 check(numberOfExistingReferences < 1);
9352} or {
9353 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
9354}
9355/**
9356 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
9357 */
9358private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
9359 problem:LogicProblem, interpretation:PartialInterpretation,
9360 source: DefinedElement, target:DefinedElement)
9361{
9362 find interpretation(problem,interpretation);
9363 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9364 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
9365 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9366 BinaryElementRelationLink.param1(link,source);
9367 BinaryElementRelationLink.param2(link,target);
9368}
9369/**
9370 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
9371 */
9372private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
9373 problem:LogicProblem, interpretation:PartialInterpretation,
9374 source: DefinedElement, target:DefinedElement)
9375{
9376 find interpretation(problem,interpretation);
9377 // The two endpoint of the link have to exist
9378 find mayExist(problem, interpretation, source);
9379 find mayExist(problem, interpretation, target);
9380 // Type consistency
9381 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
9382 StringElement(target);
9383 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9384 // the upper bound of the multiplicity should be considered.
9385 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
9386 check(numberOfExistingReferences < 1);
9387} or {
9388 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
9389}
9390
9391//////////
9392// 1.3 Relation Definition Indexers
9393//////////
9394
9395//////////
9396// 1.4 Containment Indexer
9397//////////
9398private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
9399 find mustContains4(_,_,source,target);
9400}
9401
9402private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
9403 source: DefinedElement, target: DefinedElement)
9404 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
9405
9406 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
9407
9408 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
9409
9410 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
9411
9412 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
9413
9414 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
9415
9416 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
9417
9418 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
9419
9420 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
9421
9422 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
9423
9424 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
9425
9426 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
9427
9428 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
9429
9430 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
9431
9432 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
9433
9434 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
9435
9436 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
9437
9438 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
9439
9440private pattern mustTransitiveContains(source,target) {
9441 find mustContains2+(source,target);
9442}
9443
9444//////////
9445// 2. Invalidation Indexers
9446//////////
9447// 2.1 Invalidated by WF Queries
9448//////////
9449
9450//////////
9451// 3. Unfinishedness Indexers
9452//////////
9453// 3.1 Unfinishedness Measured by Multiplicity
9454//////////
9455pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
9456 find interpretation(problem,interpretation);
9457 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9458 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
9459 find mustInstanceOfEAttribute_class(problem,interpretation,object);
9460 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
9461 check(numberOfExistingReferences < 1);
9462 missingMultiplicity == eval(1-numberOfExistingReferences);
9463}
9464pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
9465 find interpretation(problem,interpretation);
9466 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9467 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
9468 find mustInstanceOfEReference_class(problem,interpretation,object);
9469 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
9470 check(numberOfExistingReferences < 1);
9471 missingMultiplicity == eval(1-numberOfExistingReferences);
9472}
9473pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
9474 find interpretation(problem,interpretation);
9475 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9476 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
9477 find mustInstanceOfEGenericType_class(problem,interpretation,object);
9478 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
9479 check(numberOfExistingReferences < 1);
9480 missingMultiplicity == eval(1-numberOfExistingReferences);
9481}
9482
9483//////////
9484// 3.2 Unfinishedness Measured by WF Queries
9485//////////
9486
9487//////////
9488// 4. Refinement Indexers
9489//////////
9490// 4.1 Object constructors
9491//////////
9492private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
9493{
9494 find interpretation(problem,interpretation);
9495 find mustInstanceOfENamedElement_class(problem,interpretation,root);
9496 find mustExist(problem, interpretation, root);
9497}or{
9498 find interpretation(problem,interpretation);
9499 find mustInstanceOfEObject_class(problem,interpretation,root);
9500 find mustExist(problem, interpretation, root);
9501}or{
9502 find interpretation(problem,interpretation);
9503 find mustInstanceOfEParameter_class(problem,interpretation,root);
9504 find mustExist(problem, interpretation, root);
9505}or{
9506 find interpretation(problem,interpretation);
9507 find mustInstanceOfEReference_class(problem,interpretation,root);
9508 find mustExist(problem, interpretation, root);
9509}or{
9510 find interpretation(problem,interpretation);
9511 find mustInstanceOfEOperation_class(problem,interpretation,root);
9512 find mustExist(problem, interpretation, root);
9513}or{
9514 find interpretation(problem,interpretation);
9515 find mustInstanceOfEClass_class(problem,interpretation,root);
9516 find mustExist(problem, interpretation, root);
9517}or{
9518 find interpretation(problem,interpretation);
9519 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
9520 find mustExist(problem, interpretation, root);
9521}or{
9522 find interpretation(problem,interpretation);
9523 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
9524 find mustExist(problem, interpretation, root);
9525}or{
9526 find interpretation(problem,interpretation);
9527 find mustInstanceOfEModelElement_class(problem,interpretation,root);
9528 find mustExist(problem, interpretation, root);
9529}or{
9530 find interpretation(problem,interpretation);
9531 find mustInstanceOfEAttribute_class(problem,interpretation,root);
9532 find mustExist(problem, interpretation, root);
9533}or{
9534 find interpretation(problem,interpretation);
9535 find mustInstanceOfEClassifier_class(problem,interpretation,root);
9536 find mustExist(problem, interpretation, root);
9537}or{
9538 find interpretation(problem,interpretation);
9539 find mustInstanceOfETypedElement_class(problem,interpretation,root);
9540 find mustExist(problem, interpretation, root);
9541}or{
9542 find interpretation(problem,interpretation);
9543 find mustInstanceOfEPackage_class(problem,interpretation,root);
9544 find mustExist(problem, interpretation, root);
9545}or{
9546 find interpretation(problem,interpretation);
9547 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
9548 find mustExist(problem, interpretation, root);
9549}or{
9550 find interpretation(problem,interpretation);
9551 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
9552 find mustExist(problem, interpretation, root);
9553}or{
9554 find interpretation(problem,interpretation);
9555 find mustInstanceOfEEnum_class(problem,interpretation,root);
9556 find mustExist(problem, interpretation, root);
9557}or{
9558 find interpretation(problem,interpretation);
9559 find mustInstanceOfEDataType_class(problem,interpretation,root);
9560 find mustExist(problem, interpretation, root);
9561}or{
9562 find interpretation(problem,interpretation);
9563 find mustInstanceOfEGenericType_class(problem,interpretation,root);
9564 find mustExist(problem, interpretation, root);
9565}or{
9566 find interpretation(problem,interpretation);
9567 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
9568 find mustExist(problem, interpretation, root);
9569}or{
9570 find interpretation(problem,interpretation);
9571 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
9572 find mustExist(problem, interpretation, root);
9573}or{
9574 find interpretation(problem,interpretation);
9575 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
9576 find mustExist(problem, interpretation, root);
9577}or{
9578 find interpretation(problem,interpretation);
9579 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
9580 find mustExist(problem, interpretation, root);
9581}or{
9582 find interpretation(problem,interpretation);
9583 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
9584 find mustExist(problem, interpretation, root);
9585}or{
9586 find interpretation(problem,interpretation);
9587 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
9588 find mustExist(problem, interpretation, root);
9589}or{
9590 find interpretation(problem,interpretation);
9591 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
9592 find mustExist(problem, interpretation, root);
9593}
9594pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
9595 problem:LogicProblem, interpretation:PartialInterpretation,
9596 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9597 container:DefinedElement)
9598{
9599 find interpretation(problem,interpretation);
9600 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9601 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
9602 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9603 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
9604 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
9605 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
9606 find mustInstanceOfEPackage_class(problem,interpretation,container);
9607 find mayInstanceOfEClass_class(problem,interpretation,newObject);
9608 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
9609 find mustExist(problem, interpretation, container);
9610 neg find mustExist(problem, interpretation, newObject);
9611}
9612pattern createObject_EClass_class(
9613 problem:LogicProblem, interpretation:PartialInterpretation,
9614 typeInterpretation:PartialComplexTypeInterpretation)
9615{
9616 find interpretation(problem,interpretation);
9617 neg find hasElementInContainment(problem,interpretation);
9618 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9619 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
9620 find mayInstanceOfEClass_class(problem,interpretation,newObject);
9621 find mayExist(problem, interpretation, newObject);
9622 neg find mustExist(problem, interpretation, newObject);
9623}
9624pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
9625 problem:LogicProblem, interpretation:PartialInterpretation,
9626 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9627 container:DefinedElement)
9628{
9629 find interpretation(problem,interpretation);
9630 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9631 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
9632 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9633 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
9634 find mustInstanceOfEClassifier_class(problem,interpretation,container);
9635 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
9636 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
9637 find mustExist(problem, interpretation, container);
9638 neg find mustExist(problem, interpretation, newObject);
9639}
9640pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
9641 problem:LogicProblem, interpretation:PartialInterpretation,
9642 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9643 container:DefinedElement)
9644{
9645 find interpretation(problem,interpretation);
9646 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9647 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
9648 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9649 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
9650 find mustInstanceOfEOperation_class(problem,interpretation,container);
9651 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
9652 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
9653 find mustExist(problem, interpretation, container);
9654 neg find mustExist(problem, interpretation, newObject);
9655}
9656pattern createObject_ETypeParameter_class(
9657 problem:LogicProblem, interpretation:PartialInterpretation,
9658 typeInterpretation:PartialComplexTypeInterpretation)
9659{
9660 find interpretation(problem,interpretation);
9661 neg find hasElementInContainment(problem,interpretation);
9662 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9663 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
9664 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
9665 find mayExist(problem, interpretation, newObject);
9666 neg find mustExist(problem, interpretation, newObject);
9667}
9668pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
9669 problem:LogicProblem, interpretation:PartialInterpretation,
9670 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9671 container:DefinedElement)
9672{
9673 find interpretation(problem,interpretation);
9674 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9675 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
9676 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9677 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
9678 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
9679 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
9680 find mustInstanceOfEClass_class(problem,interpretation,container);
9681 find mayInstanceOfEReference_class(problem,interpretation,newObject);
9682 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
9683 find mustExist(problem, interpretation, container);
9684 neg find mustExist(problem, interpretation, newObject);
9685}
9686pattern createObject_EReference_class(
9687 problem:LogicProblem, interpretation:PartialInterpretation,
9688 typeInterpretation:PartialComplexTypeInterpretation)
9689{
9690 find interpretation(problem,interpretation);
9691 neg find hasElementInContainment(problem,interpretation);
9692 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9693 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
9694 find mayInstanceOfEReference_class(problem,interpretation,newObject);
9695 find mayExist(problem, interpretation, newObject);
9696 neg find mustExist(problem, interpretation, newObject);
9697}
9698pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
9699 problem:LogicProblem, interpretation:PartialInterpretation,
9700 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9701 container:DefinedElement)
9702{
9703 find interpretation(problem,interpretation);
9704 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9705 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
9706 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9707 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
9708 find mustInstanceOfEClass_class(problem,interpretation,container);
9709 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
9710 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
9711 find mustExist(problem, interpretation, container);
9712 neg find mustExist(problem, interpretation, newObject);
9713}
9714pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
9715 problem:LogicProblem, interpretation:PartialInterpretation,
9716 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9717 container:DefinedElement)
9718{
9719 find interpretation(problem,interpretation);
9720 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9721 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
9722 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9723 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
9724 find mustInstanceOfEOperation_class(problem,interpretation,container);
9725 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
9726 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
9727 find mustExist(problem, interpretation, container);
9728 neg find mustExist(problem, interpretation, newObject);
9729}
9730pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
9731 problem:LogicProblem, interpretation:PartialInterpretation,
9732 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9733 container:DefinedElement)
9734{
9735 find interpretation(problem,interpretation);
9736 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9737 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
9738 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9739 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
9740 find mustInstanceOfETypedElement_class(problem,interpretation,container);
9741 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
9742 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
9743 find mustExist(problem, interpretation, container);
9744 neg find mustExist(problem, interpretation, newObject);
9745}
9746pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
9747 problem:LogicProblem, interpretation:PartialInterpretation,
9748 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9749 container:DefinedElement)
9750{
9751 find interpretation(problem,interpretation);
9752 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9753 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
9754 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9755 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
9756 find mustInstanceOfEGenericType_class(problem,interpretation,container);
9757 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
9758 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
9759 find mustExist(problem, interpretation, container);
9760 neg find mustExist(problem, interpretation, newObject);
9761}
9762pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
9763 problem:LogicProblem, interpretation:PartialInterpretation,
9764 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9765 container:DefinedElement)
9766{
9767 find interpretation(problem,interpretation);
9768 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9769 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
9770 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9771 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
9772 find mustInstanceOfEGenericType_class(problem,interpretation,container);
9773 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
9774 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
9775 find mustExist(problem, interpretation, container);
9776 neg find mustExist(problem, interpretation, newObject);
9777}
9778pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
9779 problem:LogicProblem, interpretation:PartialInterpretation,
9780 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9781 container:DefinedElement)
9782{
9783 find interpretation(problem,interpretation);
9784 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9785 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
9786 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9787 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
9788 find mustInstanceOfEGenericType_class(problem,interpretation,container);
9789 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
9790 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
9791 find mustExist(problem, interpretation, container);
9792 neg find mustExist(problem, interpretation, newObject);
9793}
9794pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
9795 problem:LogicProblem, interpretation:PartialInterpretation,
9796 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9797 container:DefinedElement)
9798{
9799 find interpretation(problem,interpretation);
9800 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9801 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
9802 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9803 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
9804 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
9805 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
9806 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
9807 find mustExist(problem, interpretation, container);
9808 neg find mustExist(problem, interpretation, newObject);
9809}
9810pattern createObject_EGenericType_class(
9811 problem:LogicProblem, interpretation:PartialInterpretation,
9812 typeInterpretation:PartialComplexTypeInterpretation)
9813{
9814 find interpretation(problem,interpretation);
9815 neg find hasElementInContainment(problem,interpretation);
9816 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9817 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
9818 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
9819 find mayExist(problem, interpretation, newObject);
9820 neg find mustExist(problem, interpretation, newObject);
9821}
9822pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
9823 problem:LogicProblem, interpretation:PartialInterpretation,
9824 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9825 container:DefinedElement)
9826{
9827 find interpretation(problem,interpretation);
9828 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9829 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
9830 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9831 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
9832 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
9833 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
9834 find mustInstanceOfEModelElement_class(problem,interpretation,container);
9835 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
9836 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
9837 find mustExist(problem, interpretation, container);
9838 neg find mustExist(problem, interpretation, newObject);
9839}
9840pattern createObject_EAnnotation_class(
9841 problem:LogicProblem, interpretation:PartialInterpretation,
9842 typeInterpretation:PartialComplexTypeInterpretation)
9843{
9844 find interpretation(problem,interpretation);
9845 neg find hasElementInContainment(problem,interpretation);
9846 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9847 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
9848 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
9849 find mayExist(problem, interpretation, newObject);
9850 neg find mustExist(problem, interpretation, newObject);
9851}
9852pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
9853 problem:LogicProblem, interpretation:PartialInterpretation,
9854 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9855 container:DefinedElement)
9856{
9857 find interpretation(problem,interpretation);
9858 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9859 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
9860 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9861 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
9862 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
9863 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
9864 find mustInstanceOfEPackage_class(problem,interpretation,container);
9865 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
9866 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
9867 find mustExist(problem, interpretation, container);
9868 neg find mustExist(problem, interpretation, newObject);
9869}
9870pattern createObject_EEnum_class(
9871 problem:LogicProblem, interpretation:PartialInterpretation,
9872 typeInterpretation:PartialComplexTypeInterpretation)
9873{
9874 find interpretation(problem,interpretation);
9875 neg find hasElementInContainment(problem,interpretation);
9876 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9877 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
9878 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
9879 find mayExist(problem, interpretation, newObject);
9880 neg find mustExist(problem, interpretation, newObject);
9881}
9882pattern createObject_EObject_class_by_contents_reference_EAnnotation(
9883 problem:LogicProblem, interpretation:PartialInterpretation,
9884 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9885 container:DefinedElement)
9886{
9887 find interpretation(problem,interpretation);
9888 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9889 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
9890 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9891 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
9892 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
9893 find mayInstanceOfEObject_class(problem,interpretation,newObject);
9894 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
9895 find mustExist(problem, interpretation, container);
9896 neg find mustExist(problem, interpretation, newObject);
9897}
9898pattern createObject_EObject_class(
9899 problem:LogicProblem, interpretation:PartialInterpretation,
9900 typeInterpretation:PartialComplexTypeInterpretation)
9901{
9902 find interpretation(problem,interpretation);
9903 neg find hasElementInContainment(problem,interpretation);
9904 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9905 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
9906 find mayInstanceOfEObject_class(problem,interpretation,newObject);
9907 find mayExist(problem, interpretation, newObject);
9908 neg find mustExist(problem, interpretation, newObject);
9909}
9910pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
9911 problem:LogicProblem, interpretation:PartialInterpretation,
9912 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9913 container:DefinedElement)
9914{
9915 find interpretation(problem,interpretation);
9916 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9917 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
9918 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9919 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
9920 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
9921 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
9922 find mustInstanceOfEClass_class(problem,interpretation,container);
9923 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
9924 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
9925 find mustExist(problem, interpretation, container);
9926 neg find mustExist(problem, interpretation, newObject);
9927}
9928pattern createObject_EAttribute_class(
9929 problem:LogicProblem, interpretation:PartialInterpretation,
9930 typeInterpretation:PartialComplexTypeInterpretation)
9931{
9932 find interpretation(problem,interpretation);
9933 neg find hasElementInContainment(problem,interpretation);
9934 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9935 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
9936 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
9937 find mayExist(problem, interpretation, newObject);
9938 neg find mustExist(problem, interpretation, newObject);
9939}
9940pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
9941 problem:LogicProblem, interpretation:PartialInterpretation,
9942 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9943 container:DefinedElement)
9944{
9945 find interpretation(problem,interpretation);
9946 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9947 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
9948 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9949 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
9950 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
9951 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
9952 find mustInstanceOfEEnum_class(problem,interpretation,container);
9953 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
9954 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
9955 find mustExist(problem, interpretation, container);
9956 neg find mustExist(problem, interpretation, newObject);
9957}
9958pattern createObject_EEnumLiteral_class(
9959 problem:LogicProblem, interpretation:PartialInterpretation,
9960 typeInterpretation:PartialComplexTypeInterpretation)
9961{
9962 find interpretation(problem,interpretation);
9963 neg find hasElementInContainment(problem,interpretation);
9964 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9965 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
9966 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
9967 find mayExist(problem, interpretation, newObject);
9968 neg find mustExist(problem, interpretation, newObject);
9969}
9970pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
9971 problem:LogicProblem, interpretation:PartialInterpretation,
9972 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9973 container:DefinedElement)
9974{
9975 find interpretation(problem,interpretation);
9976 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9977 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
9978 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9979 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
9980 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
9981 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
9982 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
9983 find mustExist(problem, interpretation, container);
9984 neg find mustExist(problem, interpretation, newObject);
9985}
9986pattern createObject_EStringToStringMapEntry_class(
9987 problem:LogicProblem, interpretation:PartialInterpretation,
9988 typeInterpretation:PartialComplexTypeInterpretation)
9989{
9990 find interpretation(problem,interpretation);
9991 neg find hasElementInContainment(problem,interpretation);
9992 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9993 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
9994 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
9995 find mayExist(problem, interpretation, newObject);
9996 neg find mustExist(problem, interpretation, newObject);
9997}
9998pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
9999 problem:LogicProblem, interpretation:PartialInterpretation,
10000 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10001 container:DefinedElement)
10002{
10003 find interpretation(problem,interpretation);
10004 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10005 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
10006 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10007 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
10008 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10009 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
10010 find mustInstanceOfEPackage_class(problem,interpretation,container);
10011 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
10012 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
10013 find mustExist(problem, interpretation, container);
10014 neg find mustExist(problem, interpretation, newObject);
10015}
10016pattern createObject_EPackage_class_UndefinedPart(
10017 problem:LogicProblem, interpretation:PartialInterpretation,
10018 typeInterpretation:PartialComplexTypeInterpretation)
10019{
10020 find interpretation(problem,interpretation);
10021 neg find hasElementInContainment(problem,interpretation);
10022 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10023 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
10024 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
10025 find mayExist(problem, interpretation, newObject);
10026 neg find mustExist(problem, interpretation, newObject);
10027}
10028pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
10029 problem:LogicProblem, interpretation:PartialInterpretation,
10030 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10031 container:DefinedElement)
10032{
10033 find interpretation(problem,interpretation);
10034 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10035 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
10036 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10037 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
10038 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10039 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
10040 find mustInstanceOfEPackage_class(problem,interpretation,container);
10041 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
10042 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
10043 find mustExist(problem, interpretation, container);
10044 neg find mustExist(problem, interpretation, newObject);
10045}
10046pattern createObject_EDataType_class(
10047 problem:LogicProblem, interpretation:PartialInterpretation,
10048 typeInterpretation:PartialComplexTypeInterpretation)
10049{
10050 find interpretation(problem,interpretation);
10051 neg find hasElementInContainment(problem,interpretation);
10052 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10053 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
10054 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
10055 find mayExist(problem, interpretation, newObject);
10056 neg find mustExist(problem, interpretation, newObject);
10057}
10058pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
10059 problem:LogicProblem, interpretation:PartialInterpretation,
10060 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10061 container:DefinedElement)
10062{
10063 find interpretation(problem,interpretation);
10064 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10065 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
10066 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10067 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
10068 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10069 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
10070 find mustInstanceOfEClass_class(problem,interpretation,container);
10071 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
10072 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
10073 find mustExist(problem, interpretation, container);
10074 neg find mustExist(problem, interpretation, newObject);
10075}
10076pattern createObject_EOperation_class(
10077 problem:LogicProblem, interpretation:PartialInterpretation,
10078 typeInterpretation:PartialComplexTypeInterpretation)
10079{
10080 find interpretation(problem,interpretation);
10081 neg find hasElementInContainment(problem,interpretation);
10082 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10083 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
10084 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
10085 find mayExist(problem, interpretation, newObject);
10086 neg find mustExist(problem, interpretation, newObject);
10087}
10088pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
10089 problem:LogicProblem, interpretation:PartialInterpretation,
10090 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10091 container:DefinedElement)
10092{
10093 find interpretation(problem,interpretation);
10094 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10095 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
10096 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10097 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
10098 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10099 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
10100 find mustInstanceOfEOperation_class(problem,interpretation,container);
10101 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
10102 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
10103 find mustExist(problem, interpretation, container);
10104 neg find mustExist(problem, interpretation, newObject);
10105}
10106pattern createObject_EParameter_class(
10107 problem:LogicProblem, interpretation:PartialInterpretation,
10108 typeInterpretation:PartialComplexTypeInterpretation)
10109{
10110 find interpretation(problem,interpretation);
10111 neg find hasElementInContainment(problem,interpretation);
10112 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10113 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
10114 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
10115 find mayExist(problem, interpretation, newObject);
10116 neg find mustExist(problem, interpretation, newObject);
10117}
10118
10119//////////
10120// 4.2 Type refinement
10121//////////
10122pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10123 find interpretation(problem,interpretation);
10124 PartialInterpretation.newElements(interpretation,element);
10125 find mayInstanceOfEClass_class(problem,interpretation,element);
10126 neg find mustInstanceOfEClass_class(problem,interpretation,element);
10127 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10128 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10129 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10130 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10131 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
10132 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
10133 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10134 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10135 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
10136}
10137pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10138 find interpretation(problem,interpretation);
10139 PartialInterpretation.newElements(interpretation,element);
10140 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
10141 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10142 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10143 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
10144 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10145 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10146 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
10147 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10148 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10149 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
10150}
10151pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10152 find interpretation(problem,interpretation);
10153 PartialInterpretation.newElements(interpretation,element);
10154 find mayInstanceOfEReference_class(problem,interpretation,element);
10155 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10156 neg find mustInstanceOfEReference_class(problem,interpretation,element);
10157 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10158 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
10159 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10160 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10161 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
10162 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
10163 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
10164 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10165 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
10166 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10167}
10168pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10169 find interpretation(problem,interpretation);
10170 PartialInterpretation.newElements(interpretation,element);
10171 find mayInstanceOfEGenericType_class(problem,interpretation,element);
10172 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10173 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10174 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
10175 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10176}
10177pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10178 find interpretation(problem,interpretation);
10179 PartialInterpretation.newElements(interpretation,element);
10180 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
10181 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
10182 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10183 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10184 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10185 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10186}
10187pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10188 find interpretation(problem,interpretation);
10189 PartialInterpretation.newElements(interpretation,element);
10190 find mayInstanceOfEEnum_class(problem,interpretation,element);
10191 neg find mustInstanceOfEClass_class(problem,interpretation,element);
10192 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10193 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10194 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10195 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10196 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
10197 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
10198 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10199 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10200 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
10201}
10202pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10203 find interpretation(problem,interpretation);
10204 PartialInterpretation.newElements(interpretation,element);
10205 find mayInstanceOfEObject_class(problem,interpretation,element);
10206 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10207 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10208 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
10209 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10210}
10211pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10212 find interpretation(problem,interpretation);
10213 PartialInterpretation.newElements(interpretation,element);
10214 find mayInstanceOfEAttribute_class(problem,interpretation,element);
10215 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10216 neg find mustInstanceOfEReference_class(problem,interpretation,element);
10217 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10218 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
10219 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10220 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10221 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
10222 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
10223 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
10224 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10225 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10226 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
10227}
10228pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10229 find interpretation(problem,interpretation);
10230 PartialInterpretation.newElements(interpretation,element);
10231 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
10232 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10233 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10234 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10235 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
10236 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10237 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
10238 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10239 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10240 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
10241}
10242pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10243 find interpretation(problem,interpretation);
10244 PartialInterpretation.newElements(interpretation,element);
10245 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10246 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10247 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10248 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
10249 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10250}
10251pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10252 find interpretation(problem,interpretation);
10253 PartialInterpretation.newElements(interpretation,element);
10254 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
10255 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10256 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10257 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
10258 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10259 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
10260 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10261 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10262 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10263 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
10264}
10265pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10266 find interpretation(problem,interpretation);
10267 PartialInterpretation.newElements(interpretation,element);
10268 find mayInstanceOfEDataType_class(problem,interpretation,element);
10269 neg find mustInstanceOfEClass_class(problem,interpretation,element);
10270 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10271 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10272 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10273 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10274 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
10275 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
10276 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
10277 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10278 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10279 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
10280}
10281pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10282 find interpretation(problem,interpretation);
10283 PartialInterpretation.newElements(interpretation,element);
10284 find mayInstanceOfEOperation_class(problem,interpretation,element);
10285 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10286 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10287 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10288 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
10289 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10290 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
10291 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
10292 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
10293 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10294 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
10295 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10296}
10297pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10298 find interpretation(problem,interpretation);
10299 PartialInterpretation.newElements(interpretation,element);
10300 find mayInstanceOfEParameter_class(problem,interpretation,element);
10301 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
10302 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
10303 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
10304 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
10305 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
10306 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
10307 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
10308 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
10309 neg find mustInstanceOfEObject_class(problem,interpretation,element);
10310 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
10311 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
10312}
10313
10314//////////
10315// 4.3 Relation refinement
10316//////////
10317pattern refineRelation_eAttributeType_reference_EAttribute(
10318 problem:LogicProblem, interpretation:PartialInterpretation,
10319 relationIterpretation:PartialRelationInterpretation,
10320 from: DefinedElement, to: DefinedElement)
10321{
10322 find interpretation(problem,interpretation);
10323 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10324 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
10325 find mustExist(problem, interpretation, from);
10326 find mustExist(problem, interpretation, to);
10327 find mustInstanceOfEAttribute_class(problem,interpretation,from);
10328 find mustInstanceOfEDataType_class(problem,interpretation,to);
10329 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
10330 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
10331}
10332pattern refineRelation_references_reference_EAnnotation(
10333 problem:LogicProblem, interpretation:PartialInterpretation,
10334 relationIterpretation:PartialRelationInterpretation,
10335 from: DefinedElement, to: DefinedElement)
10336{
10337 find interpretation(problem,interpretation);
10338 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10339 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
10340 find mustExist(problem, interpretation, from);
10341 find mustExist(problem, interpretation, to);
10342 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
10343 find mustInstanceOfEObject_class(problem,interpretation,to);
10344 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
10345 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
10346}
10347pattern refineRelation_eSuperTypes_reference_EClass(
10348 problem:LogicProblem, interpretation:PartialInterpretation,
10349 relationIterpretation:PartialRelationInterpretation,
10350 from: DefinedElement, to: DefinedElement)
10351{
10352 find interpretation(problem,interpretation);
10353 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10354 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
10355 find mustExist(problem, interpretation, from);
10356 find mustExist(problem, interpretation, to);
10357 find mustInstanceOfEClass_class(problem,interpretation,from);
10358 find mustInstanceOfEClass_class(problem,interpretation,to);
10359 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
10360 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
10361}
10362pattern refineRelation_eAllAttributes_reference_EClass(
10363 problem:LogicProblem, interpretation:PartialInterpretation,
10364 relationIterpretation:PartialRelationInterpretation,
10365 from: DefinedElement, to: DefinedElement)
10366{
10367 find interpretation(problem,interpretation);
10368 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10369 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
10370 find mustExist(problem, interpretation, from);
10371 find mustExist(problem, interpretation, to);
10372 find mustInstanceOfEClass_class(problem,interpretation,from);
10373 find mustInstanceOfEAttribute_class(problem,interpretation,to);
10374 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
10375 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
10376}
10377pattern refineRelation_eAllReferences_reference_EClass(
10378 problem:LogicProblem, interpretation:PartialInterpretation,
10379 relationIterpretation:PartialRelationInterpretation,
10380 from: DefinedElement, to: DefinedElement)
10381{
10382 find interpretation(problem,interpretation);
10383 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10384 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
10385 find mustExist(problem, interpretation, from);
10386 find mustExist(problem, interpretation, to);
10387 find mustInstanceOfEClass_class(problem,interpretation,from);
10388 find mustInstanceOfEReference_class(problem,interpretation,to);
10389 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
10390 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
10391}
10392pattern refineRelation_eReferences_reference_EClass(
10393 problem:LogicProblem, interpretation:PartialInterpretation,
10394 relationIterpretation:PartialRelationInterpretation,
10395 from: DefinedElement, to: DefinedElement)
10396{
10397 find interpretation(problem,interpretation);
10398 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10399 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
10400 find mustExist(problem, interpretation, from);
10401 find mustExist(problem, interpretation, to);
10402 find mustInstanceOfEClass_class(problem,interpretation,from);
10403 find mustInstanceOfEReference_class(problem,interpretation,to);
10404 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
10405 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
10406}
10407pattern refineRelation_eAttributes_reference_EClass(
10408 problem:LogicProblem, interpretation:PartialInterpretation,
10409 relationIterpretation:PartialRelationInterpretation,
10410 from: DefinedElement, to: DefinedElement)
10411{
10412 find interpretation(problem,interpretation);
10413 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10414 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
10415 find mustExist(problem, interpretation, from);
10416 find mustExist(problem, interpretation, to);
10417 find mustInstanceOfEClass_class(problem,interpretation,from);
10418 find mustInstanceOfEAttribute_class(problem,interpretation,to);
10419 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
10420 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
10421}
10422pattern refineRelation_eAllContainments_reference_EClass(
10423 problem:LogicProblem, interpretation:PartialInterpretation,
10424 relationIterpretation:PartialRelationInterpretation,
10425 from: DefinedElement, to: DefinedElement)
10426{
10427 find interpretation(problem,interpretation);
10428 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10429 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
10430 find mustExist(problem, interpretation, from);
10431 find mustExist(problem, interpretation, to);
10432 find mustInstanceOfEClass_class(problem,interpretation,from);
10433 find mustInstanceOfEReference_class(problem,interpretation,to);
10434 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
10435 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
10436}
10437pattern refineRelation_eAllOperations_reference_EClass(
10438 problem:LogicProblem, interpretation:PartialInterpretation,
10439 relationIterpretation:PartialRelationInterpretation,
10440 from: DefinedElement, to: DefinedElement)
10441{
10442 find interpretation(problem,interpretation);
10443 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10444 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
10445 find mustExist(problem, interpretation, from);
10446 find mustExist(problem, interpretation, to);
10447 find mustInstanceOfEClass_class(problem,interpretation,from);
10448 find mustInstanceOfEOperation_class(problem,interpretation,to);
10449 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
10450 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
10451}
10452pattern refineRelation_eAllStructuralFeatures_reference_EClass(
10453 problem:LogicProblem, interpretation:PartialInterpretation,
10454 relationIterpretation:PartialRelationInterpretation,
10455 from: DefinedElement, to: DefinedElement)
10456{
10457 find interpretation(problem,interpretation);
10458 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10459 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
10460 find mustExist(problem, interpretation, from);
10461 find mustExist(problem, interpretation, to);
10462 find mustInstanceOfEClass_class(problem,interpretation,from);
10463 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
10464 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
10465 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
10466}
10467pattern refineRelation_eAllSuperTypes_reference_EClass(
10468 problem:LogicProblem, interpretation:PartialInterpretation,
10469 relationIterpretation:PartialRelationInterpretation,
10470 from: DefinedElement, to: DefinedElement)
10471{
10472 find interpretation(problem,interpretation);
10473 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10474 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
10475 find mustExist(problem, interpretation, from);
10476 find mustExist(problem, interpretation, to);
10477 find mustInstanceOfEClass_class(problem,interpretation,from);
10478 find mustInstanceOfEClass_class(problem,interpretation,to);
10479 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
10480 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
10481}
10482pattern refineRelation_eIDAttribute_reference_EClass(
10483 problem:LogicProblem, interpretation:PartialInterpretation,
10484 relationIterpretation:PartialRelationInterpretation,
10485 from: DefinedElement, to: DefinedElement)
10486{
10487 find interpretation(problem,interpretation);
10488 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10489 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
10490 find mustExist(problem, interpretation, from);
10491 find mustExist(problem, interpretation, to);
10492 find mustInstanceOfEClass_class(problem,interpretation,from);
10493 find mustInstanceOfEAttribute_class(problem,interpretation,to);
10494 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
10495 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
10496}
10497pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
10498 problem:LogicProblem, interpretation:PartialInterpretation,
10499 relationIterpretation:PartialRelationInterpretation,
10500 from: DefinedElement, to: DefinedElement)
10501{
10502 find interpretation(problem,interpretation);
10503 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10504 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
10505 find mustExist(problem, interpretation, from);
10506 find mustExist(problem, interpretation, to);
10507 find mustInstanceOfEClass_class(problem,interpretation,from);
10508 find mustInstanceOfEGenericType_class(problem,interpretation,to);
10509 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
10510 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
10511}
10512pattern refineRelation_eExceptions_reference_EOperation(
10513 problem:LogicProblem, interpretation:PartialInterpretation,
10514 relationIterpretation:PartialRelationInterpretation,
10515 from: DefinedElement, to: DefinedElement)
10516{
10517 find interpretation(problem,interpretation);
10518 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10519 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
10520 find mustExist(problem, interpretation, from);
10521 find mustExist(problem, interpretation, to);
10522 find mustInstanceOfEOperation_class(problem,interpretation,from);
10523 find mustInstanceOfEClassifier_class(problem,interpretation,to);
10524 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
10525 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
10526}
10527pattern refineRelation_eOpposite_reference_EReference(
10528 problem:LogicProblem, interpretation:PartialInterpretation,
10529 relationIterpretation:PartialRelationInterpretation,
10530 from: DefinedElement, to: DefinedElement)
10531{
10532 find interpretation(problem,interpretation);
10533 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10534 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
10535 find mustExist(problem, interpretation, from);
10536 find mustExist(problem, interpretation, to);
10537 find mustInstanceOfEReference_class(problem,interpretation,from);
10538 find mustInstanceOfEReference_class(problem,interpretation,to);
10539 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
10540 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
10541}
10542pattern refineRelation_eReferenceType_reference_EReference(
10543 problem:LogicProblem, interpretation:PartialInterpretation,
10544 relationIterpretation:PartialRelationInterpretation,
10545 from: DefinedElement, to: DefinedElement)
10546{
10547 find interpretation(problem,interpretation);
10548 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10549 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
10550 find mustExist(problem, interpretation, from);
10551 find mustExist(problem, interpretation, to);
10552 find mustInstanceOfEReference_class(problem,interpretation,from);
10553 find mustInstanceOfEClass_class(problem,interpretation,to);
10554 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
10555 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
10556}
10557pattern refineRelation_eKeys_reference_EReference(
10558 problem:LogicProblem, interpretation:PartialInterpretation,
10559 relationIterpretation:PartialRelationInterpretation,
10560 from: DefinedElement, to: DefinedElement)
10561{
10562 find interpretation(problem,interpretation);
10563 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10564 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
10565 find mustExist(problem, interpretation, from);
10566 find mustExist(problem, interpretation, to);
10567 find mustInstanceOfEReference_class(problem,interpretation,from);
10568 find mustInstanceOfEAttribute_class(problem,interpretation,to);
10569 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
10570 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
10571}
10572pattern refineRelation_eType_reference_ETypedElement(
10573 problem:LogicProblem, interpretation:PartialInterpretation,
10574 relationIterpretation:PartialRelationInterpretation,
10575 from: DefinedElement, to: DefinedElement)
10576{
10577 find interpretation(problem,interpretation);
10578 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10579 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
10580 find mustExist(problem, interpretation, from);
10581 find mustExist(problem, interpretation, to);
10582 find mustInstanceOfETypedElement_class(problem,interpretation,from);
10583 find mustInstanceOfEClassifier_class(problem,interpretation,to);
10584 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
10585 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
10586}
10587pattern refineRelation_eRawType_reference_EGenericType(
10588 problem:LogicProblem, interpretation:PartialInterpretation,
10589 relationIterpretation:PartialRelationInterpretation,
10590 from: DefinedElement, to: DefinedElement)
10591{
10592 find interpretation(problem,interpretation);
10593 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10594 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
10595 find mustExist(problem, interpretation, from);
10596 find mustExist(problem, interpretation, to);
10597 find mustInstanceOfEGenericType_class(problem,interpretation,from);
10598 find mustInstanceOfEClassifier_class(problem,interpretation,to);
10599 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
10600 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
10601}
10602pattern refineRelation_eTypeParameter_reference_EGenericType(
10603 problem:LogicProblem, interpretation:PartialInterpretation,
10604 relationIterpretation:PartialRelationInterpretation,
10605 from: DefinedElement, to: DefinedElement)
10606{
10607 find interpretation(problem,interpretation);
10608 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10609 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
10610 find mustExist(problem, interpretation, from);
10611 find mustExist(problem, interpretation, to);
10612 find mustInstanceOfEGenericType_class(problem,interpretation,from);
10613 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
10614 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
10615 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
10616}
10617pattern refineRelation_eClassifier_reference_EGenericType(
10618 problem:LogicProblem, interpretation:PartialInterpretation,
10619 relationIterpretation:PartialRelationInterpretation,
10620 from: DefinedElement, to: DefinedElement)
10621{
10622 find interpretation(problem,interpretation);
10623 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10624 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
10625 find mustExist(problem, interpretation, from);
10626 find mustExist(problem, interpretation, to);
10627 find mustInstanceOfEGenericType_class(problem,interpretation,from);
10628 find mustInstanceOfEClassifier_class(problem,interpretation,to);
10629 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
10630 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
10631}
10632pattern refineRelation_iD_attribute_EAttribute(
10633 problem:LogicProblem, interpretation:PartialInterpretation,
10634 relationIterpretation:PartialRelationInterpretation,
10635 from: DefinedElement, to: DefinedElement)
10636{
10637 find interpretation(problem,interpretation);
10638 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10639 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
10640 find mustExist(problem, interpretation, from);
10641 find mustExist(problem, interpretation, to);
10642 find mustInstanceOfEAttribute_class(problem,interpretation,from);
10643 BooleanElement(to);
10644 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
10645 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
10646}
10647pattern refineRelation_source_attribute_EAnnotation(
10648 problem:LogicProblem, interpretation:PartialInterpretation,
10649 relationIterpretation:PartialRelationInterpretation,
10650 from: DefinedElement, to: DefinedElement)
10651{
10652 find interpretation(problem,interpretation);
10653 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10654 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
10655 find mustExist(problem, interpretation, from);
10656 find mustExist(problem, interpretation, to);
10657 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
10658 StringElement(to);
10659 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
10660 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
10661}
10662pattern refineRelation_abstract_attribute_EClass(
10663 problem:LogicProblem, interpretation:PartialInterpretation,
10664 relationIterpretation:PartialRelationInterpretation,
10665 from: DefinedElement, to: DefinedElement)
10666{
10667 find interpretation(problem,interpretation);
10668 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10669 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
10670 find mustExist(problem, interpretation, from);
10671 find mustExist(problem, interpretation, to);
10672 find mustInstanceOfEClass_class(problem,interpretation,from);
10673 BooleanElement(to);
10674 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
10675 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
10676}
10677pattern refineRelation_interface_attribute_EClass(
10678 problem:LogicProblem, interpretation:PartialInterpretation,
10679 relationIterpretation:PartialRelationInterpretation,
10680 from: DefinedElement, to: DefinedElement)
10681{
10682 find interpretation(problem,interpretation);
10683 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10684 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
10685 find mustExist(problem, interpretation, from);
10686 find mustExist(problem, interpretation, to);
10687 find mustInstanceOfEClass_class(problem,interpretation,from);
10688 BooleanElement(to);
10689 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
10690 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
10691}
10692pattern refineRelation_instanceClassName_attribute_EClassifier(
10693 problem:LogicProblem, interpretation:PartialInterpretation,
10694 relationIterpretation:PartialRelationInterpretation,
10695 from: DefinedElement, to: DefinedElement)
10696{
10697 find interpretation(problem,interpretation);
10698 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10699 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
10700 find mustExist(problem, interpretation, from);
10701 find mustExist(problem, interpretation, to);
10702 find mustInstanceOfEClassifier_class(problem,interpretation,from);
10703 StringElement(to);
10704 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
10705 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
10706}
10707pattern refineRelation_instanceTypeName_attribute_EClassifier(
10708 problem:LogicProblem, interpretation:PartialInterpretation,
10709 relationIterpretation:PartialRelationInterpretation,
10710 from: DefinedElement, to: DefinedElement)
10711{
10712 find interpretation(problem,interpretation);
10713 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10714 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
10715 find mustExist(problem, interpretation, from);
10716 find mustExist(problem, interpretation, to);
10717 find mustInstanceOfEClassifier_class(problem,interpretation,from);
10718 StringElement(to);
10719 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
10720 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
10721}
10722pattern refineRelation_serializable_attribute_EDataType(
10723 problem:LogicProblem, interpretation:PartialInterpretation,
10724 relationIterpretation:PartialRelationInterpretation,
10725 from: DefinedElement, to: DefinedElement)
10726{
10727 find interpretation(problem,interpretation);
10728 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10729 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
10730 find mustExist(problem, interpretation, from);
10731 find mustExist(problem, interpretation, to);
10732 find mustInstanceOfEDataType_class(problem,interpretation,from);
10733 BooleanElement(to);
10734 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
10735 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
10736}
10737pattern refineRelation_value_attribute_EEnumLiteral(
10738 problem:LogicProblem, interpretation:PartialInterpretation,
10739 relationIterpretation:PartialRelationInterpretation,
10740 from: DefinedElement, to: DefinedElement)
10741{
10742 find interpretation(problem,interpretation);
10743 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10744 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
10745 find mustExist(problem, interpretation, from);
10746 find mustExist(problem, interpretation, to);
10747 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
10748 IntegerElement(to);
10749 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
10750 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
10751}
10752pattern refineRelation_literal_attribute_EEnumLiteral(
10753 problem:LogicProblem, interpretation:PartialInterpretation,
10754 relationIterpretation:PartialRelationInterpretation,
10755 from: DefinedElement, to: DefinedElement)
10756{
10757 find interpretation(problem,interpretation);
10758 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10759 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
10760 find mustExist(problem, interpretation, from);
10761 find mustExist(problem, interpretation, to);
10762 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
10763 StringElement(to);
10764 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
10765 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
10766}
10767pattern refineRelation_name_attribute_ENamedElement(
10768 problem:LogicProblem, interpretation:PartialInterpretation,
10769 relationIterpretation:PartialRelationInterpretation,
10770 from: DefinedElement, to: DefinedElement)
10771{
10772 find interpretation(problem,interpretation);
10773 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10774 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
10775 find mustExist(problem, interpretation, from);
10776 find mustExist(problem, interpretation, to);
10777 find mustInstanceOfENamedElement_class(problem,interpretation,from);
10778 StringElement(to);
10779 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
10780 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
10781}
10782pattern refineRelation_nsURI_attribute_EPackage(
10783 problem:LogicProblem, interpretation:PartialInterpretation,
10784 relationIterpretation:PartialRelationInterpretation,
10785 from: DefinedElement, to: DefinedElement)
10786{
10787 find interpretation(problem,interpretation);
10788 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10789 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
10790 find mustExist(problem, interpretation, from);
10791 find mustExist(problem, interpretation, to);
10792 find mustInstanceOfEPackage_class(problem,interpretation,from);
10793 StringElement(to);
10794 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
10795 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
10796}
10797pattern refineRelation_nsPrefix_attribute_EPackage(
10798 problem:LogicProblem, interpretation:PartialInterpretation,
10799 relationIterpretation:PartialRelationInterpretation,
10800 from: DefinedElement, to: DefinedElement)
10801{
10802 find interpretation(problem,interpretation);
10803 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10804 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
10805 find mustExist(problem, interpretation, from);
10806 find mustExist(problem, interpretation, to);
10807 find mustInstanceOfEPackage_class(problem,interpretation,from);
10808 StringElement(to);
10809 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
10810 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
10811}
10812pattern refineRelation_containment_attribute_EReference(
10813 problem:LogicProblem, interpretation:PartialInterpretation,
10814 relationIterpretation:PartialRelationInterpretation,
10815 from: DefinedElement, to: DefinedElement)
10816{
10817 find interpretation(problem,interpretation);
10818 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10819 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
10820 find mustExist(problem, interpretation, from);
10821 find mustExist(problem, interpretation, to);
10822 find mustInstanceOfEReference_class(problem,interpretation,from);
10823 BooleanElement(to);
10824 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
10825 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
10826}
10827pattern refineRelation_container_attribute_EReference(
10828 problem:LogicProblem, interpretation:PartialInterpretation,
10829 relationIterpretation:PartialRelationInterpretation,
10830 from: DefinedElement, to: DefinedElement)
10831{
10832 find interpretation(problem,interpretation);
10833 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10834 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
10835 find mustExist(problem, interpretation, from);
10836 find mustExist(problem, interpretation, to);
10837 find mustInstanceOfEReference_class(problem,interpretation,from);
10838 BooleanElement(to);
10839 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
10840 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
10841}
10842pattern refineRelation_resolveProxies_attribute_EReference(
10843 problem:LogicProblem, interpretation:PartialInterpretation,
10844 relationIterpretation:PartialRelationInterpretation,
10845 from: DefinedElement, to: DefinedElement)
10846{
10847 find interpretation(problem,interpretation);
10848 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10849 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
10850 find mustExist(problem, interpretation, from);
10851 find mustExist(problem, interpretation, to);
10852 find mustInstanceOfEReference_class(problem,interpretation,from);
10853 BooleanElement(to);
10854 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
10855 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
10856}
10857pattern refineRelation_changeable_attribute_EStructuralFeature(
10858 problem:LogicProblem, interpretation:PartialInterpretation,
10859 relationIterpretation:PartialRelationInterpretation,
10860 from: DefinedElement, to: DefinedElement)
10861{
10862 find interpretation(problem,interpretation);
10863 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10864 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
10865 find mustExist(problem, interpretation, from);
10866 find mustExist(problem, interpretation, to);
10867 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
10868 BooleanElement(to);
10869 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
10870 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
10871}
10872pattern refineRelation_volatile_attribute_EStructuralFeature(
10873 problem:LogicProblem, interpretation:PartialInterpretation,
10874 relationIterpretation:PartialRelationInterpretation,
10875 from: DefinedElement, to: DefinedElement)
10876{
10877 find interpretation(problem,interpretation);
10878 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10879 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
10880 find mustExist(problem, interpretation, from);
10881 find mustExist(problem, interpretation, to);
10882 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
10883 BooleanElement(to);
10884 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
10885 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
10886}
10887pattern refineRelation_transient_attribute_EStructuralFeature(
10888 problem:LogicProblem, interpretation:PartialInterpretation,
10889 relationIterpretation:PartialRelationInterpretation,
10890 from: DefinedElement, to: DefinedElement)
10891{
10892 find interpretation(problem,interpretation);
10893 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10894 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
10895 find mustExist(problem, interpretation, from);
10896 find mustExist(problem, interpretation, to);
10897 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
10898 BooleanElement(to);
10899 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
10900 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
10901}
10902pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
10903 problem:LogicProblem, interpretation:PartialInterpretation,
10904 relationIterpretation:PartialRelationInterpretation,
10905 from: DefinedElement, to: DefinedElement)
10906{
10907 find interpretation(problem,interpretation);
10908 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10909 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
10910 find mustExist(problem, interpretation, from);
10911 find mustExist(problem, interpretation, to);
10912 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
10913 StringElement(to);
10914 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
10915 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
10916}
10917pattern refineRelation_unsettable_attribute_EStructuralFeature(
10918 problem:LogicProblem, interpretation:PartialInterpretation,
10919 relationIterpretation:PartialRelationInterpretation,
10920 from: DefinedElement, to: DefinedElement)
10921{
10922 find interpretation(problem,interpretation);
10923 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10924 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
10925 find mustExist(problem, interpretation, from);
10926 find mustExist(problem, interpretation, to);
10927 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
10928 BooleanElement(to);
10929 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
10930 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
10931}
10932pattern refineRelation_derived_attribute_EStructuralFeature(
10933 problem:LogicProblem, interpretation:PartialInterpretation,
10934 relationIterpretation:PartialRelationInterpretation,
10935 from: DefinedElement, to: DefinedElement)
10936{
10937 find interpretation(problem,interpretation);
10938 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10939 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
10940 find mustExist(problem, interpretation, from);
10941 find mustExist(problem, interpretation, to);
10942 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
10943 BooleanElement(to);
10944 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
10945 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
10946}
10947pattern refineRelation_ordered_attribute_ETypedElement(
10948 problem:LogicProblem, interpretation:PartialInterpretation,
10949 relationIterpretation:PartialRelationInterpretation,
10950 from: DefinedElement, to: DefinedElement)
10951{
10952 find interpretation(problem,interpretation);
10953 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10954 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
10955 find mustExist(problem, interpretation, from);
10956 find mustExist(problem, interpretation, to);
10957 find mustInstanceOfETypedElement_class(problem,interpretation,from);
10958 BooleanElement(to);
10959 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
10960 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
10961}
10962pattern refineRelation_unique_attribute_ETypedElement(
10963 problem:LogicProblem, interpretation:PartialInterpretation,
10964 relationIterpretation:PartialRelationInterpretation,
10965 from: DefinedElement, to: DefinedElement)
10966{
10967 find interpretation(problem,interpretation);
10968 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10969 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
10970 find mustExist(problem, interpretation, from);
10971 find mustExist(problem, interpretation, to);
10972 find mustInstanceOfETypedElement_class(problem,interpretation,from);
10973 BooleanElement(to);
10974 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
10975 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
10976}
10977pattern refineRelation_lowerBound_attribute_ETypedElement(
10978 problem:LogicProblem, interpretation:PartialInterpretation,
10979 relationIterpretation:PartialRelationInterpretation,
10980 from: DefinedElement, to: DefinedElement)
10981{
10982 find interpretation(problem,interpretation);
10983 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10984 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
10985 find mustExist(problem, interpretation, from);
10986 find mustExist(problem, interpretation, to);
10987 find mustInstanceOfETypedElement_class(problem,interpretation,from);
10988 IntegerElement(to);
10989 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
10990 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
10991}
10992pattern refineRelation_upperBound_attribute_ETypedElement(
10993 problem:LogicProblem, interpretation:PartialInterpretation,
10994 relationIterpretation:PartialRelationInterpretation,
10995 from: DefinedElement, to: DefinedElement)
10996{
10997 find interpretation(problem,interpretation);
10998 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10999 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
11000 find mustExist(problem, interpretation, from);
11001 find mustExist(problem, interpretation, to);
11002 find mustInstanceOfETypedElement_class(problem,interpretation,from);
11003 IntegerElement(to);
11004 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
11005 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
11006}
11007pattern refineRelation_many_attribute_ETypedElement(
11008 problem:LogicProblem, interpretation:PartialInterpretation,
11009 relationIterpretation:PartialRelationInterpretation,
11010 from: DefinedElement, to: DefinedElement)
11011{
11012 find interpretation(problem,interpretation);
11013 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11014 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
11015 find mustExist(problem, interpretation, from);
11016 find mustExist(problem, interpretation, to);
11017 find mustInstanceOfETypedElement_class(problem,interpretation,from);
11018 BooleanElement(to);
11019 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
11020 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
11021}
11022pattern refineRelation_required_attribute_ETypedElement(
11023 problem:LogicProblem, interpretation:PartialInterpretation,
11024 relationIterpretation:PartialRelationInterpretation,
11025 from: DefinedElement, to: DefinedElement)
11026{
11027 find interpretation(problem,interpretation);
11028 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11029 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
11030 find mustExist(problem, interpretation, from);
11031 find mustExist(problem, interpretation, to);
11032 find mustInstanceOfETypedElement_class(problem,interpretation,from);
11033 BooleanElement(to);
11034 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
11035 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
11036}
11037pattern refineRelation_key_attribute_EStringToStringMapEntry(
11038 problem:LogicProblem, interpretation:PartialInterpretation,
11039 relationIterpretation:PartialRelationInterpretation,
11040 from: DefinedElement, to: DefinedElement)
11041{
11042 find interpretation(problem,interpretation);
11043 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11044 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
11045 find mustExist(problem, interpretation, from);
11046 find mustExist(problem, interpretation, to);
11047 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
11048 StringElement(to);
11049 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
11050 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
11051}
11052pattern refineRelation_value_attribute_EStringToStringMapEntry(
11053 problem:LogicProblem, interpretation:PartialInterpretation,
11054 relationIterpretation:PartialRelationInterpretation,
11055 from: DefinedElement, to: DefinedElement)
11056{
11057 find interpretation(problem,interpretation);
11058 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11059 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
11060 find mustExist(problem, interpretation, from);
11061 find mustExist(problem, interpretation, to);
11062 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
11063 StringElement(to);
11064 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
11065 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
11066}
11067import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
11068import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
11069import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
11070
11071//////////
11072// 0. Util
11073//////////
11074private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
11075 PartialInterpretation.problem(interpretation,problem);
11076}
11077
11078/////////////////////////
11079// 0.1 Existence
11080/////////////////////////
11081private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11082 find interpretation(problem,interpretation);
11083 LogicProblem.elements(problem,element);
11084} or {
11085 find interpretation(problem,interpretation);
11086 PartialInterpretation.newElements(interpretation,element);
11087}
11088
11089private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11090 find mustExist(problem,interpretation,element);
11091} or {
11092 find interpretation(problem,interpretation);
11093 neg find elementCloseWorld(element);
11094 PartialInterpretation.openWorldElements(interpretation,element);
11095}
11096
11097private pattern elementCloseWorld(element:DefinedElement) {
11098 PartialInterpretation.openWorldElements(i,element);
11099 PartialInterpretation.maxNewElements(i,0);
11100} or {
11101 Scope.targetTypeInterpretation(scope,interpretation);
11102 PartialTypeInterpratation.elements(interpretation,element);
11103 Scope.maxNewElements(scope,0);
11104}
11105
11106////////////////////////
11107// 0.2 Equivalence
11108////////////////////////
11109pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
11110 find mayExist(problem,interpretation,a);
11111 find mayExist(problem,interpretation,b);
11112 a == b;
11113}
11114
11115////////////////////////
11116// 0.3 Required Patterns by TypeIndexer
11117////////////////////////
11118private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
11119 find interpretation(problem,interpretation);
11120 LogicProblem.types(problem,type);
11121 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
11122 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11123}
11124
11125private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
11126 find interpretation(problem,interpretation);
11127 LogicProblem.types(problem,type);
11128 TypeDefinition.elements(type,element);
11129} or {
11130 find interpretation(problem,interpretation);
11131 find typeInterpretation(problem,interpretation,type,typeInterpretation);
11132 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
11133}
11134
11135private pattern isPrimitive(element: PrimitiveElement) {
11136 PrimitiveElement(element);
11137}
11138
11139//////////
11140// 1. Problem-Specific Base Indexers
11141//////////
11142// 1.1 Type Indexers
11143//////////
11144// 1.1.1 primitive Type Indexers
11145//////////
11146
11147//////////
11148// 1.1.2 domain-specific Type Indexers
11149//////////
11150/**
11151 * An element must be an instance of type "EAttribute class".
11152 */
11153private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11154 Type.name(type,"EAttribute class");
11155 find directInstanceOf(problem,interpretation,element,type);
11156}
11157private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11158 find interpretation(problem,interpretation);
11159 PartialInterpretation.scopes(interpretation,scope);
11160 Scope.targetTypeInterpretation(scope,typeInterpretation);
11161 Scope.maxNewElements(scope,0);
11162 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11163 Type.name(type,"EAttribute class");
11164}
11165
11166/**
11167 * An element may be an instance of type "EAttribute class".
11168 */
11169private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11170{
11171 find interpretation(problem,interpretation);
11172 PartialInterpretation.newElements(interpretation,element);
11173 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11174 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11175 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11176 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11177 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11178 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11179 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11180 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11181 neg find mustInstanceOfEReference_class(problem,interpretation,element);
11182 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11183 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11184 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
11185 neg find isPrimitive(element);
11186} or {
11187 find interpretation(problem,interpretation);
11188 PartialInterpretation.openWorldElements(interpretation,element);
11189 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11190 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11191 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11192 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11193 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11194 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11195 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11196 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11197 neg find mustInstanceOfEReference_class(problem,interpretation,element);
11198 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11199 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11200 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
11201 neg find isPrimitive(element);
11202} or
11203{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
11204/**
11205 * An element must be an instance of type "EAnnotation class".
11206 */
11207private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11208 Type.name(type,"EAnnotation class");
11209 find directInstanceOf(problem,interpretation,element,type);
11210}
11211private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11212 find interpretation(problem,interpretation);
11213 PartialInterpretation.scopes(interpretation,scope);
11214 Scope.targetTypeInterpretation(scope,typeInterpretation);
11215 Scope.maxNewElements(scope,0);
11216 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11217 Type.name(type,"EAnnotation class");
11218}
11219
11220/**
11221 * An element may be an instance of type "EAnnotation class".
11222 */
11223private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11224{
11225 find interpretation(problem,interpretation);
11226 PartialInterpretation.newElements(interpretation,element);
11227 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11228 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
11229 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11230 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11231 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
11232 neg find isPrimitive(element);
11233} or {
11234 find interpretation(problem,interpretation);
11235 PartialInterpretation.openWorldElements(interpretation,element);
11236 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11237 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
11238 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11239 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11240 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
11241 neg find isPrimitive(element);
11242} or
11243{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
11244/**
11245 * An element must be an instance of type "EClass class".
11246 */
11247private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11248 Type.name(type,"EClass class");
11249 find directInstanceOf(problem,interpretation,element,type);
11250}
11251private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11252 find interpretation(problem,interpretation);
11253 PartialInterpretation.scopes(interpretation,scope);
11254 Scope.targetTypeInterpretation(scope,typeInterpretation);
11255 Scope.maxNewElements(scope,0);
11256 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11257 Type.name(type,"EClass class");
11258}
11259
11260/**
11261 * An element may be an instance of type "EClass class".
11262 */
11263private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11264{
11265 find interpretation(problem,interpretation);
11266 PartialInterpretation.newElements(interpretation,element);
11267 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11268 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11269 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11270 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11271 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11272 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11273 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11274 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
11275 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11276 neg find scopeDisallowsNewEClass_class(problem, interpretation);
11277 neg find isPrimitive(element);
11278} or {
11279 find interpretation(problem,interpretation);
11280 PartialInterpretation.openWorldElements(interpretation,element);
11281 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11282 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11283 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11284 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11285 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11286 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11287 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11288 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
11289 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11290 neg find scopeDisallowsNewEClass_class(problem, interpretation);
11291 neg find isPrimitive(element);
11292} or
11293{ find mustInstanceOfEClass_class(problem,interpretation,element); }
11294/**
11295 * An element must be an instance of type "EClassifier class".
11296 */
11297private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11298 Type.name(type,"EClassifier class");
11299 find directInstanceOf(problem,interpretation,element,type);
11300}
11301private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11302 find interpretation(problem,interpretation);
11303 PartialInterpretation.scopes(interpretation,scope);
11304 Scope.targetTypeInterpretation(scope,typeInterpretation);
11305 Scope.maxNewElements(scope,0);
11306 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11307 Type.name(type,"EClassifier class");
11308}
11309
11310/**
11311 * An element may be an instance of type "EClassifier class".
11312 */
11313private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11314{
11315 find interpretation(problem,interpretation);
11316 PartialInterpretation.newElements(interpretation,element);
11317 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11318 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11319 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11320 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11321 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11322 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11323 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11324 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
11325 neg find mustInstanceOfEClass_class(problem,interpretation,element);
11326 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11327 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
11328 neg find isPrimitive(element);
11329} or {
11330 find interpretation(problem,interpretation);
11331 PartialInterpretation.openWorldElements(interpretation,element);
11332 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11333 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11334 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11335 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11336 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11337 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11338 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11339 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
11340 neg find mustInstanceOfEClass_class(problem,interpretation,element);
11341 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11342 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
11343 neg find isPrimitive(element);
11344} or
11345{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
11346/**
11347 * An element must be an instance of type "EDataType class".
11348 */
11349private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11350 Type.name(type,"EDataType class");
11351 find directInstanceOf(problem,interpretation,element,type);
11352}
11353private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11354 find interpretation(problem,interpretation);
11355 PartialInterpretation.scopes(interpretation,scope);
11356 Scope.targetTypeInterpretation(scope,typeInterpretation);
11357 Scope.maxNewElements(scope,0);
11358 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11359 Type.name(type,"EDataType class");
11360}
11361
11362/**
11363 * An element may be an instance of type "EDataType class".
11364 */
11365private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11366{
11367 find interpretation(problem,interpretation);
11368 PartialInterpretation.newElements(interpretation,element);
11369 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11370 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11371 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11372 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11373 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11374 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11375 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
11376 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11377 neg find mustInstanceOfEClass_class(problem,interpretation,element);
11378 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11379 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
11380 neg find isPrimitive(element);
11381} or {
11382 find interpretation(problem,interpretation);
11383 PartialInterpretation.openWorldElements(interpretation,element);
11384 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11385 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11386 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11387 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11388 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11389 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11390 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
11391 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11392 neg find mustInstanceOfEClass_class(problem,interpretation,element);
11393 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11394 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
11395 neg find isPrimitive(element);
11396} or
11397{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
11398/**
11399 * An element must be an instance of type "EEnum class".
11400 */
11401private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11402 Type.name(type,"EEnum class");
11403 find directInstanceOf(problem,interpretation,element,type);
11404}
11405private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11406 find interpretation(problem,interpretation);
11407 PartialInterpretation.scopes(interpretation,scope);
11408 Scope.targetTypeInterpretation(scope,typeInterpretation);
11409 Scope.maxNewElements(scope,0);
11410 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11411 Type.name(type,"EEnum class");
11412}
11413
11414/**
11415 * An element may be an instance of type "EEnum class".
11416 */
11417private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11418{
11419 find interpretation(problem,interpretation);
11420 PartialInterpretation.newElements(interpretation,element);
11421 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11422 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11423 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11424 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11425 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11426 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11427 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11428 neg find mustInstanceOfEClass_class(problem,interpretation,element);
11429 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11430 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
11431 neg find isPrimitive(element);
11432} or {
11433 find interpretation(problem,interpretation);
11434 PartialInterpretation.openWorldElements(interpretation,element);
11435 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11436 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11437 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11438 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11439 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11440 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11441 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11442 neg find mustInstanceOfEClass_class(problem,interpretation,element);
11443 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11444 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
11445 neg find isPrimitive(element);
11446} or
11447{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
11448/**
11449 * An element must be an instance of type "EEnumLiteral class".
11450 */
11451private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11452 Type.name(type,"EEnumLiteral class");
11453 find directInstanceOf(problem,interpretation,element,type);
11454}
11455private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11456 find interpretation(problem,interpretation);
11457 PartialInterpretation.scopes(interpretation,scope);
11458 Scope.targetTypeInterpretation(scope,typeInterpretation);
11459 Scope.maxNewElements(scope,0);
11460 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11461 Type.name(type,"EEnumLiteral class");
11462}
11463
11464/**
11465 * An element may be an instance of type "EEnumLiteral class".
11466 */
11467private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11468{
11469 find interpretation(problem,interpretation);
11470 PartialInterpretation.newElements(interpretation,element);
11471 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11472 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11473 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11474 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11475 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11476 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11477 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11478 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11479 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
11480 neg find isPrimitive(element);
11481} or {
11482 find interpretation(problem,interpretation);
11483 PartialInterpretation.openWorldElements(interpretation,element);
11484 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11485 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11486 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
11487 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11488 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11489 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11490 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11491 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11492 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
11493 neg find isPrimitive(element);
11494} or
11495{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
11496/**
11497 * An element must be an instance of type "EModelElement class".
11498 */
11499private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11500 Type.name(type,"EModelElement class");
11501 find directInstanceOf(problem,interpretation,element,type);
11502}
11503private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11504 find interpretation(problem,interpretation);
11505 PartialInterpretation.scopes(interpretation,scope);
11506 Scope.targetTypeInterpretation(scope,typeInterpretation);
11507 Scope.maxNewElements(scope,0);
11508 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11509 Type.name(type,"EModelElement class");
11510}
11511
11512/**
11513 * An element may be an instance of type "EModelElement class".
11514 */
11515private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11516{
11517 find interpretation(problem,interpretation);
11518 PartialInterpretation.newElements(interpretation,element);
11519 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11520 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
11521 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
11522 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11523 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11524 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
11525 neg find isPrimitive(element);
11526} or {
11527 find interpretation(problem,interpretation);
11528 PartialInterpretation.openWorldElements(interpretation,element);
11529 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11530 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
11531 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
11532 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11533 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11534 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
11535 neg find isPrimitive(element);
11536} or
11537{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
11538/**
11539 * An element must be an instance of type "ENamedElement class".
11540 */
11541private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11542 Type.name(type,"ENamedElement class");
11543 find directInstanceOf(problem,interpretation,element,type);
11544}
11545private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11546 find interpretation(problem,interpretation);
11547 PartialInterpretation.scopes(interpretation,scope);
11548 Scope.targetTypeInterpretation(scope,typeInterpretation);
11549 Scope.maxNewElements(scope,0);
11550 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11551 Type.name(type,"ENamedElement class");
11552}
11553
11554/**
11555 * An element may be an instance of type "ENamedElement class".
11556 */
11557private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11558{
11559 find interpretation(problem,interpretation);
11560 PartialInterpretation.newElements(interpretation,element);
11561 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
11562 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11563 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11564 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11565 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11566 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
11567 neg find isPrimitive(element);
11568} or {
11569 find interpretation(problem,interpretation);
11570 PartialInterpretation.openWorldElements(interpretation,element);
11571 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
11572 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11573 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11574 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11575 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11576 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
11577 neg find isPrimitive(element);
11578} or
11579{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
11580/**
11581 * An element must be an instance of type "EObject class".
11582 */
11583private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11584 Type.name(type,"EObject class");
11585 find directInstanceOf(problem,interpretation,element,type);
11586}
11587private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11588 find interpretation(problem,interpretation);
11589 PartialInterpretation.scopes(interpretation,scope);
11590 Scope.targetTypeInterpretation(scope,typeInterpretation);
11591 Scope.maxNewElements(scope,0);
11592 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11593 Type.name(type,"EObject class");
11594}
11595
11596/**
11597 * An element may be an instance of type "EObject class".
11598 */
11599private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11600{
11601 find interpretation(problem,interpretation);
11602 PartialInterpretation.newElements(interpretation,element);
11603 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11604 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
11605 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11606 neg find scopeDisallowsNewEObject_class(problem, interpretation);
11607 neg find isPrimitive(element);
11608} or {
11609 find interpretation(problem,interpretation);
11610 PartialInterpretation.openWorldElements(interpretation,element);
11611 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11612 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
11613 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11614 neg find scopeDisallowsNewEObject_class(problem, interpretation);
11615 neg find isPrimitive(element);
11616} or
11617{ find mustInstanceOfEObject_class(problem,interpretation,element); }
11618/**
11619 * An element must be an instance of type "EOperation class".
11620 */
11621private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11622 Type.name(type,"EOperation class");
11623 find directInstanceOf(problem,interpretation,element,type);
11624}
11625private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11626 find interpretation(problem,interpretation);
11627 PartialInterpretation.scopes(interpretation,scope);
11628 Scope.targetTypeInterpretation(scope,typeInterpretation);
11629 Scope.maxNewElements(scope,0);
11630 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11631 Type.name(type,"EOperation class");
11632}
11633
11634/**
11635 * An element may be an instance of type "EOperation class".
11636 */
11637private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11638{
11639 find interpretation(problem,interpretation);
11640 PartialInterpretation.newElements(interpretation,element);
11641 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11642 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11643 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11644 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11645 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11646 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
11647 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11648 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11649 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11650 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11651 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
11652 neg find isPrimitive(element);
11653} or {
11654 find interpretation(problem,interpretation);
11655 PartialInterpretation.openWorldElements(interpretation,element);
11656 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11657 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11658 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11659 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11660 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11661 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
11662 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11663 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11664 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11665 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11666 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
11667 neg find isPrimitive(element);
11668} or
11669{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
11670/**
11671 * An element must be an instance of type "EPackage class".
11672 */
11673private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11674 Type.name(type,"EPackage class");
11675 find directInstanceOf(problem,interpretation,element,type);
11676}
11677private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11678 find interpretation(problem,interpretation);
11679 PartialInterpretation.scopes(interpretation,scope);
11680 Scope.targetTypeInterpretation(scope,typeInterpretation);
11681 Scope.maxNewElements(scope,0);
11682 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11683 Type.name(type,"EPackage class");
11684}
11685
11686/**
11687 * An element may be an instance of type "EPackage class".
11688 */
11689private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11690{
11691 find interpretation(problem,interpretation);
11692 PartialInterpretation.newElements(interpretation,element);
11693 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11694 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
11695 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11696 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11697 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
11698 neg find isPrimitive(element);
11699} or {
11700 find interpretation(problem,interpretation);
11701 PartialInterpretation.openWorldElements(interpretation,element);
11702 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11703 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
11704 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11705 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11706 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
11707 neg find isPrimitive(element);
11708} or
11709{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
11710/**
11711 * An element must be an instance of type "EParameter class".
11712 */
11713private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11714 Type.name(type,"EParameter class");
11715 find directInstanceOf(problem,interpretation,element,type);
11716}
11717private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11718 find interpretation(problem,interpretation);
11719 PartialInterpretation.scopes(interpretation,scope);
11720 Scope.targetTypeInterpretation(scope,typeInterpretation);
11721 Scope.maxNewElements(scope,0);
11722 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11723 Type.name(type,"EParameter class");
11724}
11725
11726/**
11727 * An element may be an instance of type "EParameter class".
11728 */
11729private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11730{
11731 find interpretation(problem,interpretation);
11732 PartialInterpretation.newElements(interpretation,element);
11733 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11734 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11735 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11736 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11737 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11738 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11739 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
11740 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11741 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11742 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11743 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
11744 neg find isPrimitive(element);
11745} or {
11746 find interpretation(problem,interpretation);
11747 PartialInterpretation.openWorldElements(interpretation,element);
11748 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11749 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11750 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11751 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11752 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11753 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11754 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
11755 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11756 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11757 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11758 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
11759 neg find isPrimitive(element);
11760} or
11761{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
11762/**
11763 * An element must be an instance of type "EReference class".
11764 */
11765private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11766 Type.name(type,"EReference class");
11767 find directInstanceOf(problem,interpretation,element,type);
11768}
11769private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11770 find interpretation(problem,interpretation);
11771 PartialInterpretation.scopes(interpretation,scope);
11772 Scope.targetTypeInterpretation(scope,typeInterpretation);
11773 Scope.maxNewElements(scope,0);
11774 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11775 Type.name(type,"EReference class");
11776}
11777
11778/**
11779 * An element may be an instance of type "EReference class".
11780 */
11781private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11782{
11783 find interpretation(problem,interpretation);
11784 PartialInterpretation.newElements(interpretation,element);
11785 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11786 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11787 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11788 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
11789 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11790 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11791 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11792 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11793 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11794 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11795 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11796 neg find scopeDisallowsNewEReference_class(problem, interpretation);
11797 neg find isPrimitive(element);
11798} or {
11799 find interpretation(problem,interpretation);
11800 PartialInterpretation.openWorldElements(interpretation,element);
11801 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11802 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11803 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11804 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
11805 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11806 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11807 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11808 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11809 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11810 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11811 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11812 neg find scopeDisallowsNewEReference_class(problem, interpretation);
11813 neg find isPrimitive(element);
11814} or
11815{ find mustInstanceOfEReference_class(problem,interpretation,element); }
11816/**
11817 * An element must be an instance of type "EStructuralFeature class".
11818 */
11819private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11820 Type.name(type,"EStructuralFeature class");
11821 find directInstanceOf(problem,interpretation,element,type);
11822}
11823private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11824 find interpretation(problem,interpretation);
11825 PartialInterpretation.scopes(interpretation,scope);
11826 Scope.targetTypeInterpretation(scope,typeInterpretation);
11827 Scope.maxNewElements(scope,0);
11828 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11829 Type.name(type,"EStructuralFeature class");
11830}
11831
11832/**
11833 * An element may be an instance of type "EStructuralFeature class".
11834 */
11835private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11836{
11837 find interpretation(problem,interpretation);
11838 PartialInterpretation.newElements(interpretation,element);
11839 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11840 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11841 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11842 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11843 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
11844 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11845 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11846 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11847 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11848 neg find mustInstanceOfEReference_class(problem,interpretation,element);
11849 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11850 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11851 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
11852 neg find isPrimitive(element);
11853} or {
11854 find interpretation(problem,interpretation);
11855 PartialInterpretation.openWorldElements(interpretation,element);
11856 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11857 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11858 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11859 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11860 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
11861 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11862 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11863 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11864 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11865 neg find mustInstanceOfEReference_class(problem,interpretation,element);
11866 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11867 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11868 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
11869 neg find isPrimitive(element);
11870} or
11871{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
11872/**
11873 * An element must be an instance of type "ETypedElement class".
11874 */
11875private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11876 Type.name(type,"ETypedElement class");
11877 find directInstanceOf(problem,interpretation,element,type);
11878}
11879private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11880 find interpretation(problem,interpretation);
11881 PartialInterpretation.scopes(interpretation,scope);
11882 Scope.targetTypeInterpretation(scope,typeInterpretation);
11883 Scope.maxNewElements(scope,0);
11884 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11885 Type.name(type,"ETypedElement class");
11886}
11887
11888/**
11889 * An element may be an instance of type "ETypedElement class".
11890 */
11891private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11892{
11893 find interpretation(problem,interpretation);
11894 PartialInterpretation.newElements(interpretation,element);
11895 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11896 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11897 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11898 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11899 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11900 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11901 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11902 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
11903 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11904 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11905 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11906 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
11907 neg find isPrimitive(element);
11908} or {
11909 find interpretation(problem,interpretation);
11910 PartialInterpretation.openWorldElements(interpretation,element);
11911 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11912 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
11913 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
11914 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
11915 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11916 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
11917 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
11918 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
11919 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
11920 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11921 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
11922 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
11923 neg find isPrimitive(element);
11924} or
11925{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
11926/**
11927 * An element must be an instance of type "EStringToStringMapEntry class".
11928 */
11929private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11930 Type.name(type,"EStringToStringMapEntry class");
11931 find directInstanceOf(problem,interpretation,element,type);
11932}
11933private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11934 find interpretation(problem,interpretation);
11935 PartialInterpretation.scopes(interpretation,scope);
11936 Scope.targetTypeInterpretation(scope,typeInterpretation);
11937 Scope.maxNewElements(scope,0);
11938 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11939 Type.name(type,"EStringToStringMapEntry class");
11940}
11941
11942/**
11943 * An element may be an instance of type "EStringToStringMapEntry class".
11944 */
11945private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11946{
11947 find interpretation(problem,interpretation);
11948 PartialInterpretation.newElements(interpretation,element);
11949 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11950 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11951 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
11952 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
11953 neg find isPrimitive(element);
11954} or {
11955 find interpretation(problem,interpretation);
11956 PartialInterpretation.openWorldElements(interpretation,element);
11957 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
11958 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11959 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
11960 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
11961 neg find isPrimitive(element);
11962} or
11963{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
11964/**
11965 * An element must be an instance of type "EGenericType class".
11966 */
11967private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11968 Type.name(type,"EGenericType class");
11969 find directInstanceOf(problem,interpretation,element,type);
11970}
11971private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11972 find interpretation(problem,interpretation);
11973 PartialInterpretation.scopes(interpretation,scope);
11974 Scope.targetTypeInterpretation(scope,typeInterpretation);
11975 Scope.maxNewElements(scope,0);
11976 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11977 Type.name(type,"EGenericType class");
11978}
11979
11980/**
11981 * An element may be an instance of type "EGenericType class".
11982 */
11983private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11984{
11985 find interpretation(problem,interpretation);
11986 PartialInterpretation.newElements(interpretation,element);
11987 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11988 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
11989 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11990 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
11991 neg find isPrimitive(element);
11992} or {
11993 find interpretation(problem,interpretation);
11994 PartialInterpretation.openWorldElements(interpretation,element);
11995 neg find mustInstanceOfEObject_class(problem,interpretation,element);
11996 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
11997 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
11998 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
11999 neg find isPrimitive(element);
12000} or
12001{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
12002/**
12003 * An element must be an instance of type "ETypeParameter class".
12004 */
12005private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12006 Type.name(type,"ETypeParameter class");
12007 find directInstanceOf(problem,interpretation,element,type);
12008}
12009private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12010 find interpretation(problem,interpretation);
12011 PartialInterpretation.scopes(interpretation,scope);
12012 Scope.targetTypeInterpretation(scope,typeInterpretation);
12013 Scope.maxNewElements(scope,0);
12014 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12015 Type.name(type,"ETypeParameter class");
12016}
12017
12018/**
12019 * An element may be an instance of type "ETypeParameter class".
12020 */
12021private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12022{
12023 find interpretation(problem,interpretation);
12024 PartialInterpretation.newElements(interpretation,element);
12025 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
12026 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
12027 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
12028 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
12029 neg find mustInstanceOfEObject_class(problem,interpretation,element);
12030 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
12031 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
12032 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
12033 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
12034 neg find isPrimitive(element);
12035} or {
12036 find interpretation(problem,interpretation);
12037 PartialInterpretation.openWorldElements(interpretation,element);
12038 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
12039 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
12040 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
12041 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
12042 neg find mustInstanceOfEObject_class(problem,interpretation,element);
12043 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
12044 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
12045 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
12046 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
12047 neg find isPrimitive(element);
12048} or
12049{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
12050/**
12051 * An element must be an instance of type "EModelElement class DefinedPart".
12052 */
12053private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12054 Type.name(type,"EModelElement class DefinedPart");
12055 find directInstanceOf(problem,interpretation,element,type);
12056}
12057private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
12058 find interpretation(problem,interpretation);
12059 PartialInterpretation.scopes(interpretation,scope);
12060 Scope.targetTypeInterpretation(scope,typeInterpretation);
12061 Scope.maxNewElements(scope,0);
12062 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12063 Type.name(type,"EModelElement class DefinedPart");
12064}
12065
12066/**
12067 * An element may be an instance of type "EModelElement class DefinedPart".
12068 */
12069private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12070{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
12071/**
12072 * An element must be an instance of type "EModelElement class UndefinedPart".
12073 */
12074private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12075 Type.name(type,"EModelElement class UndefinedPart");
12076 find directInstanceOf(problem,interpretation,element,type);
12077}
12078private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
12079 find interpretation(problem,interpretation);
12080 PartialInterpretation.scopes(interpretation,scope);
12081 Scope.targetTypeInterpretation(scope,typeInterpretation);
12082 Scope.maxNewElements(scope,0);
12083 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12084 Type.name(type,"EModelElement class UndefinedPart");
12085}
12086
12087/**
12088 * An element may be an instance of type "EModelElement class UndefinedPart".
12089 */
12090private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12091{
12092 find interpretation(problem,interpretation);
12093 PartialInterpretation.newElements(interpretation,element);
12094 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
12095 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
12096 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
12097 neg find mustInstanceOfEObject_class(problem,interpretation,element);
12098 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
12099 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
12100 neg find isPrimitive(element);
12101} or {
12102 find interpretation(problem,interpretation);
12103 PartialInterpretation.openWorldElements(interpretation,element);
12104 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
12105 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
12106 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
12107 neg find mustInstanceOfEObject_class(problem,interpretation,element);
12108 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
12109 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
12110 neg find isPrimitive(element);
12111} or
12112{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
12113/**
12114 * An element must be an instance of type "ENamedElement class DefinedPart".
12115 */
12116private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12117 Type.name(type,"ENamedElement class DefinedPart");
12118 find directInstanceOf(problem,interpretation,element,type);
12119}
12120private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
12121 find interpretation(problem,interpretation);
12122 PartialInterpretation.scopes(interpretation,scope);
12123 Scope.targetTypeInterpretation(scope,typeInterpretation);
12124 Scope.maxNewElements(scope,0);
12125 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12126 Type.name(type,"ENamedElement class DefinedPart");
12127}
12128
12129/**
12130 * An element may be an instance of type "ENamedElement class DefinedPart".
12131 */
12132private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12133{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
12134/**
12135 * An element must be an instance of type "ENamedElement class UndefinedPart".
12136 */
12137private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12138 Type.name(type,"ENamedElement class UndefinedPart");
12139 find directInstanceOf(problem,interpretation,element,type);
12140}
12141private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
12142 find interpretation(problem,interpretation);
12143 PartialInterpretation.scopes(interpretation,scope);
12144 Scope.targetTypeInterpretation(scope,typeInterpretation);
12145 Scope.maxNewElements(scope,0);
12146 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12147 Type.name(type,"ENamedElement class UndefinedPart");
12148}
12149
12150/**
12151 * An element may be an instance of type "ENamedElement class UndefinedPart".
12152 */
12153private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12154{
12155 find interpretation(problem,interpretation);
12156 PartialInterpretation.newElements(interpretation,element);
12157 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
12158 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
12159 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
12160 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
12161 neg find mustInstanceOfEObject_class(problem,interpretation,element);
12162 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
12163 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
12164 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
12165 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
12166 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
12167 neg find isPrimitive(element);
12168} or {
12169 find interpretation(problem,interpretation);
12170 PartialInterpretation.openWorldElements(interpretation,element);
12171 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
12172 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
12173 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
12174 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
12175 neg find mustInstanceOfEObject_class(problem,interpretation,element);
12176 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
12177 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
12178 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
12179 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
12180 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
12181 neg find isPrimitive(element);
12182} or
12183{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
12184/**
12185 * An element must be an instance of type "EPackage class DefinedPart".
12186 */
12187private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12188 Type.name(type,"EPackage class DefinedPart");
12189 find directInstanceOf(problem,interpretation,element,type);
12190}
12191private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
12192 find interpretation(problem,interpretation);
12193 PartialInterpretation.scopes(interpretation,scope);
12194 Scope.targetTypeInterpretation(scope,typeInterpretation);
12195 Scope.maxNewElements(scope,0);
12196 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12197 Type.name(type,"EPackage class DefinedPart");
12198}
12199
12200/**
12201 * An element may be an instance of type "EPackage class DefinedPart".
12202 */
12203private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12204{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
12205/**
12206 * An element must be an instance of type "EPackage class UndefinedPart".
12207 */
12208private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12209 Type.name(type,"EPackage class UndefinedPart");
12210 find directInstanceOf(problem,interpretation,element,type);
12211}
12212private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
12213 find interpretation(problem,interpretation);
12214 PartialInterpretation.scopes(interpretation,scope);
12215 Scope.targetTypeInterpretation(scope,typeInterpretation);
12216 Scope.maxNewElements(scope,0);
12217 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12218 Type.name(type,"EPackage class UndefinedPart");
12219}
12220
12221/**
12222 * An element may be an instance of type "EPackage class UndefinedPart".
12223 */
12224private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12225{
12226 find interpretation(problem,interpretation);
12227 PartialInterpretation.newElements(interpretation,element);
12228 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
12229 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
12230 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
12231 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
12232 neg find mustInstanceOfEObject_class(problem,interpretation,element);
12233 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
12234 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
12235 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
12236 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
12237 neg find isPrimitive(element);
12238} or {
12239 find interpretation(problem,interpretation);
12240 PartialInterpretation.openWorldElements(interpretation,element);
12241 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
12242 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
12243 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
12244 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
12245 neg find mustInstanceOfEObject_class(problem,interpretation,element);
12246 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
12247 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
12248 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
12249 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
12250 neg find isPrimitive(element);
12251} or
12252{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
12253
12254//////////
12255// 1.2 Relation Declaration Indexers
12256//////////
12257/**
12258 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
12259 */
12260private pattern mustInRelationeAttributeType_reference_EAttribute(
12261 problem:LogicProblem, interpretation:PartialInterpretation,
12262 source: DefinedElement, target:DefinedElement)
12263{
12264 find interpretation(problem,interpretation);
12265 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12266 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
12267 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12268 BinaryElementRelationLink.param1(link,source);
12269 BinaryElementRelationLink.param2(link,target);
12270}
12271/**
12272 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
12273 */
12274private pattern mayInRelationeAttributeType_reference_EAttribute(
12275 problem:LogicProblem, interpretation:PartialInterpretation,
12276 source: DefinedElement, target:DefinedElement)
12277{
12278 find interpretation(problem,interpretation);
12279 // The two endpoint of the link have to exist
12280 find mayExist(problem, interpretation, source);
12281 find mayExist(problem, interpretation, target);
12282 // Type consistency
12283 find mayInstanceOfEAttribute_class(problem,interpretation,source);
12284 find mayInstanceOfEDataType_class(problem,interpretation,target);
12285 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
12286 // the upper bound of the multiplicity should be considered.
12287 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
12288 check(numberOfExistingReferences < 1);
12289} or {
12290 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
12291}
12292/**
12293 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
12294 */
12295private pattern mustInRelationdetails_reference_EAnnotation(
12296 problem:LogicProblem, interpretation:PartialInterpretation,
12297 source: DefinedElement, target:DefinedElement)
12298{
12299 find interpretation(problem,interpretation);
12300 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12301 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
12302 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12303 BinaryElementRelationLink.param1(link,source);
12304 BinaryElementRelationLink.param2(link,target);
12305}
12306/**
12307 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
12308 */
12309private pattern mayInRelationdetails_reference_EAnnotation(
12310 problem:LogicProblem, interpretation:PartialInterpretation,
12311 source: DefinedElement, target:DefinedElement)
12312{
12313 find interpretation(problem,interpretation);
12314 // The two endpoint of the link have to exist
12315 find mayExist(problem, interpretation, source);
12316 find mayExist(problem, interpretation, target);
12317 // Type consistency
12318 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
12319 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
12320 // The reference is containment, then a new reference cannot be create if:
12321 // 1. Multiple parents
12322 neg find mustContains4(problem,interpretation,_,target);
12323 // 2. Circle in the containment hierarchy
12324 neg find mustTransitiveContains(source,target);
12325} or {
12326 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
12327}
12328/**
12329 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
12330 */
12331private pattern mustInRelationeModelElement_reference_EAnnotation(
12332 problem:LogicProblem, interpretation:PartialInterpretation,
12333 source: DefinedElement, target:DefinedElement)
12334{
12335 find interpretation(problem,interpretation);
12336 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12337 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
12338 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12339 BinaryElementRelationLink.param1(link,source);
12340 BinaryElementRelationLink.param2(link,target);
12341}
12342/**
12343 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
12344 */
12345private pattern mayInRelationeModelElement_reference_EAnnotation(
12346 problem:LogicProblem, interpretation:PartialInterpretation,
12347 source: DefinedElement, target:DefinedElement)
12348{
12349 find interpretation(problem,interpretation);
12350 // The two endpoint of the link have to exist
12351 find mayExist(problem, interpretation, source);
12352 find mayExist(problem, interpretation, target);
12353 // Type consistency
12354 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
12355 find mayInstanceOfEModelElement_class(problem,interpretation,target);
12356 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
12357 // the upper bound of the multiplicity should be considered.
12358 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
12359 check(numberOfExistingReferences < 1);
12360 // The eOpposite of the reference is containment, then a referene cannot be created if
12361 // 1. Multiple parents
12362 neg find mustContains4(problem,interpretation,source,_);
12363 // 2. Circle in the containment hierarchy
12364 neg find mustTransitiveContains(source,target);
12365} or {
12366 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
12367}
12368/**
12369 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
12370 */
12371private pattern mustInRelationcontents_reference_EAnnotation(
12372 problem:LogicProblem, interpretation:PartialInterpretation,
12373 source: DefinedElement, target:DefinedElement)
12374{
12375 find interpretation(problem,interpretation);
12376 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12377 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
12378 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12379 BinaryElementRelationLink.param1(link,source);
12380 BinaryElementRelationLink.param2(link,target);
12381}
12382/**
12383 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
12384 */
12385private pattern mayInRelationcontents_reference_EAnnotation(
12386 problem:LogicProblem, interpretation:PartialInterpretation,
12387 source: DefinedElement, target:DefinedElement)
12388{
12389 find interpretation(problem,interpretation);
12390 // The two endpoint of the link have to exist
12391 find mayExist(problem, interpretation, source);
12392 find mayExist(problem, interpretation, target);
12393 // Type consistency
12394 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
12395 find mayInstanceOfEObject_class(problem,interpretation,target);
12396 // The reference is containment, then a new reference cannot be create if:
12397 // 1. Multiple parents
12398 neg find mustContains4(problem,interpretation,_,target);
12399 // 2. Circle in the containment hierarchy
12400 neg find mustTransitiveContains(source,target);
12401} or {
12402 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
12403}
12404/**
12405 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
12406 */
12407private pattern mustInRelationreferences_reference_EAnnotation(
12408 problem:LogicProblem, interpretation:PartialInterpretation,
12409 source: DefinedElement, target:DefinedElement)
12410{
12411 find interpretation(problem,interpretation);
12412 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12413 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
12414 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12415 BinaryElementRelationLink.param1(link,source);
12416 BinaryElementRelationLink.param2(link,target);
12417}
12418/**
12419 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
12420 */
12421private pattern mayInRelationreferences_reference_EAnnotation(
12422 problem:LogicProblem, interpretation:PartialInterpretation,
12423 source: DefinedElement, target:DefinedElement)
12424{
12425 find interpretation(problem,interpretation);
12426 // The two endpoint of the link have to exist
12427 find mayExist(problem, interpretation, source);
12428 find mayExist(problem, interpretation, target);
12429 // Type consistency
12430 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
12431 find mayInstanceOfEObject_class(problem,interpretation,target);
12432} or {
12433 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
12434}
12435/**
12436 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
12437 */
12438private pattern mustInRelationeSuperTypes_reference_EClass(
12439 problem:LogicProblem, interpretation:PartialInterpretation,
12440 source: DefinedElement, target:DefinedElement)
12441{
12442 find interpretation(problem,interpretation);
12443 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12444 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
12445 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12446 BinaryElementRelationLink.param1(link,source);
12447 BinaryElementRelationLink.param2(link,target);
12448}
12449/**
12450 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
12451 */
12452private pattern mayInRelationeSuperTypes_reference_EClass(
12453 problem:LogicProblem, interpretation:PartialInterpretation,
12454 source: DefinedElement, target:DefinedElement)
12455{
12456 find interpretation(problem,interpretation);
12457 // The two endpoint of the link have to exist
12458 find mayExist(problem, interpretation, source);
12459 find mayExist(problem, interpretation, target);
12460 // Type consistency
12461 find mayInstanceOfEClass_class(problem,interpretation,source);
12462 find mayInstanceOfEClass_class(problem,interpretation,target);
12463} or {
12464 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
12465}
12466/**
12467 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
12468 */
12469private pattern mustInRelationeOperations_reference_EClass(
12470 problem:LogicProblem, interpretation:PartialInterpretation,
12471 source: DefinedElement, target:DefinedElement)
12472{
12473 find interpretation(problem,interpretation);
12474 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12475 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
12476 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12477 BinaryElementRelationLink.param1(link,source);
12478 BinaryElementRelationLink.param2(link,target);
12479}
12480/**
12481 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
12482 */
12483private pattern mayInRelationeOperations_reference_EClass(
12484 problem:LogicProblem, interpretation:PartialInterpretation,
12485 source: DefinedElement, target:DefinedElement)
12486{
12487 find interpretation(problem,interpretation);
12488 // The two endpoint of the link have to exist
12489 find mayExist(problem, interpretation, source);
12490 find mayExist(problem, interpretation, target);
12491 // Type consistency
12492 find mayInstanceOfEClass_class(problem,interpretation,source);
12493 find mayInstanceOfEOperation_class(problem,interpretation,target);
12494 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
12495 // the upper bound of the opposite reference multiplicity should be considered.
12496 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
12497 check(numberOfExistingOppositeReferences < 1);
12498 // The reference is containment, then a new reference cannot be create if:
12499 // 1. Multiple parents
12500 neg find mustContains4(problem,interpretation,_,target);
12501 // 2. Circle in the containment hierarchy
12502 neg find mustTransitiveContains(source,target);
12503} or {
12504 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
12505}
12506/**
12507 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
12508 */
12509private pattern mustInRelationeAllAttributes_reference_EClass(
12510 problem:LogicProblem, interpretation:PartialInterpretation,
12511 source: DefinedElement, target:DefinedElement)
12512{
12513 find interpretation(problem,interpretation);
12514 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12515 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
12516 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12517 BinaryElementRelationLink.param1(link,source);
12518 BinaryElementRelationLink.param2(link,target);
12519}
12520/**
12521 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
12522 */
12523private pattern mayInRelationeAllAttributes_reference_EClass(
12524 problem:LogicProblem, interpretation:PartialInterpretation,
12525 source: DefinedElement, target:DefinedElement)
12526{
12527 find interpretation(problem,interpretation);
12528 // The two endpoint of the link have to exist
12529 find mayExist(problem, interpretation, source);
12530 find mayExist(problem, interpretation, target);
12531 // Type consistency
12532 find mayInstanceOfEClass_class(problem,interpretation,source);
12533 find mayInstanceOfEAttribute_class(problem,interpretation,target);
12534} or {
12535 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
12536}
12537/**
12538 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
12539 */
12540private pattern mustInRelationeAllReferences_reference_EClass(
12541 problem:LogicProblem, interpretation:PartialInterpretation,
12542 source: DefinedElement, target:DefinedElement)
12543{
12544 find interpretation(problem,interpretation);
12545 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12546 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
12547 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12548 BinaryElementRelationLink.param1(link,source);
12549 BinaryElementRelationLink.param2(link,target);
12550}
12551/**
12552 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
12553 */
12554private pattern mayInRelationeAllReferences_reference_EClass(
12555 problem:LogicProblem, interpretation:PartialInterpretation,
12556 source: DefinedElement, target:DefinedElement)
12557{
12558 find interpretation(problem,interpretation);
12559 // The two endpoint of the link have to exist
12560 find mayExist(problem, interpretation, source);
12561 find mayExist(problem, interpretation, target);
12562 // Type consistency
12563 find mayInstanceOfEClass_class(problem,interpretation,source);
12564 find mayInstanceOfEReference_class(problem,interpretation,target);
12565} or {
12566 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
12567}
12568/**
12569 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
12570 */
12571private pattern mustInRelationeReferences_reference_EClass(
12572 problem:LogicProblem, interpretation:PartialInterpretation,
12573 source: DefinedElement, target:DefinedElement)
12574{
12575 find interpretation(problem,interpretation);
12576 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12577 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
12578 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12579 BinaryElementRelationLink.param1(link,source);
12580 BinaryElementRelationLink.param2(link,target);
12581}
12582/**
12583 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
12584 */
12585private pattern mayInRelationeReferences_reference_EClass(
12586 problem:LogicProblem, interpretation:PartialInterpretation,
12587 source: DefinedElement, target:DefinedElement)
12588{
12589 find interpretation(problem,interpretation);
12590 // The two endpoint of the link have to exist
12591 find mayExist(problem, interpretation, source);
12592 find mayExist(problem, interpretation, target);
12593 // Type consistency
12594 find mayInstanceOfEClass_class(problem,interpretation,source);
12595 find mayInstanceOfEReference_class(problem,interpretation,target);
12596} or {
12597 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
12598}
12599/**
12600 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
12601 */
12602private pattern mustInRelationeAttributes_reference_EClass(
12603 problem:LogicProblem, interpretation:PartialInterpretation,
12604 source: DefinedElement, target:DefinedElement)
12605{
12606 find interpretation(problem,interpretation);
12607 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12608 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
12609 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12610 BinaryElementRelationLink.param1(link,source);
12611 BinaryElementRelationLink.param2(link,target);
12612}
12613/**
12614 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
12615 */
12616private pattern mayInRelationeAttributes_reference_EClass(
12617 problem:LogicProblem, interpretation:PartialInterpretation,
12618 source: DefinedElement, target:DefinedElement)
12619{
12620 find interpretation(problem,interpretation);
12621 // The two endpoint of the link have to exist
12622 find mayExist(problem, interpretation, source);
12623 find mayExist(problem, interpretation, target);
12624 // Type consistency
12625 find mayInstanceOfEClass_class(problem,interpretation,source);
12626 find mayInstanceOfEAttribute_class(problem,interpretation,target);
12627} or {
12628 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
12629}
12630/**
12631 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
12632 */
12633private pattern mustInRelationeAllContainments_reference_EClass(
12634 problem:LogicProblem, interpretation:PartialInterpretation,
12635 source: DefinedElement, target:DefinedElement)
12636{
12637 find interpretation(problem,interpretation);
12638 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12639 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
12640 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12641 BinaryElementRelationLink.param1(link,source);
12642 BinaryElementRelationLink.param2(link,target);
12643}
12644/**
12645 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
12646 */
12647private pattern mayInRelationeAllContainments_reference_EClass(
12648 problem:LogicProblem, interpretation:PartialInterpretation,
12649 source: DefinedElement, target:DefinedElement)
12650{
12651 find interpretation(problem,interpretation);
12652 // The two endpoint of the link have to exist
12653 find mayExist(problem, interpretation, source);
12654 find mayExist(problem, interpretation, target);
12655 // Type consistency
12656 find mayInstanceOfEClass_class(problem,interpretation,source);
12657 find mayInstanceOfEReference_class(problem,interpretation,target);
12658} or {
12659 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
12660}
12661/**
12662 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
12663 */
12664private pattern mustInRelationeAllOperations_reference_EClass(
12665 problem:LogicProblem, interpretation:PartialInterpretation,
12666 source: DefinedElement, target:DefinedElement)
12667{
12668 find interpretation(problem,interpretation);
12669 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12670 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
12671 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12672 BinaryElementRelationLink.param1(link,source);
12673 BinaryElementRelationLink.param2(link,target);
12674}
12675/**
12676 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
12677 */
12678private pattern mayInRelationeAllOperations_reference_EClass(
12679 problem:LogicProblem, interpretation:PartialInterpretation,
12680 source: DefinedElement, target:DefinedElement)
12681{
12682 find interpretation(problem,interpretation);
12683 // The two endpoint of the link have to exist
12684 find mayExist(problem, interpretation, source);
12685 find mayExist(problem, interpretation, target);
12686 // Type consistency
12687 find mayInstanceOfEClass_class(problem,interpretation,source);
12688 find mayInstanceOfEOperation_class(problem,interpretation,target);
12689} or {
12690 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
12691}
12692/**
12693 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
12694 */
12695private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
12696 problem:LogicProblem, interpretation:PartialInterpretation,
12697 source: DefinedElement, target:DefinedElement)
12698{
12699 find interpretation(problem,interpretation);
12700 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12701 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
12702 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12703 BinaryElementRelationLink.param1(link,source);
12704 BinaryElementRelationLink.param2(link,target);
12705}
12706/**
12707 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
12708 */
12709private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
12710 problem:LogicProblem, interpretation:PartialInterpretation,
12711 source: DefinedElement, target:DefinedElement)
12712{
12713 find interpretation(problem,interpretation);
12714 // The two endpoint of the link have to exist
12715 find mayExist(problem, interpretation, source);
12716 find mayExist(problem, interpretation, target);
12717 // Type consistency
12718 find mayInstanceOfEClass_class(problem,interpretation,source);
12719 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
12720} or {
12721 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
12722}
12723/**
12724 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
12725 */
12726private pattern mustInRelationeAllSuperTypes_reference_EClass(
12727 problem:LogicProblem, interpretation:PartialInterpretation,
12728 source: DefinedElement, target:DefinedElement)
12729{
12730 find interpretation(problem,interpretation);
12731 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12732 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
12733 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12734 BinaryElementRelationLink.param1(link,source);
12735 BinaryElementRelationLink.param2(link,target);
12736}
12737/**
12738 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
12739 */
12740private pattern mayInRelationeAllSuperTypes_reference_EClass(
12741 problem:LogicProblem, interpretation:PartialInterpretation,
12742 source: DefinedElement, target:DefinedElement)
12743{
12744 find interpretation(problem,interpretation);
12745 // The two endpoint of the link have to exist
12746 find mayExist(problem, interpretation, source);
12747 find mayExist(problem, interpretation, target);
12748 // Type consistency
12749 find mayInstanceOfEClass_class(problem,interpretation,source);
12750 find mayInstanceOfEClass_class(problem,interpretation,target);
12751} or {
12752 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
12753}
12754/**
12755 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
12756 */
12757private pattern mustInRelationeIDAttribute_reference_EClass(
12758 problem:LogicProblem, interpretation:PartialInterpretation,
12759 source: DefinedElement, target:DefinedElement)
12760{
12761 find interpretation(problem,interpretation);
12762 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12763 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
12764 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12765 BinaryElementRelationLink.param1(link,source);
12766 BinaryElementRelationLink.param2(link,target);
12767}
12768/**
12769 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
12770 */
12771private pattern mayInRelationeIDAttribute_reference_EClass(
12772 problem:LogicProblem, interpretation:PartialInterpretation,
12773 source: DefinedElement, target:DefinedElement)
12774{
12775 find interpretation(problem,interpretation);
12776 // The two endpoint of the link have to exist
12777 find mayExist(problem, interpretation, source);
12778 find mayExist(problem, interpretation, target);
12779 // Type consistency
12780 find mayInstanceOfEClass_class(problem,interpretation,source);
12781 find mayInstanceOfEAttribute_class(problem,interpretation,target);
12782 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
12783 // the upper bound of the multiplicity should be considered.
12784 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
12785 check(numberOfExistingReferences < 1);
12786} or {
12787 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
12788}
12789/**
12790 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
12791 */
12792private pattern mustInRelationeStructuralFeatures_reference_EClass(
12793 problem:LogicProblem, interpretation:PartialInterpretation,
12794 source: DefinedElement, target:DefinedElement)
12795{
12796 find interpretation(problem,interpretation);
12797 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12798 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
12799 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12800 BinaryElementRelationLink.param1(link,source);
12801 BinaryElementRelationLink.param2(link,target);
12802}
12803/**
12804 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
12805 */
12806private pattern mayInRelationeStructuralFeatures_reference_EClass(
12807 problem:LogicProblem, interpretation:PartialInterpretation,
12808 source: DefinedElement, target:DefinedElement)
12809{
12810 find interpretation(problem,interpretation);
12811 // The two endpoint of the link have to exist
12812 find mayExist(problem, interpretation, source);
12813 find mayExist(problem, interpretation, target);
12814 // Type consistency
12815 find mayInstanceOfEClass_class(problem,interpretation,source);
12816 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
12817 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
12818 // the upper bound of the opposite reference multiplicity should be considered.
12819 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
12820 check(numberOfExistingOppositeReferences < 1);
12821 // The reference is containment, then a new reference cannot be create if:
12822 // 1. Multiple parents
12823 neg find mustContains4(problem,interpretation,_,target);
12824 // 2. Circle in the containment hierarchy
12825 neg find mustTransitiveContains(source,target);
12826} or {
12827 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
12828}
12829/**
12830 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
12831 */
12832private pattern mustInRelationeGenericSuperTypes_reference_EClass(
12833 problem:LogicProblem, interpretation:PartialInterpretation,
12834 source: DefinedElement, target:DefinedElement)
12835{
12836 find interpretation(problem,interpretation);
12837 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12838 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
12839 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12840 BinaryElementRelationLink.param1(link,source);
12841 BinaryElementRelationLink.param2(link,target);
12842}
12843/**
12844 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
12845 */
12846private pattern mayInRelationeGenericSuperTypes_reference_EClass(
12847 problem:LogicProblem, interpretation:PartialInterpretation,
12848 source: DefinedElement, target:DefinedElement)
12849{
12850 find interpretation(problem,interpretation);
12851 // The two endpoint of the link have to exist
12852 find mayExist(problem, interpretation, source);
12853 find mayExist(problem, interpretation, target);
12854 // Type consistency
12855 find mayInstanceOfEClass_class(problem,interpretation,source);
12856 find mayInstanceOfEGenericType_class(problem,interpretation,target);
12857 // The reference is containment, then a new reference cannot be create if:
12858 // 1. Multiple parents
12859 neg find mustContains4(problem,interpretation,_,target);
12860 // 2. Circle in the containment hierarchy
12861 neg find mustTransitiveContains(source,target);
12862} or {
12863 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
12864}
12865/**
12866 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
12867 */
12868private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
12869 problem:LogicProblem, interpretation:PartialInterpretation,
12870 source: DefinedElement, target:DefinedElement)
12871{
12872 find interpretation(problem,interpretation);
12873 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12874 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
12875 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12876 BinaryElementRelationLink.param1(link,source);
12877 BinaryElementRelationLink.param2(link,target);
12878}
12879/**
12880 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
12881 */
12882private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
12883 problem:LogicProblem, interpretation:PartialInterpretation,
12884 source: DefinedElement, target:DefinedElement)
12885{
12886 find interpretation(problem,interpretation);
12887 // The two endpoint of the link have to exist
12888 find mayExist(problem, interpretation, source);
12889 find mayExist(problem, interpretation, target);
12890 // Type consistency
12891 find mayInstanceOfEClass_class(problem,interpretation,source);
12892 find mayInstanceOfEGenericType_class(problem,interpretation,target);
12893} or {
12894 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
12895}
12896/**
12897 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
12898 */
12899private pattern mustInRelationePackage_reference_EClassifier(
12900 problem:LogicProblem, interpretation:PartialInterpretation,
12901 source: DefinedElement, target:DefinedElement)
12902{
12903 find interpretation(problem,interpretation);
12904 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12905 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
12906 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12907 BinaryElementRelationLink.param1(link,source);
12908 BinaryElementRelationLink.param2(link,target);
12909}
12910/**
12911 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
12912 */
12913private pattern mayInRelationePackage_reference_EClassifier(
12914 problem:LogicProblem, interpretation:PartialInterpretation,
12915 source: DefinedElement, target:DefinedElement)
12916{
12917 find interpretation(problem,interpretation);
12918 // The two endpoint of the link have to exist
12919 find mayExist(problem, interpretation, source);
12920 find mayExist(problem, interpretation, target);
12921 // Type consistency
12922 find mayInstanceOfEClassifier_class(problem,interpretation,source);
12923 find mayInstanceOfEPackage_class(problem,interpretation,target);
12924 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
12925 // the upper bound of the multiplicity should be considered.
12926 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
12927 check(numberOfExistingReferences < 1);
12928 // The eOpposite of the reference is containment, then a referene cannot be created if
12929 // 1. Multiple parents
12930 neg find mustContains4(problem,interpretation,source,_);
12931 // 2. Circle in the containment hierarchy
12932 neg find mustTransitiveContains(source,target);
12933} or {
12934 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
12935}
12936/**
12937 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
12938 */
12939private pattern mustInRelationeTypeParameters_reference_EClassifier(
12940 problem:LogicProblem, interpretation:PartialInterpretation,
12941 source: DefinedElement, target:DefinedElement)
12942{
12943 find interpretation(problem,interpretation);
12944 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12945 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
12946 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12947 BinaryElementRelationLink.param1(link,source);
12948 BinaryElementRelationLink.param2(link,target);
12949}
12950/**
12951 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
12952 */
12953private pattern mayInRelationeTypeParameters_reference_EClassifier(
12954 problem:LogicProblem, interpretation:PartialInterpretation,
12955 source: DefinedElement, target:DefinedElement)
12956{
12957 find interpretation(problem,interpretation);
12958 // The two endpoint of the link have to exist
12959 find mayExist(problem, interpretation, source);
12960 find mayExist(problem, interpretation, target);
12961 // Type consistency
12962 find mayInstanceOfEClassifier_class(problem,interpretation,source);
12963 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
12964 // The reference is containment, then a new reference cannot be create if:
12965 // 1. Multiple parents
12966 neg find mustContains4(problem,interpretation,_,target);
12967 // 2. Circle in the containment hierarchy
12968 neg find mustTransitiveContains(source,target);
12969} or {
12970 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
12971}
12972/**
12973 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
12974 */
12975private pattern mustInRelationeLiterals_reference_EEnum(
12976 problem:LogicProblem, interpretation:PartialInterpretation,
12977 source: DefinedElement, target:DefinedElement)
12978{
12979 find interpretation(problem,interpretation);
12980 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12981 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
12982 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12983 BinaryElementRelationLink.param1(link,source);
12984 BinaryElementRelationLink.param2(link,target);
12985}
12986/**
12987 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
12988 */
12989private pattern mayInRelationeLiterals_reference_EEnum(
12990 problem:LogicProblem, interpretation:PartialInterpretation,
12991 source: DefinedElement, target:DefinedElement)
12992{
12993 find interpretation(problem,interpretation);
12994 // The two endpoint of the link have to exist
12995 find mayExist(problem, interpretation, source);
12996 find mayExist(problem, interpretation, target);
12997 // Type consistency
12998 find mayInstanceOfEEnum_class(problem,interpretation,source);
12999 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
13000 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13001 // the upper bound of the opposite reference multiplicity should be considered.
13002 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
13003 check(numberOfExistingOppositeReferences < 1);
13004 // The reference is containment, then a new reference cannot be create if:
13005 // 1. Multiple parents
13006 neg find mustContains4(problem,interpretation,_,target);
13007 // 2. Circle in the containment hierarchy
13008 neg find mustTransitiveContains(source,target);
13009} or {
13010 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
13011}
13012/**
13013 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
13014 */
13015private pattern mustInRelationeEnum_reference_EEnumLiteral(
13016 problem:LogicProblem, interpretation:PartialInterpretation,
13017 source: DefinedElement, target:DefinedElement)
13018{
13019 find interpretation(problem,interpretation);
13020 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13021 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
13022 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13023 BinaryElementRelationLink.param1(link,source);
13024 BinaryElementRelationLink.param2(link,target);
13025}
13026/**
13027 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
13028 */
13029private pattern mayInRelationeEnum_reference_EEnumLiteral(
13030 problem:LogicProblem, interpretation:PartialInterpretation,
13031 source: DefinedElement, target:DefinedElement)
13032{
13033 find interpretation(problem,interpretation);
13034 // The two endpoint of the link have to exist
13035 find mayExist(problem, interpretation, source);
13036 find mayExist(problem, interpretation, target);
13037 // Type consistency
13038 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
13039 find mayInstanceOfEEnum_class(problem,interpretation,target);
13040 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13041 // the upper bound of the multiplicity should be considered.
13042 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
13043 check(numberOfExistingReferences < 1);
13044 // The eOpposite of the reference is containment, then a referene cannot be created if
13045 // 1. Multiple parents
13046 neg find mustContains4(problem,interpretation,source,_);
13047 // 2. Circle in the containment hierarchy
13048 neg find mustTransitiveContains(source,target);
13049} or {
13050 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
13051}
13052/**
13053 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
13054 */
13055private pattern mustInRelationeAnnotations_reference_EModelElement(
13056 problem:LogicProblem, interpretation:PartialInterpretation,
13057 source: DefinedElement, target:DefinedElement)
13058{
13059 find interpretation(problem,interpretation);
13060 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13061 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
13062 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13063 BinaryElementRelationLink.param1(link,source);
13064 BinaryElementRelationLink.param2(link,target);
13065}
13066/**
13067 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
13068 */
13069private pattern mayInRelationeAnnotations_reference_EModelElement(
13070 problem:LogicProblem, interpretation:PartialInterpretation,
13071 source: DefinedElement, target:DefinedElement)
13072{
13073 find interpretation(problem,interpretation);
13074 // The two endpoint of the link have to exist
13075 find mayExist(problem, interpretation, source);
13076 find mayExist(problem, interpretation, target);
13077 // Type consistency
13078 find mayInstanceOfEModelElement_class(problem,interpretation,source);
13079 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
13080 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13081 // the upper bound of the opposite reference multiplicity should be considered.
13082 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
13083 check(numberOfExistingOppositeReferences < 1);
13084 // The reference is containment, then a new reference cannot be create if:
13085 // 1. Multiple parents
13086 neg find mustContains4(problem,interpretation,_,target);
13087 // 2. Circle in the containment hierarchy
13088 neg find mustTransitiveContains(source,target);
13089} or {
13090 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
13091}
13092/**
13093 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
13094 */
13095private pattern mustInRelationeContainingClass_reference_EOperation(
13096 problem:LogicProblem, interpretation:PartialInterpretation,
13097 source: DefinedElement, target:DefinedElement)
13098{
13099 find interpretation(problem,interpretation);
13100 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13101 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
13102 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13103 BinaryElementRelationLink.param1(link,source);
13104 BinaryElementRelationLink.param2(link,target);
13105}
13106/**
13107 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
13108 */
13109private pattern mayInRelationeContainingClass_reference_EOperation(
13110 problem:LogicProblem, interpretation:PartialInterpretation,
13111 source: DefinedElement, target:DefinedElement)
13112{
13113 find interpretation(problem,interpretation);
13114 // The two endpoint of the link have to exist
13115 find mayExist(problem, interpretation, source);
13116 find mayExist(problem, interpretation, target);
13117 // Type consistency
13118 find mayInstanceOfEOperation_class(problem,interpretation,source);
13119 find mayInstanceOfEClass_class(problem,interpretation,target);
13120 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13121 // the upper bound of the multiplicity should be considered.
13122 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
13123 check(numberOfExistingReferences < 1);
13124 // The eOpposite of the reference is containment, then a referene cannot be created if
13125 // 1. Multiple parents
13126 neg find mustContains4(problem,interpretation,source,_);
13127 // 2. Circle in the containment hierarchy
13128 neg find mustTransitiveContains(source,target);
13129} or {
13130 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
13131}
13132/**
13133 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
13134 */
13135private pattern mustInRelationeTypeParameters_reference_EOperation(
13136 problem:LogicProblem, interpretation:PartialInterpretation,
13137 source: DefinedElement, target:DefinedElement)
13138{
13139 find interpretation(problem,interpretation);
13140 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13141 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
13142 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13143 BinaryElementRelationLink.param1(link,source);
13144 BinaryElementRelationLink.param2(link,target);
13145}
13146/**
13147 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
13148 */
13149private pattern mayInRelationeTypeParameters_reference_EOperation(
13150 problem:LogicProblem, interpretation:PartialInterpretation,
13151 source: DefinedElement, target:DefinedElement)
13152{
13153 find interpretation(problem,interpretation);
13154 // The two endpoint of the link have to exist
13155 find mayExist(problem, interpretation, source);
13156 find mayExist(problem, interpretation, target);
13157 // Type consistency
13158 find mayInstanceOfEOperation_class(problem,interpretation,source);
13159 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
13160 // The reference is containment, then a new reference cannot be create if:
13161 // 1. Multiple parents
13162 neg find mustContains4(problem,interpretation,_,target);
13163 // 2. Circle in the containment hierarchy
13164 neg find mustTransitiveContains(source,target);
13165} or {
13166 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
13167}
13168/**
13169 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
13170 */
13171private pattern mustInRelationeParameters_reference_EOperation(
13172 problem:LogicProblem, interpretation:PartialInterpretation,
13173 source: DefinedElement, target:DefinedElement)
13174{
13175 find interpretation(problem,interpretation);
13176 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13177 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
13178 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13179 BinaryElementRelationLink.param1(link,source);
13180 BinaryElementRelationLink.param2(link,target);
13181}
13182/**
13183 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
13184 */
13185private pattern mayInRelationeParameters_reference_EOperation(
13186 problem:LogicProblem, interpretation:PartialInterpretation,
13187 source: DefinedElement, target:DefinedElement)
13188{
13189 find interpretation(problem,interpretation);
13190 // The two endpoint of the link have to exist
13191 find mayExist(problem, interpretation, source);
13192 find mayExist(problem, interpretation, target);
13193 // Type consistency
13194 find mayInstanceOfEOperation_class(problem,interpretation,source);
13195 find mayInstanceOfEParameter_class(problem,interpretation,target);
13196 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13197 // the upper bound of the opposite reference multiplicity should be considered.
13198 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
13199 check(numberOfExistingOppositeReferences < 1);
13200 // The reference is containment, then a new reference cannot be create if:
13201 // 1. Multiple parents
13202 neg find mustContains4(problem,interpretation,_,target);
13203 // 2. Circle in the containment hierarchy
13204 neg find mustTransitiveContains(source,target);
13205} or {
13206 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
13207}
13208/**
13209 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
13210 */
13211private pattern mustInRelationeExceptions_reference_EOperation(
13212 problem:LogicProblem, interpretation:PartialInterpretation,
13213 source: DefinedElement, target:DefinedElement)
13214{
13215 find interpretation(problem,interpretation);
13216 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13217 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
13218 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13219 BinaryElementRelationLink.param1(link,source);
13220 BinaryElementRelationLink.param2(link,target);
13221}
13222/**
13223 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
13224 */
13225private pattern mayInRelationeExceptions_reference_EOperation(
13226 problem:LogicProblem, interpretation:PartialInterpretation,
13227 source: DefinedElement, target:DefinedElement)
13228{
13229 find interpretation(problem,interpretation);
13230 // The two endpoint of the link have to exist
13231 find mayExist(problem, interpretation, source);
13232 find mayExist(problem, interpretation, target);
13233 // Type consistency
13234 find mayInstanceOfEOperation_class(problem,interpretation,source);
13235 find mayInstanceOfEClassifier_class(problem,interpretation,target);
13236} or {
13237 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
13238}
13239/**
13240 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
13241 */
13242private pattern mustInRelationeGenericExceptions_reference_EOperation(
13243 problem:LogicProblem, interpretation:PartialInterpretation,
13244 source: DefinedElement, target:DefinedElement)
13245{
13246 find interpretation(problem,interpretation);
13247 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13248 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
13249 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13250 BinaryElementRelationLink.param1(link,source);
13251 BinaryElementRelationLink.param2(link,target);
13252}
13253/**
13254 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
13255 */
13256private pattern mayInRelationeGenericExceptions_reference_EOperation(
13257 problem:LogicProblem, interpretation:PartialInterpretation,
13258 source: DefinedElement, target:DefinedElement)
13259{
13260 find interpretation(problem,interpretation);
13261 // The two endpoint of the link have to exist
13262 find mayExist(problem, interpretation, source);
13263 find mayExist(problem, interpretation, target);
13264 // Type consistency
13265 find mayInstanceOfEOperation_class(problem,interpretation,source);
13266 find mayInstanceOfEGenericType_class(problem,interpretation,target);
13267 // The reference is containment, then a new reference cannot be create if:
13268 // 1. Multiple parents
13269 neg find mustContains4(problem,interpretation,_,target);
13270 // 2. Circle in the containment hierarchy
13271 neg find mustTransitiveContains(source,target);
13272} or {
13273 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
13274}
13275/**
13276 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
13277 */
13278private pattern mustInRelationeClassifiers_reference_EPackage(
13279 problem:LogicProblem, interpretation:PartialInterpretation,
13280 source: DefinedElement, target:DefinedElement)
13281{
13282 find interpretation(problem,interpretation);
13283 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13284 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
13285 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13286 BinaryElementRelationLink.param1(link,source);
13287 BinaryElementRelationLink.param2(link,target);
13288}
13289/**
13290 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
13291 */
13292private pattern mayInRelationeClassifiers_reference_EPackage(
13293 problem:LogicProblem, interpretation:PartialInterpretation,
13294 source: DefinedElement, target:DefinedElement)
13295{
13296 find interpretation(problem,interpretation);
13297 // The two endpoint of the link have to exist
13298 find mayExist(problem, interpretation, source);
13299 find mayExist(problem, interpretation, target);
13300 // Type consistency
13301 find mayInstanceOfEPackage_class(problem,interpretation,source);
13302 find mayInstanceOfEClassifier_class(problem,interpretation,target);
13303 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13304 // the upper bound of the opposite reference multiplicity should be considered.
13305 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
13306 check(numberOfExistingOppositeReferences < 1);
13307 // The reference is containment, then a new reference cannot be create if:
13308 // 1. Multiple parents
13309 neg find mustContains4(problem,interpretation,_,target);
13310 // 2. Circle in the containment hierarchy
13311 neg find mustTransitiveContains(source,target);
13312} or {
13313 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
13314}
13315/**
13316 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
13317 */
13318private pattern mustInRelationeSubpackages_reference_EPackage(
13319 problem:LogicProblem, interpretation:PartialInterpretation,
13320 source: DefinedElement, target:DefinedElement)
13321{
13322 find interpretation(problem,interpretation);
13323 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13324 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
13325 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13326 BinaryElementRelationLink.param1(link,source);
13327 BinaryElementRelationLink.param2(link,target);
13328}
13329/**
13330 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
13331 */
13332private pattern mayInRelationeSubpackages_reference_EPackage(
13333 problem:LogicProblem, interpretation:PartialInterpretation,
13334 source: DefinedElement, target:DefinedElement)
13335{
13336 find interpretation(problem,interpretation);
13337 // The two endpoint of the link have to exist
13338 find mayExist(problem, interpretation, source);
13339 find mayExist(problem, interpretation, target);
13340 // Type consistency
13341 find mayInstanceOfEPackage_class(problem,interpretation,source);
13342 find mayInstanceOfEPackage_class(problem,interpretation,target);
13343 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13344 // the upper bound of the opposite reference multiplicity should be considered.
13345 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
13346 check(numberOfExistingOppositeReferences < 1);
13347 // The reference is containment, then a new reference cannot be create if:
13348 // 1. Multiple parents
13349 neg find mustContains4(problem,interpretation,_,target);
13350 // 2. Circle in the containment hierarchy
13351 neg find mustTransitiveContains(source,target);
13352} or {
13353 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
13354}
13355/**
13356 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
13357 */
13358private pattern mustInRelationeSuperPackage_reference_EPackage(
13359 problem:LogicProblem, interpretation:PartialInterpretation,
13360 source: DefinedElement, target:DefinedElement)
13361{
13362 find interpretation(problem,interpretation);
13363 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13364 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
13365 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13366 BinaryElementRelationLink.param1(link,source);
13367 BinaryElementRelationLink.param2(link,target);
13368}
13369/**
13370 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
13371 */
13372private pattern mayInRelationeSuperPackage_reference_EPackage(
13373 problem:LogicProblem, interpretation:PartialInterpretation,
13374 source: DefinedElement, target:DefinedElement)
13375{
13376 find interpretation(problem,interpretation);
13377 // The two endpoint of the link have to exist
13378 find mayExist(problem, interpretation, source);
13379 find mayExist(problem, interpretation, target);
13380 // Type consistency
13381 find mayInstanceOfEPackage_class(problem,interpretation,source);
13382 find mayInstanceOfEPackage_class(problem,interpretation,target);
13383 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13384 // the upper bound of the multiplicity should be considered.
13385 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
13386 check(numberOfExistingReferences < 1);
13387 // The eOpposite of the reference is containment, then a referene cannot be created if
13388 // 1. Multiple parents
13389 neg find mustContains4(problem,interpretation,source,_);
13390 // 2. Circle in the containment hierarchy
13391 neg find mustTransitiveContains(source,target);
13392} or {
13393 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
13394}
13395/**
13396 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
13397 */
13398private pattern mustInRelationeOperation_reference_EParameter(
13399 problem:LogicProblem, interpretation:PartialInterpretation,
13400 source: DefinedElement, target:DefinedElement)
13401{
13402 find interpretation(problem,interpretation);
13403 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13404 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
13405 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13406 BinaryElementRelationLink.param1(link,source);
13407 BinaryElementRelationLink.param2(link,target);
13408}
13409/**
13410 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
13411 */
13412private pattern mayInRelationeOperation_reference_EParameter(
13413 problem:LogicProblem, interpretation:PartialInterpretation,
13414 source: DefinedElement, target:DefinedElement)
13415{
13416 find interpretation(problem,interpretation);
13417 // The two endpoint of the link have to exist
13418 find mayExist(problem, interpretation, source);
13419 find mayExist(problem, interpretation, target);
13420 // Type consistency
13421 find mayInstanceOfEParameter_class(problem,interpretation,source);
13422 find mayInstanceOfEOperation_class(problem,interpretation,target);
13423 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13424 // the upper bound of the multiplicity should be considered.
13425 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
13426 check(numberOfExistingReferences < 1);
13427 // The eOpposite of the reference is containment, then a referene cannot be created if
13428 // 1. Multiple parents
13429 neg find mustContains4(problem,interpretation,source,_);
13430 // 2. Circle in the containment hierarchy
13431 neg find mustTransitiveContains(source,target);
13432} or {
13433 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
13434}
13435/**
13436 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
13437 */
13438private pattern mustInRelationeOpposite_reference_EReference(
13439 problem:LogicProblem, interpretation:PartialInterpretation,
13440 source: DefinedElement, target:DefinedElement)
13441{
13442 find interpretation(problem,interpretation);
13443 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13444 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
13445 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13446 BinaryElementRelationLink.param1(link,source);
13447 BinaryElementRelationLink.param2(link,target);
13448}
13449/**
13450 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
13451 */
13452private pattern mayInRelationeOpposite_reference_EReference(
13453 problem:LogicProblem, interpretation:PartialInterpretation,
13454 source: DefinedElement, target:DefinedElement)
13455{
13456 find interpretation(problem,interpretation);
13457 // The two endpoint of the link have to exist
13458 find mayExist(problem, interpretation, source);
13459 find mayExist(problem, interpretation, target);
13460 // Type consistency
13461 find mayInstanceOfEReference_class(problem,interpretation,source);
13462 find mayInstanceOfEReference_class(problem,interpretation,target);
13463 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13464 // the upper bound of the multiplicity should be considered.
13465 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
13466 check(numberOfExistingReferences < 1);
13467} or {
13468 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
13469}
13470/**
13471 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
13472 */
13473private pattern mustInRelationeReferenceType_reference_EReference(
13474 problem:LogicProblem, interpretation:PartialInterpretation,
13475 source: DefinedElement, target:DefinedElement)
13476{
13477 find interpretation(problem,interpretation);
13478 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13479 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
13480 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13481 BinaryElementRelationLink.param1(link,source);
13482 BinaryElementRelationLink.param2(link,target);
13483}
13484/**
13485 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
13486 */
13487private pattern mayInRelationeReferenceType_reference_EReference(
13488 problem:LogicProblem, interpretation:PartialInterpretation,
13489 source: DefinedElement, target:DefinedElement)
13490{
13491 find interpretation(problem,interpretation);
13492 // The two endpoint of the link have to exist
13493 find mayExist(problem, interpretation, source);
13494 find mayExist(problem, interpretation, target);
13495 // Type consistency
13496 find mayInstanceOfEReference_class(problem,interpretation,source);
13497 find mayInstanceOfEClass_class(problem,interpretation,target);
13498 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13499 // the upper bound of the multiplicity should be considered.
13500 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
13501 check(numberOfExistingReferences < 1);
13502} or {
13503 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
13504}
13505/**
13506 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
13507 */
13508private pattern mustInRelationeKeys_reference_EReference(
13509 problem:LogicProblem, interpretation:PartialInterpretation,
13510 source: DefinedElement, target:DefinedElement)
13511{
13512 find interpretation(problem,interpretation);
13513 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13514 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
13515 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13516 BinaryElementRelationLink.param1(link,source);
13517 BinaryElementRelationLink.param2(link,target);
13518}
13519/**
13520 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
13521 */
13522private pattern mayInRelationeKeys_reference_EReference(
13523 problem:LogicProblem, interpretation:PartialInterpretation,
13524 source: DefinedElement, target:DefinedElement)
13525{
13526 find interpretation(problem,interpretation);
13527 // The two endpoint of the link have to exist
13528 find mayExist(problem, interpretation, source);
13529 find mayExist(problem, interpretation, target);
13530 // Type consistency
13531 find mayInstanceOfEReference_class(problem,interpretation,source);
13532 find mayInstanceOfEAttribute_class(problem,interpretation,target);
13533} or {
13534 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
13535}
13536/**
13537 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
13538 */
13539private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
13540 problem:LogicProblem, interpretation:PartialInterpretation,
13541 source: DefinedElement, target:DefinedElement)
13542{
13543 find interpretation(problem,interpretation);
13544 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13545 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
13546 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13547 BinaryElementRelationLink.param1(link,source);
13548 BinaryElementRelationLink.param2(link,target);
13549}
13550/**
13551 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
13552 */
13553private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
13554 problem:LogicProblem, interpretation:PartialInterpretation,
13555 source: DefinedElement, target:DefinedElement)
13556{
13557 find interpretation(problem,interpretation);
13558 // The two endpoint of the link have to exist
13559 find mayExist(problem, interpretation, source);
13560 find mayExist(problem, interpretation, target);
13561 // Type consistency
13562 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
13563 find mayInstanceOfEClass_class(problem,interpretation,target);
13564 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13565 // the upper bound of the multiplicity should be considered.
13566 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
13567 check(numberOfExistingReferences < 1);
13568 // The eOpposite of the reference is containment, then a referene cannot be created if
13569 // 1. Multiple parents
13570 neg find mustContains4(problem,interpretation,source,_);
13571 // 2. Circle in the containment hierarchy
13572 neg find mustTransitiveContains(source,target);
13573} or {
13574 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
13575}
13576/**
13577 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
13578 */
13579private pattern mustInRelationeType_reference_ETypedElement(
13580 problem:LogicProblem, interpretation:PartialInterpretation,
13581 source: DefinedElement, target:DefinedElement)
13582{
13583 find interpretation(problem,interpretation);
13584 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13585 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
13586 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13587 BinaryElementRelationLink.param1(link,source);
13588 BinaryElementRelationLink.param2(link,target);
13589}
13590/**
13591 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
13592 */
13593private pattern mayInRelationeType_reference_ETypedElement(
13594 problem:LogicProblem, interpretation:PartialInterpretation,
13595 source: DefinedElement, target:DefinedElement)
13596{
13597 find interpretation(problem,interpretation);
13598 // The two endpoint of the link have to exist
13599 find mayExist(problem, interpretation, source);
13600 find mayExist(problem, interpretation, target);
13601 // Type consistency
13602 find mayInstanceOfETypedElement_class(problem,interpretation,source);
13603 find mayInstanceOfEClassifier_class(problem,interpretation,target);
13604 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13605 // the upper bound of the multiplicity should be considered.
13606 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
13607 check(numberOfExistingReferences < 1);
13608} or {
13609 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
13610}
13611/**
13612 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
13613 */
13614private pattern mustInRelationeGenericType_reference_ETypedElement(
13615 problem:LogicProblem, interpretation:PartialInterpretation,
13616 source: DefinedElement, target:DefinedElement)
13617{
13618 find interpretation(problem,interpretation);
13619 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13620 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
13621 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13622 BinaryElementRelationLink.param1(link,source);
13623 BinaryElementRelationLink.param2(link,target);
13624}
13625/**
13626 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
13627 */
13628private pattern mayInRelationeGenericType_reference_ETypedElement(
13629 problem:LogicProblem, interpretation:PartialInterpretation,
13630 source: DefinedElement, target:DefinedElement)
13631{
13632 find interpretation(problem,interpretation);
13633 // The two endpoint of the link have to exist
13634 find mayExist(problem, interpretation, source);
13635 find mayExist(problem, interpretation, target);
13636 // Type consistency
13637 find mayInstanceOfETypedElement_class(problem,interpretation,source);
13638 find mayInstanceOfEGenericType_class(problem,interpretation,target);
13639 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13640 // the upper bound of the multiplicity should be considered.
13641 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
13642 check(numberOfExistingReferences < 1);
13643 // The reference is containment, then a new reference cannot be create if:
13644 // 1. Multiple parents
13645 neg find mustContains4(problem,interpretation,_,target);
13646 // 2. Circle in the containment hierarchy
13647 neg find mustTransitiveContains(source,target);
13648} or {
13649 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
13650}
13651/**
13652 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
13653 */
13654private pattern mustInRelationeUpperBound_reference_EGenericType(
13655 problem:LogicProblem, interpretation:PartialInterpretation,
13656 source: DefinedElement, target:DefinedElement)
13657{
13658 find interpretation(problem,interpretation);
13659 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13660 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
13661 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13662 BinaryElementRelationLink.param1(link,source);
13663 BinaryElementRelationLink.param2(link,target);
13664}
13665/**
13666 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
13667 */
13668private pattern mayInRelationeUpperBound_reference_EGenericType(
13669 problem:LogicProblem, interpretation:PartialInterpretation,
13670 source: DefinedElement, target:DefinedElement)
13671{
13672 find interpretation(problem,interpretation);
13673 // The two endpoint of the link have to exist
13674 find mayExist(problem, interpretation, source);
13675 find mayExist(problem, interpretation, target);
13676 // Type consistency
13677 find mayInstanceOfEGenericType_class(problem,interpretation,source);
13678 find mayInstanceOfEGenericType_class(problem,interpretation,target);
13679 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13680 // the upper bound of the multiplicity should be considered.
13681 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
13682 check(numberOfExistingReferences < 1);
13683 // The reference is containment, then a new reference cannot be create if:
13684 // 1. Multiple parents
13685 neg find mustContains4(problem,interpretation,_,target);
13686 // 2. Circle in the containment hierarchy
13687 neg find mustTransitiveContains(source,target);
13688} or {
13689 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
13690}
13691/**
13692 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
13693 */
13694private pattern mustInRelationeTypeArguments_reference_EGenericType(
13695 problem:LogicProblem, interpretation:PartialInterpretation,
13696 source: DefinedElement, target:DefinedElement)
13697{
13698 find interpretation(problem,interpretation);
13699 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13700 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
13701 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13702 BinaryElementRelationLink.param1(link,source);
13703 BinaryElementRelationLink.param2(link,target);
13704}
13705/**
13706 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
13707 */
13708private pattern mayInRelationeTypeArguments_reference_EGenericType(
13709 problem:LogicProblem, interpretation:PartialInterpretation,
13710 source: DefinedElement, target:DefinedElement)
13711{
13712 find interpretation(problem,interpretation);
13713 // The two endpoint of the link have to exist
13714 find mayExist(problem, interpretation, source);
13715 find mayExist(problem, interpretation, target);
13716 // Type consistency
13717 find mayInstanceOfEGenericType_class(problem,interpretation,source);
13718 find mayInstanceOfEGenericType_class(problem,interpretation,target);
13719 // The reference is containment, then a new reference cannot be create if:
13720 // 1. Multiple parents
13721 neg find mustContains4(problem,interpretation,_,target);
13722 // 2. Circle in the containment hierarchy
13723 neg find mustTransitiveContains(source,target);
13724} or {
13725 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
13726}
13727/**
13728 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
13729 */
13730private pattern mustInRelationeRawType_reference_EGenericType(
13731 problem:LogicProblem, interpretation:PartialInterpretation,
13732 source: DefinedElement, target:DefinedElement)
13733{
13734 find interpretation(problem,interpretation);
13735 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13736 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
13737 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13738 BinaryElementRelationLink.param1(link,source);
13739 BinaryElementRelationLink.param2(link,target);
13740}
13741/**
13742 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
13743 */
13744private pattern mayInRelationeRawType_reference_EGenericType(
13745 problem:LogicProblem, interpretation:PartialInterpretation,
13746 source: DefinedElement, target:DefinedElement)
13747{
13748 find interpretation(problem,interpretation);
13749 // The two endpoint of the link have to exist
13750 find mayExist(problem, interpretation, source);
13751 find mayExist(problem, interpretation, target);
13752 // Type consistency
13753 find mayInstanceOfEGenericType_class(problem,interpretation,source);
13754 find mayInstanceOfEClassifier_class(problem,interpretation,target);
13755 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13756 // the upper bound of the multiplicity should be considered.
13757 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
13758 check(numberOfExistingReferences < 1);
13759} or {
13760 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
13761}
13762/**
13763 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
13764 */
13765private pattern mustInRelationeLowerBound_reference_EGenericType(
13766 problem:LogicProblem, interpretation:PartialInterpretation,
13767 source: DefinedElement, target:DefinedElement)
13768{
13769 find interpretation(problem,interpretation);
13770 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13771 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
13772 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13773 BinaryElementRelationLink.param1(link,source);
13774 BinaryElementRelationLink.param2(link,target);
13775}
13776/**
13777 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
13778 */
13779private pattern mayInRelationeLowerBound_reference_EGenericType(
13780 problem:LogicProblem, interpretation:PartialInterpretation,
13781 source: DefinedElement, target:DefinedElement)
13782{
13783 find interpretation(problem,interpretation);
13784 // The two endpoint of the link have to exist
13785 find mayExist(problem, interpretation, source);
13786 find mayExist(problem, interpretation, target);
13787 // Type consistency
13788 find mayInstanceOfEGenericType_class(problem,interpretation,source);
13789 find mayInstanceOfEGenericType_class(problem,interpretation,target);
13790 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13791 // the upper bound of the multiplicity should be considered.
13792 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
13793 check(numberOfExistingReferences < 1);
13794 // The reference is containment, then a new reference cannot be create if:
13795 // 1. Multiple parents
13796 neg find mustContains4(problem,interpretation,_,target);
13797 // 2. Circle in the containment hierarchy
13798 neg find mustTransitiveContains(source,target);
13799} or {
13800 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
13801}
13802/**
13803 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
13804 */
13805private pattern mustInRelationeTypeParameter_reference_EGenericType(
13806 problem:LogicProblem, interpretation:PartialInterpretation,
13807 source: DefinedElement, target:DefinedElement)
13808{
13809 find interpretation(problem,interpretation);
13810 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13811 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
13812 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13813 BinaryElementRelationLink.param1(link,source);
13814 BinaryElementRelationLink.param2(link,target);
13815}
13816/**
13817 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
13818 */
13819private pattern mayInRelationeTypeParameter_reference_EGenericType(
13820 problem:LogicProblem, interpretation:PartialInterpretation,
13821 source: DefinedElement, target:DefinedElement)
13822{
13823 find interpretation(problem,interpretation);
13824 // The two endpoint of the link have to exist
13825 find mayExist(problem, interpretation, source);
13826 find mayExist(problem, interpretation, target);
13827 // Type consistency
13828 find mayInstanceOfEGenericType_class(problem,interpretation,source);
13829 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
13830 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13831 // the upper bound of the multiplicity should be considered.
13832 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
13833 check(numberOfExistingReferences < 1);
13834} or {
13835 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
13836}
13837/**
13838 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
13839 */
13840private pattern mustInRelationeClassifier_reference_EGenericType(
13841 problem:LogicProblem, interpretation:PartialInterpretation,
13842 source: DefinedElement, target:DefinedElement)
13843{
13844 find interpretation(problem,interpretation);
13845 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13846 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
13847 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13848 BinaryElementRelationLink.param1(link,source);
13849 BinaryElementRelationLink.param2(link,target);
13850}
13851/**
13852 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
13853 */
13854private pattern mayInRelationeClassifier_reference_EGenericType(
13855 problem:LogicProblem, interpretation:PartialInterpretation,
13856 source: DefinedElement, target:DefinedElement)
13857{
13858 find interpretation(problem,interpretation);
13859 // The two endpoint of the link have to exist
13860 find mayExist(problem, interpretation, source);
13861 find mayExist(problem, interpretation, target);
13862 // Type consistency
13863 find mayInstanceOfEGenericType_class(problem,interpretation,source);
13864 find mayInstanceOfEClassifier_class(problem,interpretation,target);
13865 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13866 // the upper bound of the multiplicity should be considered.
13867 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
13868 check(numberOfExistingReferences < 1);
13869} or {
13870 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
13871}
13872/**
13873 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
13874 */
13875private pattern mustInRelationeBounds_reference_ETypeParameter(
13876 problem:LogicProblem, interpretation:PartialInterpretation,
13877 source: DefinedElement, target:DefinedElement)
13878{
13879 find interpretation(problem,interpretation);
13880 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13881 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
13882 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13883 BinaryElementRelationLink.param1(link,source);
13884 BinaryElementRelationLink.param2(link,target);
13885}
13886/**
13887 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
13888 */
13889private pattern mayInRelationeBounds_reference_ETypeParameter(
13890 problem:LogicProblem, interpretation:PartialInterpretation,
13891 source: DefinedElement, target:DefinedElement)
13892{
13893 find interpretation(problem,interpretation);
13894 // The two endpoint of the link have to exist
13895 find mayExist(problem, interpretation, source);
13896 find mayExist(problem, interpretation, target);
13897 // Type consistency
13898 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
13899 find mayInstanceOfEGenericType_class(problem,interpretation,target);
13900 // The reference is containment, then a new reference cannot be create if:
13901 // 1. Multiple parents
13902 neg find mustContains4(problem,interpretation,_,target);
13903 // 2. Circle in the containment hierarchy
13904 neg find mustTransitiveContains(source,target);
13905} or {
13906 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
13907}
13908/**
13909 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
13910 */
13911private pattern mustInRelationiD_attribute_EAttribute(
13912 problem:LogicProblem, interpretation:PartialInterpretation,
13913 source: DefinedElement, target:DefinedElement)
13914{
13915 find interpretation(problem,interpretation);
13916 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13917 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
13918 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13919 BinaryElementRelationLink.param1(link,source);
13920 BinaryElementRelationLink.param2(link,target);
13921}
13922/**
13923 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
13924 */
13925private pattern mayInRelationiD_attribute_EAttribute(
13926 problem:LogicProblem, interpretation:PartialInterpretation,
13927 source: DefinedElement, target:DefinedElement)
13928{
13929 find interpretation(problem,interpretation);
13930 // The two endpoint of the link have to exist
13931 find mayExist(problem, interpretation, source);
13932 find mayExist(problem, interpretation, target);
13933 // Type consistency
13934 find mayInstanceOfEAttribute_class(problem,interpretation,source);
13935 BooleanElement(target);
13936 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13937 // the upper bound of the multiplicity should be considered.
13938 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
13939 check(numberOfExistingReferences < 1);
13940} or {
13941 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
13942}
13943/**
13944 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
13945 */
13946private pattern mustInRelationsource_attribute_EAnnotation(
13947 problem:LogicProblem, interpretation:PartialInterpretation,
13948 source: DefinedElement, target:DefinedElement)
13949{
13950 find interpretation(problem,interpretation);
13951 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13952 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
13953 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13954 BinaryElementRelationLink.param1(link,source);
13955 BinaryElementRelationLink.param2(link,target);
13956}
13957/**
13958 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
13959 */
13960private pattern mayInRelationsource_attribute_EAnnotation(
13961 problem:LogicProblem, interpretation:PartialInterpretation,
13962 source: DefinedElement, target:DefinedElement)
13963{
13964 find interpretation(problem,interpretation);
13965 // The two endpoint of the link have to exist
13966 find mayExist(problem, interpretation, source);
13967 find mayExist(problem, interpretation, target);
13968 // Type consistency
13969 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
13970 StringElement(target);
13971 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13972 // the upper bound of the multiplicity should be considered.
13973 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
13974 check(numberOfExistingReferences < 1);
13975} or {
13976 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
13977}
13978/**
13979 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
13980 */
13981private pattern mustInRelationabstract_attribute_EClass(
13982 problem:LogicProblem, interpretation:PartialInterpretation,
13983 source: DefinedElement, target:DefinedElement)
13984{
13985 find interpretation(problem,interpretation);
13986 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13987 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
13988 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13989 BinaryElementRelationLink.param1(link,source);
13990 BinaryElementRelationLink.param2(link,target);
13991}
13992/**
13993 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
13994 */
13995private pattern mayInRelationabstract_attribute_EClass(
13996 problem:LogicProblem, interpretation:PartialInterpretation,
13997 source: DefinedElement, target:DefinedElement)
13998{
13999 find interpretation(problem,interpretation);
14000 // The two endpoint of the link have to exist
14001 find mayExist(problem, interpretation, source);
14002 find mayExist(problem, interpretation, target);
14003 // Type consistency
14004 find mayInstanceOfEClass_class(problem,interpretation,source);
14005 BooleanElement(target);
14006 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14007 // the upper bound of the multiplicity should be considered.
14008 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
14009 check(numberOfExistingReferences < 1);
14010} or {
14011 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
14012}
14013/**
14014 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
14015 */
14016private pattern mustInRelationinterface_attribute_EClass(
14017 problem:LogicProblem, interpretation:PartialInterpretation,
14018 source: DefinedElement, target:DefinedElement)
14019{
14020 find interpretation(problem,interpretation);
14021 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14022 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
14023 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14024 BinaryElementRelationLink.param1(link,source);
14025 BinaryElementRelationLink.param2(link,target);
14026}
14027/**
14028 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
14029 */
14030private pattern mayInRelationinterface_attribute_EClass(
14031 problem:LogicProblem, interpretation:PartialInterpretation,
14032 source: DefinedElement, target:DefinedElement)
14033{
14034 find interpretation(problem,interpretation);
14035 // The two endpoint of the link have to exist
14036 find mayExist(problem, interpretation, source);
14037 find mayExist(problem, interpretation, target);
14038 // Type consistency
14039 find mayInstanceOfEClass_class(problem,interpretation,source);
14040 BooleanElement(target);
14041 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14042 // the upper bound of the multiplicity should be considered.
14043 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
14044 check(numberOfExistingReferences < 1);
14045} or {
14046 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
14047}
14048/**
14049 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
14050 */
14051private pattern mustInRelationinstanceClassName_attribute_EClassifier(
14052 problem:LogicProblem, interpretation:PartialInterpretation,
14053 source: DefinedElement, target:DefinedElement)
14054{
14055 find interpretation(problem,interpretation);
14056 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14057 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
14058 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14059 BinaryElementRelationLink.param1(link,source);
14060 BinaryElementRelationLink.param2(link,target);
14061}
14062/**
14063 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
14064 */
14065private pattern mayInRelationinstanceClassName_attribute_EClassifier(
14066 problem:LogicProblem, interpretation:PartialInterpretation,
14067 source: DefinedElement, target:DefinedElement)
14068{
14069 find interpretation(problem,interpretation);
14070 // The two endpoint of the link have to exist
14071 find mayExist(problem, interpretation, source);
14072 find mayExist(problem, interpretation, target);
14073 // Type consistency
14074 find mayInstanceOfEClassifier_class(problem,interpretation,source);
14075 StringElement(target);
14076 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14077 // the upper bound of the multiplicity should be considered.
14078 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
14079 check(numberOfExistingReferences < 1);
14080} or {
14081 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
14082}
14083/**
14084 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
14085 */
14086private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
14087 problem:LogicProblem, interpretation:PartialInterpretation,
14088 source: DefinedElement, target:DefinedElement)
14089{
14090 find interpretation(problem,interpretation);
14091 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14092 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
14093 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14094 BinaryElementRelationLink.param1(link,source);
14095 BinaryElementRelationLink.param2(link,target);
14096}
14097/**
14098 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
14099 */
14100private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
14101 problem:LogicProblem, interpretation:PartialInterpretation,
14102 source: DefinedElement, target:DefinedElement)
14103{
14104 find interpretation(problem,interpretation);
14105 // The two endpoint of the link have to exist
14106 find mayExist(problem, interpretation, source);
14107 find mayExist(problem, interpretation, target);
14108 // Type consistency
14109 find mayInstanceOfEClassifier_class(problem,interpretation,source);
14110 StringElement(target);
14111 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14112 // the upper bound of the multiplicity should be considered.
14113 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
14114 check(numberOfExistingReferences < 1);
14115} or {
14116 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
14117}
14118/**
14119 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
14120 */
14121private pattern mustInRelationserializable_attribute_EDataType(
14122 problem:LogicProblem, interpretation:PartialInterpretation,
14123 source: DefinedElement, target:DefinedElement)
14124{
14125 find interpretation(problem,interpretation);
14126 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14127 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
14128 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14129 BinaryElementRelationLink.param1(link,source);
14130 BinaryElementRelationLink.param2(link,target);
14131}
14132/**
14133 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
14134 */
14135private pattern mayInRelationserializable_attribute_EDataType(
14136 problem:LogicProblem, interpretation:PartialInterpretation,
14137 source: DefinedElement, target:DefinedElement)
14138{
14139 find interpretation(problem,interpretation);
14140 // The two endpoint of the link have to exist
14141 find mayExist(problem, interpretation, source);
14142 find mayExist(problem, interpretation, target);
14143 // Type consistency
14144 find mayInstanceOfEDataType_class(problem,interpretation,source);
14145 BooleanElement(target);
14146 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14147 // the upper bound of the multiplicity should be considered.
14148 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
14149 check(numberOfExistingReferences < 1);
14150} or {
14151 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
14152}
14153/**
14154 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
14155 */
14156private pattern mustInRelationvalue_attribute_EEnumLiteral(
14157 problem:LogicProblem, interpretation:PartialInterpretation,
14158 source: DefinedElement, target:DefinedElement)
14159{
14160 find interpretation(problem,interpretation);
14161 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14162 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
14163 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14164 BinaryElementRelationLink.param1(link,source);
14165 BinaryElementRelationLink.param2(link,target);
14166}
14167/**
14168 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
14169 */
14170private pattern mayInRelationvalue_attribute_EEnumLiteral(
14171 problem:LogicProblem, interpretation:PartialInterpretation,
14172 source: DefinedElement, target:DefinedElement)
14173{
14174 find interpretation(problem,interpretation);
14175 // The two endpoint of the link have to exist
14176 find mayExist(problem, interpretation, source);
14177 find mayExist(problem, interpretation, target);
14178 // Type consistency
14179 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
14180 IntegerElement(target);
14181 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14182 // the upper bound of the multiplicity should be considered.
14183 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
14184 check(numberOfExistingReferences < 1);
14185} or {
14186 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
14187}
14188/**
14189 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
14190 */
14191private pattern mustInRelationliteral_attribute_EEnumLiteral(
14192 problem:LogicProblem, interpretation:PartialInterpretation,
14193 source: DefinedElement, target:DefinedElement)
14194{
14195 find interpretation(problem,interpretation);
14196 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14197 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
14198 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14199 BinaryElementRelationLink.param1(link,source);
14200 BinaryElementRelationLink.param2(link,target);
14201}
14202/**
14203 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
14204 */
14205private pattern mayInRelationliteral_attribute_EEnumLiteral(
14206 problem:LogicProblem, interpretation:PartialInterpretation,
14207 source: DefinedElement, target:DefinedElement)
14208{
14209 find interpretation(problem,interpretation);
14210 // The two endpoint of the link have to exist
14211 find mayExist(problem, interpretation, source);
14212 find mayExist(problem, interpretation, target);
14213 // Type consistency
14214 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
14215 StringElement(target);
14216 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14217 // the upper bound of the multiplicity should be considered.
14218 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
14219 check(numberOfExistingReferences < 1);
14220} or {
14221 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
14222}
14223/**
14224 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
14225 */
14226private pattern mustInRelationname_attribute_ENamedElement(
14227 problem:LogicProblem, interpretation:PartialInterpretation,
14228 source: DefinedElement, target:DefinedElement)
14229{
14230 find interpretation(problem,interpretation);
14231 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14232 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
14233 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14234 BinaryElementRelationLink.param1(link,source);
14235 BinaryElementRelationLink.param2(link,target);
14236}
14237/**
14238 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
14239 */
14240private pattern mayInRelationname_attribute_ENamedElement(
14241 problem:LogicProblem, interpretation:PartialInterpretation,
14242 source: DefinedElement, target:DefinedElement)
14243{
14244 find interpretation(problem,interpretation);
14245 // The two endpoint of the link have to exist
14246 find mayExist(problem, interpretation, source);
14247 find mayExist(problem, interpretation, target);
14248 // Type consistency
14249 find mayInstanceOfENamedElement_class(problem,interpretation,source);
14250 StringElement(target);
14251 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14252 // the upper bound of the multiplicity should be considered.
14253 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
14254 check(numberOfExistingReferences < 1);
14255} or {
14256 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
14257}
14258/**
14259 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
14260 */
14261private pattern mustInRelationnsURI_attribute_EPackage(
14262 problem:LogicProblem, interpretation:PartialInterpretation,
14263 source: DefinedElement, target:DefinedElement)
14264{
14265 find interpretation(problem,interpretation);
14266 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14267 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
14268 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14269 BinaryElementRelationLink.param1(link,source);
14270 BinaryElementRelationLink.param2(link,target);
14271}
14272/**
14273 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
14274 */
14275private pattern mayInRelationnsURI_attribute_EPackage(
14276 problem:LogicProblem, interpretation:PartialInterpretation,
14277 source: DefinedElement, target:DefinedElement)
14278{
14279 find interpretation(problem,interpretation);
14280 // The two endpoint of the link have to exist
14281 find mayExist(problem, interpretation, source);
14282 find mayExist(problem, interpretation, target);
14283 // Type consistency
14284 find mayInstanceOfEPackage_class(problem,interpretation,source);
14285 StringElement(target);
14286 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14287 // the upper bound of the multiplicity should be considered.
14288 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
14289 check(numberOfExistingReferences < 1);
14290} or {
14291 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
14292}
14293/**
14294 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
14295 */
14296private pattern mustInRelationnsPrefix_attribute_EPackage(
14297 problem:LogicProblem, interpretation:PartialInterpretation,
14298 source: DefinedElement, target:DefinedElement)
14299{
14300 find interpretation(problem,interpretation);
14301 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14302 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
14303 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14304 BinaryElementRelationLink.param1(link,source);
14305 BinaryElementRelationLink.param2(link,target);
14306}
14307/**
14308 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
14309 */
14310private pattern mayInRelationnsPrefix_attribute_EPackage(
14311 problem:LogicProblem, interpretation:PartialInterpretation,
14312 source: DefinedElement, target:DefinedElement)
14313{
14314 find interpretation(problem,interpretation);
14315 // The two endpoint of the link have to exist
14316 find mayExist(problem, interpretation, source);
14317 find mayExist(problem, interpretation, target);
14318 // Type consistency
14319 find mayInstanceOfEPackage_class(problem,interpretation,source);
14320 StringElement(target);
14321 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14322 // the upper bound of the multiplicity should be considered.
14323 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
14324 check(numberOfExistingReferences < 1);
14325} or {
14326 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
14327}
14328/**
14329 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
14330 */
14331private pattern mustInRelationcontainment_attribute_EReference(
14332 problem:LogicProblem, interpretation:PartialInterpretation,
14333 source: DefinedElement, target:DefinedElement)
14334{
14335 find interpretation(problem,interpretation);
14336 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14337 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
14338 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14339 BinaryElementRelationLink.param1(link,source);
14340 BinaryElementRelationLink.param2(link,target);
14341}
14342/**
14343 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
14344 */
14345private pattern mayInRelationcontainment_attribute_EReference(
14346 problem:LogicProblem, interpretation:PartialInterpretation,
14347 source: DefinedElement, target:DefinedElement)
14348{
14349 find interpretation(problem,interpretation);
14350 // The two endpoint of the link have to exist
14351 find mayExist(problem, interpretation, source);
14352 find mayExist(problem, interpretation, target);
14353 // Type consistency
14354 find mayInstanceOfEReference_class(problem,interpretation,source);
14355 BooleanElement(target);
14356 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14357 // the upper bound of the multiplicity should be considered.
14358 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
14359 check(numberOfExistingReferences < 1);
14360} or {
14361 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
14362}
14363/**
14364 * Matcher for detecting tuples t where []container attribute EReference(source,target)
14365 */
14366private pattern mustInRelationcontainer_attribute_EReference(
14367 problem:LogicProblem, interpretation:PartialInterpretation,
14368 source: DefinedElement, target:DefinedElement)
14369{
14370 find interpretation(problem,interpretation);
14371 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14372 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
14373 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14374 BinaryElementRelationLink.param1(link,source);
14375 BinaryElementRelationLink.param2(link,target);
14376}
14377/**
14378 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
14379 */
14380private pattern mayInRelationcontainer_attribute_EReference(
14381 problem:LogicProblem, interpretation:PartialInterpretation,
14382 source: DefinedElement, target:DefinedElement)
14383{
14384 find interpretation(problem,interpretation);
14385 // The two endpoint of the link have to exist
14386 find mayExist(problem, interpretation, source);
14387 find mayExist(problem, interpretation, target);
14388 // Type consistency
14389 find mayInstanceOfEReference_class(problem,interpretation,source);
14390 BooleanElement(target);
14391 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14392 // the upper bound of the multiplicity should be considered.
14393 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
14394 check(numberOfExistingReferences < 1);
14395} or {
14396 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
14397}
14398/**
14399 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
14400 */
14401private pattern mustInRelationresolveProxies_attribute_EReference(
14402 problem:LogicProblem, interpretation:PartialInterpretation,
14403 source: DefinedElement, target:DefinedElement)
14404{
14405 find interpretation(problem,interpretation);
14406 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14407 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
14408 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14409 BinaryElementRelationLink.param1(link,source);
14410 BinaryElementRelationLink.param2(link,target);
14411}
14412/**
14413 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
14414 */
14415private pattern mayInRelationresolveProxies_attribute_EReference(
14416 problem:LogicProblem, interpretation:PartialInterpretation,
14417 source: DefinedElement, target:DefinedElement)
14418{
14419 find interpretation(problem,interpretation);
14420 // The two endpoint of the link have to exist
14421 find mayExist(problem, interpretation, source);
14422 find mayExist(problem, interpretation, target);
14423 // Type consistency
14424 find mayInstanceOfEReference_class(problem,interpretation,source);
14425 BooleanElement(target);
14426 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14427 // the upper bound of the multiplicity should be considered.
14428 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
14429 check(numberOfExistingReferences < 1);
14430} or {
14431 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
14432}
14433/**
14434 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
14435 */
14436private pattern mustInRelationchangeable_attribute_EStructuralFeature(
14437 problem:LogicProblem, interpretation:PartialInterpretation,
14438 source: DefinedElement, target:DefinedElement)
14439{
14440 find interpretation(problem,interpretation);
14441 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14442 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
14443 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14444 BinaryElementRelationLink.param1(link,source);
14445 BinaryElementRelationLink.param2(link,target);
14446}
14447/**
14448 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
14449 */
14450private pattern mayInRelationchangeable_attribute_EStructuralFeature(
14451 problem:LogicProblem, interpretation:PartialInterpretation,
14452 source: DefinedElement, target:DefinedElement)
14453{
14454 find interpretation(problem,interpretation);
14455 // The two endpoint of the link have to exist
14456 find mayExist(problem, interpretation, source);
14457 find mayExist(problem, interpretation, target);
14458 // Type consistency
14459 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
14460 BooleanElement(target);
14461 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14462 // the upper bound of the multiplicity should be considered.
14463 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
14464 check(numberOfExistingReferences < 1);
14465} or {
14466 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
14467}
14468/**
14469 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
14470 */
14471private pattern mustInRelationvolatile_attribute_EStructuralFeature(
14472 problem:LogicProblem, interpretation:PartialInterpretation,
14473 source: DefinedElement, target:DefinedElement)
14474{
14475 find interpretation(problem,interpretation);
14476 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14477 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
14478 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14479 BinaryElementRelationLink.param1(link,source);
14480 BinaryElementRelationLink.param2(link,target);
14481}
14482/**
14483 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
14484 */
14485private pattern mayInRelationvolatile_attribute_EStructuralFeature(
14486 problem:LogicProblem, interpretation:PartialInterpretation,
14487 source: DefinedElement, target:DefinedElement)
14488{
14489 find interpretation(problem,interpretation);
14490 // The two endpoint of the link have to exist
14491 find mayExist(problem, interpretation, source);
14492 find mayExist(problem, interpretation, target);
14493 // Type consistency
14494 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
14495 BooleanElement(target);
14496 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14497 // the upper bound of the multiplicity should be considered.
14498 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
14499 check(numberOfExistingReferences < 1);
14500} or {
14501 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
14502}
14503/**
14504 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
14505 */
14506private pattern mustInRelationtransient_attribute_EStructuralFeature(
14507 problem:LogicProblem, interpretation:PartialInterpretation,
14508 source: DefinedElement, target:DefinedElement)
14509{
14510 find interpretation(problem,interpretation);
14511 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14512 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
14513 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14514 BinaryElementRelationLink.param1(link,source);
14515 BinaryElementRelationLink.param2(link,target);
14516}
14517/**
14518 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
14519 */
14520private pattern mayInRelationtransient_attribute_EStructuralFeature(
14521 problem:LogicProblem, interpretation:PartialInterpretation,
14522 source: DefinedElement, target:DefinedElement)
14523{
14524 find interpretation(problem,interpretation);
14525 // The two endpoint of the link have to exist
14526 find mayExist(problem, interpretation, source);
14527 find mayExist(problem, interpretation, target);
14528 // Type consistency
14529 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
14530 BooleanElement(target);
14531 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14532 // the upper bound of the multiplicity should be considered.
14533 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
14534 check(numberOfExistingReferences < 1);
14535} or {
14536 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
14537}
14538/**
14539 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
14540 */
14541private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
14542 problem:LogicProblem, interpretation:PartialInterpretation,
14543 source: DefinedElement, target:DefinedElement)
14544{
14545 find interpretation(problem,interpretation);
14546 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14547 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
14548 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14549 BinaryElementRelationLink.param1(link,source);
14550 BinaryElementRelationLink.param2(link,target);
14551}
14552/**
14553 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
14554 */
14555private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
14556 problem:LogicProblem, interpretation:PartialInterpretation,
14557 source: DefinedElement, target:DefinedElement)
14558{
14559 find interpretation(problem,interpretation);
14560 // The two endpoint of the link have to exist
14561 find mayExist(problem, interpretation, source);
14562 find mayExist(problem, interpretation, target);
14563 // Type consistency
14564 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
14565 StringElement(target);
14566 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14567 // the upper bound of the multiplicity should be considered.
14568 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
14569 check(numberOfExistingReferences < 1);
14570} or {
14571 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
14572}
14573/**
14574 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
14575 */
14576private pattern mustInRelationunsettable_attribute_EStructuralFeature(
14577 problem:LogicProblem, interpretation:PartialInterpretation,
14578 source: DefinedElement, target:DefinedElement)
14579{
14580 find interpretation(problem,interpretation);
14581 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14582 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
14583 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14584 BinaryElementRelationLink.param1(link,source);
14585 BinaryElementRelationLink.param2(link,target);
14586}
14587/**
14588 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
14589 */
14590private pattern mayInRelationunsettable_attribute_EStructuralFeature(
14591 problem:LogicProblem, interpretation:PartialInterpretation,
14592 source: DefinedElement, target:DefinedElement)
14593{
14594 find interpretation(problem,interpretation);
14595 // The two endpoint of the link have to exist
14596 find mayExist(problem, interpretation, source);
14597 find mayExist(problem, interpretation, target);
14598 // Type consistency
14599 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
14600 BooleanElement(target);
14601 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14602 // the upper bound of the multiplicity should be considered.
14603 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
14604 check(numberOfExistingReferences < 1);
14605} or {
14606 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
14607}
14608/**
14609 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
14610 */
14611private pattern mustInRelationderived_attribute_EStructuralFeature(
14612 problem:LogicProblem, interpretation:PartialInterpretation,
14613 source: DefinedElement, target:DefinedElement)
14614{
14615 find interpretation(problem,interpretation);
14616 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14617 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
14618 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14619 BinaryElementRelationLink.param1(link,source);
14620 BinaryElementRelationLink.param2(link,target);
14621}
14622/**
14623 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
14624 */
14625private pattern mayInRelationderived_attribute_EStructuralFeature(
14626 problem:LogicProblem, interpretation:PartialInterpretation,
14627 source: DefinedElement, target:DefinedElement)
14628{
14629 find interpretation(problem,interpretation);
14630 // The two endpoint of the link have to exist
14631 find mayExist(problem, interpretation, source);
14632 find mayExist(problem, interpretation, target);
14633 // Type consistency
14634 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
14635 BooleanElement(target);
14636 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14637 // the upper bound of the multiplicity should be considered.
14638 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
14639 check(numberOfExistingReferences < 1);
14640} or {
14641 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
14642}
14643/**
14644 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
14645 */
14646private pattern mustInRelationordered_attribute_ETypedElement(
14647 problem:LogicProblem, interpretation:PartialInterpretation,
14648 source: DefinedElement, target:DefinedElement)
14649{
14650 find interpretation(problem,interpretation);
14651 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14652 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
14653 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14654 BinaryElementRelationLink.param1(link,source);
14655 BinaryElementRelationLink.param2(link,target);
14656}
14657/**
14658 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
14659 */
14660private pattern mayInRelationordered_attribute_ETypedElement(
14661 problem:LogicProblem, interpretation:PartialInterpretation,
14662 source: DefinedElement, target:DefinedElement)
14663{
14664 find interpretation(problem,interpretation);
14665 // The two endpoint of the link have to exist
14666 find mayExist(problem, interpretation, source);
14667 find mayExist(problem, interpretation, target);
14668 // Type consistency
14669 find mayInstanceOfETypedElement_class(problem,interpretation,source);
14670 BooleanElement(target);
14671 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14672 // the upper bound of the multiplicity should be considered.
14673 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
14674 check(numberOfExistingReferences < 1);
14675} or {
14676 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
14677}
14678/**
14679 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
14680 */
14681private pattern mustInRelationunique_attribute_ETypedElement(
14682 problem:LogicProblem, interpretation:PartialInterpretation,
14683 source: DefinedElement, target:DefinedElement)
14684{
14685 find interpretation(problem,interpretation);
14686 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14687 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
14688 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14689 BinaryElementRelationLink.param1(link,source);
14690 BinaryElementRelationLink.param2(link,target);
14691}
14692/**
14693 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
14694 */
14695private pattern mayInRelationunique_attribute_ETypedElement(
14696 problem:LogicProblem, interpretation:PartialInterpretation,
14697 source: DefinedElement, target:DefinedElement)
14698{
14699 find interpretation(problem,interpretation);
14700 // The two endpoint of the link have to exist
14701 find mayExist(problem, interpretation, source);
14702 find mayExist(problem, interpretation, target);
14703 // Type consistency
14704 find mayInstanceOfETypedElement_class(problem,interpretation,source);
14705 BooleanElement(target);
14706 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14707 // the upper bound of the multiplicity should be considered.
14708 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
14709 check(numberOfExistingReferences < 1);
14710} or {
14711 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
14712}
14713/**
14714 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
14715 */
14716private pattern mustInRelationlowerBound_attribute_ETypedElement(
14717 problem:LogicProblem, interpretation:PartialInterpretation,
14718 source: DefinedElement, target:DefinedElement)
14719{
14720 find interpretation(problem,interpretation);
14721 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14722 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
14723 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14724 BinaryElementRelationLink.param1(link,source);
14725 BinaryElementRelationLink.param2(link,target);
14726}
14727/**
14728 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
14729 */
14730private pattern mayInRelationlowerBound_attribute_ETypedElement(
14731 problem:LogicProblem, interpretation:PartialInterpretation,
14732 source: DefinedElement, target:DefinedElement)
14733{
14734 find interpretation(problem,interpretation);
14735 // The two endpoint of the link have to exist
14736 find mayExist(problem, interpretation, source);
14737 find mayExist(problem, interpretation, target);
14738 // Type consistency
14739 find mayInstanceOfETypedElement_class(problem,interpretation,source);
14740 IntegerElement(target);
14741 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14742 // the upper bound of the multiplicity should be considered.
14743 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
14744 check(numberOfExistingReferences < 1);
14745} or {
14746 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
14747}
14748/**
14749 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
14750 */
14751private pattern mustInRelationupperBound_attribute_ETypedElement(
14752 problem:LogicProblem, interpretation:PartialInterpretation,
14753 source: DefinedElement, target:DefinedElement)
14754{
14755 find interpretation(problem,interpretation);
14756 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14757 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
14758 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14759 BinaryElementRelationLink.param1(link,source);
14760 BinaryElementRelationLink.param2(link,target);
14761}
14762/**
14763 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
14764 */
14765private pattern mayInRelationupperBound_attribute_ETypedElement(
14766 problem:LogicProblem, interpretation:PartialInterpretation,
14767 source: DefinedElement, target:DefinedElement)
14768{
14769 find interpretation(problem,interpretation);
14770 // The two endpoint of the link have to exist
14771 find mayExist(problem, interpretation, source);
14772 find mayExist(problem, interpretation, target);
14773 // Type consistency
14774 find mayInstanceOfETypedElement_class(problem,interpretation,source);
14775 IntegerElement(target);
14776 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14777 // the upper bound of the multiplicity should be considered.
14778 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
14779 check(numberOfExistingReferences < 1);
14780} or {
14781 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
14782}
14783/**
14784 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
14785 */
14786private pattern mustInRelationmany_attribute_ETypedElement(
14787 problem:LogicProblem, interpretation:PartialInterpretation,
14788 source: DefinedElement, target:DefinedElement)
14789{
14790 find interpretation(problem,interpretation);
14791 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14792 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
14793 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14794 BinaryElementRelationLink.param1(link,source);
14795 BinaryElementRelationLink.param2(link,target);
14796}
14797/**
14798 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
14799 */
14800private pattern mayInRelationmany_attribute_ETypedElement(
14801 problem:LogicProblem, interpretation:PartialInterpretation,
14802 source: DefinedElement, target:DefinedElement)
14803{
14804 find interpretation(problem,interpretation);
14805 // The two endpoint of the link have to exist
14806 find mayExist(problem, interpretation, source);
14807 find mayExist(problem, interpretation, target);
14808 // Type consistency
14809 find mayInstanceOfETypedElement_class(problem,interpretation,source);
14810 BooleanElement(target);
14811 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14812 // the upper bound of the multiplicity should be considered.
14813 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
14814 check(numberOfExistingReferences < 1);
14815} or {
14816 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
14817}
14818/**
14819 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
14820 */
14821private pattern mustInRelationrequired_attribute_ETypedElement(
14822 problem:LogicProblem, interpretation:PartialInterpretation,
14823 source: DefinedElement, target:DefinedElement)
14824{
14825 find interpretation(problem,interpretation);
14826 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14827 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
14828 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14829 BinaryElementRelationLink.param1(link,source);
14830 BinaryElementRelationLink.param2(link,target);
14831}
14832/**
14833 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
14834 */
14835private pattern mayInRelationrequired_attribute_ETypedElement(
14836 problem:LogicProblem, interpretation:PartialInterpretation,
14837 source: DefinedElement, target:DefinedElement)
14838{
14839 find interpretation(problem,interpretation);
14840 // The two endpoint of the link have to exist
14841 find mayExist(problem, interpretation, source);
14842 find mayExist(problem, interpretation, target);
14843 // Type consistency
14844 find mayInstanceOfETypedElement_class(problem,interpretation,source);
14845 BooleanElement(target);
14846 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14847 // the upper bound of the multiplicity should be considered.
14848 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
14849 check(numberOfExistingReferences < 1);
14850} or {
14851 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
14852}
14853/**
14854 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
14855 */
14856private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
14857 problem:LogicProblem, interpretation:PartialInterpretation,
14858 source: DefinedElement, target:DefinedElement)
14859{
14860 find interpretation(problem,interpretation);
14861 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14862 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
14863 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14864 BinaryElementRelationLink.param1(link,source);
14865 BinaryElementRelationLink.param2(link,target);
14866}
14867/**
14868 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
14869 */
14870private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
14871 problem:LogicProblem, interpretation:PartialInterpretation,
14872 source: DefinedElement, target:DefinedElement)
14873{
14874 find interpretation(problem,interpretation);
14875 // The two endpoint of the link have to exist
14876 find mayExist(problem, interpretation, source);
14877 find mayExist(problem, interpretation, target);
14878 // Type consistency
14879 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
14880 StringElement(target);
14881 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14882 // the upper bound of the multiplicity should be considered.
14883 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
14884 check(numberOfExistingReferences < 1);
14885} or {
14886 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
14887}
14888/**
14889 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
14890 */
14891private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
14892 problem:LogicProblem, interpretation:PartialInterpretation,
14893 source: DefinedElement, target:DefinedElement)
14894{
14895 find interpretation(problem,interpretation);
14896 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14897 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
14898 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14899 BinaryElementRelationLink.param1(link,source);
14900 BinaryElementRelationLink.param2(link,target);
14901}
14902/**
14903 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
14904 */
14905private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
14906 problem:LogicProblem, interpretation:PartialInterpretation,
14907 source: DefinedElement, target:DefinedElement)
14908{
14909 find interpretation(problem,interpretation);
14910 // The two endpoint of the link have to exist
14911 find mayExist(problem, interpretation, source);
14912 find mayExist(problem, interpretation, target);
14913 // Type consistency
14914 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
14915 StringElement(target);
14916 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14917 // the upper bound of the multiplicity should be considered.
14918 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
14919 check(numberOfExistingReferences < 1);
14920} or {
14921 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
14922}
14923
14924//////////
14925// 1.3 Relation Definition Indexers
14926//////////
14927
14928//////////
14929// 1.4 Containment Indexer
14930//////////
14931private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
14932 find mustContains4(_,_,source,target);
14933}
14934
14935private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
14936 source: DefinedElement, target: DefinedElement)
14937 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
14938
14939 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
14940
14941 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
14942
14943 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
14944
14945 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
14946
14947 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
14948
14949 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
14950
14951 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
14952
14953 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
14954
14955 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
14956
14957 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
14958
14959 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
14960
14961 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
14962
14963 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
14964
14965 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
14966
14967 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
14968
14969 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
14970
14971 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
14972
14973private pattern mustTransitiveContains(source,target) {
14974 find mustContains2+(source,target);
14975}
14976
14977//////////
14978// 2. Invalidation Indexers
14979//////////
14980// 2.1 Invalidated by WF Queries
14981//////////
14982
14983//////////
14984// 3. Unfinishedness Indexers
14985//////////
14986// 3.1 Unfinishedness Measured by Multiplicity
14987//////////
14988pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
14989 find interpretation(problem,interpretation);
14990 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14991 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
14992 find mustInstanceOfEAttribute_class(problem,interpretation,object);
14993 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
14994 check(numberOfExistingReferences < 1);
14995 missingMultiplicity == eval(1-numberOfExistingReferences);
14996}
14997pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
14998 find interpretation(problem,interpretation);
14999 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15000 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
15001 find mustInstanceOfEReference_class(problem,interpretation,object);
15002 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
15003 check(numberOfExistingReferences < 1);
15004 missingMultiplicity == eval(1-numberOfExistingReferences);
15005}
15006pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
15007 find interpretation(problem,interpretation);
15008 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15009 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
15010 find mustInstanceOfEGenericType_class(problem,interpretation,object);
15011 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
15012 check(numberOfExistingReferences < 1);
15013 missingMultiplicity == eval(1-numberOfExistingReferences);
15014}
15015
15016//////////
15017// 3.2 Unfinishedness Measured by WF Queries
15018//////////
15019
15020//////////
15021// 4. Refinement Indexers
15022//////////
15023// 4.1 Object constructors
15024//////////
15025private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
15026{
15027 find interpretation(problem,interpretation);
15028 find mustInstanceOfENamedElement_class(problem,interpretation,root);
15029 find mustExist(problem, interpretation, root);
15030}or{
15031 find interpretation(problem,interpretation);
15032 find mustInstanceOfEObject_class(problem,interpretation,root);
15033 find mustExist(problem, interpretation, root);
15034}or{
15035 find interpretation(problem,interpretation);
15036 find mustInstanceOfEParameter_class(problem,interpretation,root);
15037 find mustExist(problem, interpretation, root);
15038}or{
15039 find interpretation(problem,interpretation);
15040 find mustInstanceOfEReference_class(problem,interpretation,root);
15041 find mustExist(problem, interpretation, root);
15042}or{
15043 find interpretation(problem,interpretation);
15044 find mustInstanceOfEOperation_class(problem,interpretation,root);
15045 find mustExist(problem, interpretation, root);
15046}or{
15047 find interpretation(problem,interpretation);
15048 find mustInstanceOfEClass_class(problem,interpretation,root);
15049 find mustExist(problem, interpretation, root);
15050}or{
15051 find interpretation(problem,interpretation);
15052 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
15053 find mustExist(problem, interpretation, root);
15054}or{
15055 find interpretation(problem,interpretation);
15056 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
15057 find mustExist(problem, interpretation, root);
15058}or{
15059 find interpretation(problem,interpretation);
15060 find mustInstanceOfEModelElement_class(problem,interpretation,root);
15061 find mustExist(problem, interpretation, root);
15062}or{
15063 find interpretation(problem,interpretation);
15064 find mustInstanceOfEAttribute_class(problem,interpretation,root);
15065 find mustExist(problem, interpretation, root);
15066}or{
15067 find interpretation(problem,interpretation);
15068 find mustInstanceOfEClassifier_class(problem,interpretation,root);
15069 find mustExist(problem, interpretation, root);
15070}or{
15071 find interpretation(problem,interpretation);
15072 find mustInstanceOfETypedElement_class(problem,interpretation,root);
15073 find mustExist(problem, interpretation, root);
15074}or{
15075 find interpretation(problem,interpretation);
15076 find mustInstanceOfEPackage_class(problem,interpretation,root);
15077 find mustExist(problem, interpretation, root);
15078}or{
15079 find interpretation(problem,interpretation);
15080 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
15081 find mustExist(problem, interpretation, root);
15082}or{
15083 find interpretation(problem,interpretation);
15084 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
15085 find mustExist(problem, interpretation, root);
15086}or{
15087 find interpretation(problem,interpretation);
15088 find mustInstanceOfEEnum_class(problem,interpretation,root);
15089 find mustExist(problem, interpretation, root);
15090}or{
15091 find interpretation(problem,interpretation);
15092 find mustInstanceOfEDataType_class(problem,interpretation,root);
15093 find mustExist(problem, interpretation, root);
15094}or{
15095 find interpretation(problem,interpretation);
15096 find mustInstanceOfEGenericType_class(problem,interpretation,root);
15097 find mustExist(problem, interpretation, root);
15098}or{
15099 find interpretation(problem,interpretation);
15100 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
15101 find mustExist(problem, interpretation, root);
15102}or{
15103 find interpretation(problem,interpretation);
15104 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
15105 find mustExist(problem, interpretation, root);
15106}or{
15107 find interpretation(problem,interpretation);
15108 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
15109 find mustExist(problem, interpretation, root);
15110}or{
15111 find interpretation(problem,interpretation);
15112 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
15113 find mustExist(problem, interpretation, root);
15114}or{
15115 find interpretation(problem,interpretation);
15116 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
15117 find mustExist(problem, interpretation, root);
15118}or{
15119 find interpretation(problem,interpretation);
15120 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
15121 find mustExist(problem, interpretation, root);
15122}or{
15123 find interpretation(problem,interpretation);
15124 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
15125 find mustExist(problem, interpretation, root);
15126}
15127pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
15128 problem:LogicProblem, interpretation:PartialInterpretation,
15129 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15130 container:DefinedElement)
15131{
15132 find interpretation(problem,interpretation);
15133 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15134 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
15135 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15136 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
15137 find mustInstanceOfEClass_class(problem,interpretation,container);
15138 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
15139 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
15140 find mustExist(problem, interpretation, container);
15141 neg find mustExist(problem, interpretation, newObject);
15142}
15143pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
15144 problem:LogicProblem, interpretation:PartialInterpretation,
15145 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15146 container:DefinedElement)
15147{
15148 find interpretation(problem,interpretation);
15149 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15150 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
15151 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15152 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
15153 find mustInstanceOfEOperation_class(problem,interpretation,container);
15154 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
15155 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
15156 find mustExist(problem, interpretation, container);
15157 neg find mustExist(problem, interpretation, newObject);
15158}
15159pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
15160 problem:LogicProblem, interpretation:PartialInterpretation,
15161 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15162 container:DefinedElement)
15163{
15164 find interpretation(problem,interpretation);
15165 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15166 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
15167 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15168 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
15169 find mustInstanceOfETypedElement_class(problem,interpretation,container);
15170 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
15171 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
15172 find mustExist(problem, interpretation, container);
15173 neg find mustExist(problem, interpretation, newObject);
15174}
15175pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
15176 problem:LogicProblem, interpretation:PartialInterpretation,
15177 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15178 container:DefinedElement)
15179{
15180 find interpretation(problem,interpretation);
15181 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15182 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
15183 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15184 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
15185 find mustInstanceOfEGenericType_class(problem,interpretation,container);
15186 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
15187 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
15188 find mustExist(problem, interpretation, container);
15189 neg find mustExist(problem, interpretation, newObject);
15190}
15191pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
15192 problem:LogicProblem, interpretation:PartialInterpretation,
15193 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15194 container:DefinedElement)
15195{
15196 find interpretation(problem,interpretation);
15197 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15198 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
15199 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15200 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
15201 find mustInstanceOfEGenericType_class(problem,interpretation,container);
15202 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
15203 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
15204 find mustExist(problem, interpretation, container);
15205 neg find mustExist(problem, interpretation, newObject);
15206}
15207pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
15208 problem:LogicProblem, interpretation:PartialInterpretation,
15209 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15210 container:DefinedElement)
15211{
15212 find interpretation(problem,interpretation);
15213 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15214 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
15215 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15216 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
15217 find mustInstanceOfEGenericType_class(problem,interpretation,container);
15218 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
15219 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
15220 find mustExist(problem, interpretation, container);
15221 neg find mustExist(problem, interpretation, newObject);
15222}
15223pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
15224 problem:LogicProblem, interpretation:PartialInterpretation,
15225 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15226 container:DefinedElement)
15227{
15228 find interpretation(problem,interpretation);
15229 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15230 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
15231 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15232 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
15233 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
15234 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
15235 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
15236 find mustExist(problem, interpretation, container);
15237 neg find mustExist(problem, interpretation, newObject);
15238}
15239pattern createObject_EGenericType_class(
15240 problem:LogicProblem, interpretation:PartialInterpretation,
15241 typeInterpretation:PartialComplexTypeInterpretation)
15242{
15243 find interpretation(problem,interpretation);
15244 neg find hasElementInContainment(problem,interpretation);
15245 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15246 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
15247 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
15248 find mayExist(problem, interpretation, newObject);
15249 neg find mustExist(problem, interpretation, newObject);
15250}
15251pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
15252 problem:LogicProblem, interpretation:PartialInterpretation,
15253 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15254 container:DefinedElement)
15255{
15256 find interpretation(problem,interpretation);
15257 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15258 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
15259 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15260 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
15261 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15262 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
15263 find mustInstanceOfEPackage_class(problem,interpretation,container);
15264 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
15265 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
15266 find mustExist(problem, interpretation, container);
15267 neg find mustExist(problem, interpretation, newObject);
15268}
15269pattern createObject_EPackage_class_UndefinedPart(
15270 problem:LogicProblem, interpretation:PartialInterpretation,
15271 typeInterpretation:PartialComplexTypeInterpretation)
15272{
15273 find interpretation(problem,interpretation);
15274 neg find hasElementInContainment(problem,interpretation);
15275 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15276 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
15277 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
15278 find mayExist(problem, interpretation, newObject);
15279 neg find mustExist(problem, interpretation, newObject);
15280}
15281pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
15282 problem:LogicProblem, interpretation:PartialInterpretation,
15283 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15284 container:DefinedElement)
15285{
15286 find interpretation(problem,interpretation);
15287 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15288 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
15289 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15290 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
15291 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15292 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
15293 find mustInstanceOfEModelElement_class(problem,interpretation,container);
15294 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
15295 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
15296 find mustExist(problem, interpretation, container);
15297 neg find mustExist(problem, interpretation, newObject);
15298}
15299pattern createObject_EAnnotation_class(
15300 problem:LogicProblem, interpretation:PartialInterpretation,
15301 typeInterpretation:PartialComplexTypeInterpretation)
15302{
15303 find interpretation(problem,interpretation);
15304 neg find hasElementInContainment(problem,interpretation);
15305 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15306 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
15307 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
15308 find mayExist(problem, interpretation, newObject);
15309 neg find mustExist(problem, interpretation, newObject);
15310}
15311pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
15312 problem:LogicProblem, interpretation:PartialInterpretation,
15313 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15314 container:DefinedElement)
15315{
15316 find interpretation(problem,interpretation);
15317 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15318 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
15319 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15320 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
15321 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15322 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
15323 find mustInstanceOfEEnum_class(problem,interpretation,container);
15324 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
15325 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
15326 find mustExist(problem, interpretation, container);
15327 neg find mustExist(problem, interpretation, newObject);
15328}
15329pattern createObject_EEnumLiteral_class(
15330 problem:LogicProblem, interpretation:PartialInterpretation,
15331 typeInterpretation:PartialComplexTypeInterpretation)
15332{
15333 find interpretation(problem,interpretation);
15334 neg find hasElementInContainment(problem,interpretation);
15335 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15336 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
15337 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
15338 find mayExist(problem, interpretation, newObject);
15339 neg find mustExist(problem, interpretation, newObject);
15340}
15341pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
15342 problem:LogicProblem, interpretation:PartialInterpretation,
15343 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15344 container:DefinedElement)
15345{
15346 find interpretation(problem,interpretation);
15347 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15348 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
15349 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15350 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
15351 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15352 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
15353 find mustInstanceOfEPackage_class(problem,interpretation,container);
15354 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
15355 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
15356 find mustExist(problem, interpretation, container);
15357 neg find mustExist(problem, interpretation, newObject);
15358}
15359pattern createObject_EEnum_class(
15360 problem:LogicProblem, interpretation:PartialInterpretation,
15361 typeInterpretation:PartialComplexTypeInterpretation)
15362{
15363 find interpretation(problem,interpretation);
15364 neg find hasElementInContainment(problem,interpretation);
15365 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15366 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
15367 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
15368 find mayExist(problem, interpretation, newObject);
15369 neg find mustExist(problem, interpretation, newObject);
15370}
15371pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
15372 problem:LogicProblem, interpretation:PartialInterpretation,
15373 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15374 container:DefinedElement)
15375{
15376 find interpretation(problem,interpretation);
15377 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15378 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
15379 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15380 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
15381 find mustInstanceOfEClassifier_class(problem,interpretation,container);
15382 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
15383 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
15384 find mustExist(problem, interpretation, container);
15385 neg find mustExist(problem, interpretation, newObject);
15386}
15387pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
15388 problem:LogicProblem, interpretation:PartialInterpretation,
15389 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15390 container:DefinedElement)
15391{
15392 find interpretation(problem,interpretation);
15393 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15394 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
15395 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15396 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
15397 find mustInstanceOfEOperation_class(problem,interpretation,container);
15398 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
15399 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
15400 find mustExist(problem, interpretation, container);
15401 neg find mustExist(problem, interpretation, newObject);
15402}
15403pattern createObject_ETypeParameter_class(
15404 problem:LogicProblem, interpretation:PartialInterpretation,
15405 typeInterpretation:PartialComplexTypeInterpretation)
15406{
15407 find interpretation(problem,interpretation);
15408 neg find hasElementInContainment(problem,interpretation);
15409 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15410 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
15411 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
15412 find mayExist(problem, interpretation, newObject);
15413 neg find mustExist(problem, interpretation, newObject);
15414}
15415pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
15416 problem:LogicProblem, interpretation:PartialInterpretation,
15417 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15418 container:DefinedElement)
15419{
15420 find interpretation(problem,interpretation);
15421 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15422 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
15423 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15424 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
15425 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
15426 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
15427 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
15428 find mustExist(problem, interpretation, container);
15429 neg find mustExist(problem, interpretation, newObject);
15430}
15431pattern createObject_EStringToStringMapEntry_class(
15432 problem:LogicProblem, interpretation:PartialInterpretation,
15433 typeInterpretation:PartialComplexTypeInterpretation)
15434{
15435 find interpretation(problem,interpretation);
15436 neg find hasElementInContainment(problem,interpretation);
15437 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15438 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
15439 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
15440 find mayExist(problem, interpretation, newObject);
15441 neg find mustExist(problem, interpretation, newObject);
15442}
15443pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
15444 problem:LogicProblem, interpretation:PartialInterpretation,
15445 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15446 container:DefinedElement)
15447{
15448 find interpretation(problem,interpretation);
15449 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15450 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
15451 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15452 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
15453 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15454 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
15455 find mustInstanceOfEClass_class(problem,interpretation,container);
15456 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
15457 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
15458 find mustExist(problem, interpretation, container);
15459 neg find mustExist(problem, interpretation, newObject);
15460}
15461pattern createObject_EAttribute_class(
15462 problem:LogicProblem, interpretation:PartialInterpretation,
15463 typeInterpretation:PartialComplexTypeInterpretation)
15464{
15465 find interpretation(problem,interpretation);
15466 neg find hasElementInContainment(problem,interpretation);
15467 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15468 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
15469 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
15470 find mayExist(problem, interpretation, newObject);
15471 neg find mustExist(problem, interpretation, newObject);
15472}
15473pattern createObject_EObject_class_by_contents_reference_EAnnotation(
15474 problem:LogicProblem, interpretation:PartialInterpretation,
15475 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15476 container:DefinedElement)
15477{
15478 find interpretation(problem,interpretation);
15479 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15480 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
15481 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15482 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
15483 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
15484 find mayInstanceOfEObject_class(problem,interpretation,newObject);
15485 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
15486 find mustExist(problem, interpretation, container);
15487 neg find mustExist(problem, interpretation, newObject);
15488}
15489pattern createObject_EObject_class(
15490 problem:LogicProblem, interpretation:PartialInterpretation,
15491 typeInterpretation:PartialComplexTypeInterpretation)
15492{
15493 find interpretation(problem,interpretation);
15494 neg find hasElementInContainment(problem,interpretation);
15495 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15496 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
15497 find mayInstanceOfEObject_class(problem,interpretation,newObject);
15498 find mayExist(problem, interpretation, newObject);
15499 neg find mustExist(problem, interpretation, newObject);
15500}
15501pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
15502 problem:LogicProblem, interpretation:PartialInterpretation,
15503 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15504 container:DefinedElement)
15505{
15506 find interpretation(problem,interpretation);
15507 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15508 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
15509 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15510 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
15511 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15512 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
15513 find mustInstanceOfEClass_class(problem,interpretation,container);
15514 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
15515 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
15516 find mustExist(problem, interpretation, container);
15517 neg find mustExist(problem, interpretation, newObject);
15518}
15519pattern createObject_EOperation_class(
15520 problem:LogicProblem, interpretation:PartialInterpretation,
15521 typeInterpretation:PartialComplexTypeInterpretation)
15522{
15523 find interpretation(problem,interpretation);
15524 neg find hasElementInContainment(problem,interpretation);
15525 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15526 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
15527 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
15528 find mayExist(problem, interpretation, newObject);
15529 neg find mustExist(problem, interpretation, newObject);
15530}
15531pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
15532 problem:LogicProblem, interpretation:PartialInterpretation,
15533 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15534 container:DefinedElement)
15535{
15536 find interpretation(problem,interpretation);
15537 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15538 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
15539 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15540 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
15541 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15542 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
15543 find mustInstanceOfEPackage_class(problem,interpretation,container);
15544 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
15545 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
15546 find mustExist(problem, interpretation, container);
15547 neg find mustExist(problem, interpretation, newObject);
15548}
15549pattern createObject_EDataType_class(
15550 problem:LogicProblem, interpretation:PartialInterpretation,
15551 typeInterpretation:PartialComplexTypeInterpretation)
15552{
15553 find interpretation(problem,interpretation);
15554 neg find hasElementInContainment(problem,interpretation);
15555 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15556 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
15557 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
15558 find mayExist(problem, interpretation, newObject);
15559 neg find mustExist(problem, interpretation, newObject);
15560}
15561pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
15562 problem:LogicProblem, interpretation:PartialInterpretation,
15563 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15564 container:DefinedElement)
15565{
15566 find interpretation(problem,interpretation);
15567 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15568 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
15569 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15570 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
15571 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15572 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
15573 find mustInstanceOfEClass_class(problem,interpretation,container);
15574 find mayInstanceOfEReference_class(problem,interpretation,newObject);
15575 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
15576 find mustExist(problem, interpretation, container);
15577 neg find mustExist(problem, interpretation, newObject);
15578}
15579pattern createObject_EReference_class(
15580 problem:LogicProblem, interpretation:PartialInterpretation,
15581 typeInterpretation:PartialComplexTypeInterpretation)
15582{
15583 find interpretation(problem,interpretation);
15584 neg find hasElementInContainment(problem,interpretation);
15585 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15586 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
15587 find mayInstanceOfEReference_class(problem,interpretation,newObject);
15588 find mayExist(problem, interpretation, newObject);
15589 neg find mustExist(problem, interpretation, newObject);
15590}
15591pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
15592 problem:LogicProblem, interpretation:PartialInterpretation,
15593 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15594 container:DefinedElement)
15595{
15596 find interpretation(problem,interpretation);
15597 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15598 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
15599 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15600 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
15601 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15602 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
15603 find mustInstanceOfEPackage_class(problem,interpretation,container);
15604 find mayInstanceOfEClass_class(problem,interpretation,newObject);
15605 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
15606 find mustExist(problem, interpretation, container);
15607 neg find mustExist(problem, interpretation, newObject);
15608}
15609pattern createObject_EClass_class(
15610 problem:LogicProblem, interpretation:PartialInterpretation,
15611 typeInterpretation:PartialComplexTypeInterpretation)
15612{
15613 find interpretation(problem,interpretation);
15614 neg find hasElementInContainment(problem,interpretation);
15615 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15616 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
15617 find mayInstanceOfEClass_class(problem,interpretation,newObject);
15618 find mayExist(problem, interpretation, newObject);
15619 neg find mustExist(problem, interpretation, newObject);
15620}
15621pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
15622 problem:LogicProblem, interpretation:PartialInterpretation,
15623 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15624 container:DefinedElement)
15625{
15626 find interpretation(problem,interpretation);
15627 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15628 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
15629 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15630 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
15631 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15632 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
15633 find mustInstanceOfEOperation_class(problem,interpretation,container);
15634 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
15635 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
15636 find mustExist(problem, interpretation, container);
15637 neg find mustExist(problem, interpretation, newObject);
15638}
15639pattern createObject_EParameter_class(
15640 problem:LogicProblem, interpretation:PartialInterpretation,
15641 typeInterpretation:PartialComplexTypeInterpretation)
15642{
15643 find interpretation(problem,interpretation);
15644 neg find hasElementInContainment(problem,interpretation);
15645 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15646 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
15647 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
15648 find mayExist(problem, interpretation, newObject);
15649 neg find mustExist(problem, interpretation, newObject);
15650}
15651
15652//////////
15653// 4.2 Type refinement
15654//////////
15655pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15656 find interpretation(problem,interpretation);
15657 PartialInterpretation.newElements(interpretation,element);
15658 find mayInstanceOfEGenericType_class(problem,interpretation,element);
15659 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15660 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15661 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
15662 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15663}
15664pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15665 find interpretation(problem,interpretation);
15666 PartialInterpretation.newElements(interpretation,element);
15667 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
15668 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15669 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15670 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
15671 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
15672 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
15673 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15674 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15675 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15676 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15677}
15678pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15679 find interpretation(problem,interpretation);
15680 PartialInterpretation.newElements(interpretation,element);
15681 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
15682 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15683 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15684 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
15685 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15686 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15687}
15688pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15689 find interpretation(problem,interpretation);
15690 PartialInterpretation.newElements(interpretation,element);
15691 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
15692 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15693 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15694 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
15695 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
15696 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
15697 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15698 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15699 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15700 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15701}
15702pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15703 find interpretation(problem,interpretation);
15704 PartialInterpretation.newElements(interpretation,element);
15705 find mayInstanceOfEEnum_class(problem,interpretation,element);
15706 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15707 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15708 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
15709 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
15710 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15711 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15712 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
15713 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15714 neg find mustInstanceOfEClass_class(problem,interpretation,element);
15715 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15716}
15717pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15718 find interpretation(problem,interpretation);
15719 PartialInterpretation.newElements(interpretation,element);
15720 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
15721 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15722 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15723 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
15724 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
15725 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15726 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
15727 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15728 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15729 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15730}
15731pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15732 find interpretation(problem,interpretation);
15733 PartialInterpretation.newElements(interpretation,element);
15734 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15735 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15736 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15737 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
15738 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15739}
15740pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15741 find interpretation(problem,interpretation);
15742 PartialInterpretation.newElements(interpretation,element);
15743 find mayInstanceOfEAttribute_class(problem,interpretation,element);
15744 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15745 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15746 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
15747 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15748 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
15749 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
15750 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
15751 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15752 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15753 neg find mustInstanceOfEReference_class(problem,interpretation,element);
15754 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15755 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
15756}
15757pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15758 find interpretation(problem,interpretation);
15759 PartialInterpretation.newElements(interpretation,element);
15760 find mayInstanceOfEObject_class(problem,interpretation,element);
15761 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15762 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15763 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
15764 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15765}
15766pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15767 find interpretation(problem,interpretation);
15768 PartialInterpretation.newElements(interpretation,element);
15769 find mayInstanceOfEOperation_class(problem,interpretation,element);
15770 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15771 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15772 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
15773 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
15774 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15775 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
15776 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
15777 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15778 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15779 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15780 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
15781}
15782pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15783 find interpretation(problem,interpretation);
15784 PartialInterpretation.newElements(interpretation,element);
15785 find mayInstanceOfEDataType_class(problem,interpretation,element);
15786 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15787 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15788 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
15789 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
15790 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15791 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15792 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
15793 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
15794 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15795 neg find mustInstanceOfEClass_class(problem,interpretation,element);
15796 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15797}
15798pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15799 find interpretation(problem,interpretation);
15800 PartialInterpretation.newElements(interpretation,element);
15801 find mayInstanceOfEReference_class(problem,interpretation,element);
15802 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15803 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15804 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
15805 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
15806 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
15807 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15808 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15809 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
15810 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15811 neg find mustInstanceOfEReference_class(problem,interpretation,element);
15812 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15813 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
15814}
15815pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15816 find interpretation(problem,interpretation);
15817 PartialInterpretation.newElements(interpretation,element);
15818 find mayInstanceOfEClass_class(problem,interpretation,element);
15819 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15820 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15821 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
15822 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
15823 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15824 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15825 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15826 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
15827 neg find mustInstanceOfEClass_class(problem,interpretation,element);
15828 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15829}
15830pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15831 find interpretation(problem,interpretation);
15832 PartialInterpretation.newElements(interpretation,element);
15833 find mayInstanceOfEParameter_class(problem,interpretation,element);
15834 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
15835 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
15836 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
15837 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
15838 neg find mustInstanceOfEObject_class(problem,interpretation,element);
15839 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
15840 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
15841 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
15842 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
15843 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
15844 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
15845}
15846
15847//////////
15848// 4.3 Relation refinement
15849//////////
15850pattern refineRelation_eAttributeType_reference_EAttribute(
15851 problem:LogicProblem, interpretation:PartialInterpretation,
15852 relationIterpretation:PartialRelationInterpretation,
15853 from: DefinedElement, to: DefinedElement)
15854{
15855 find interpretation(problem,interpretation);
15856 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15857 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
15858 find mustExist(problem, interpretation, from);
15859 find mustExist(problem, interpretation, to);
15860 find mustInstanceOfEAttribute_class(problem,interpretation,from);
15861 find mustInstanceOfEDataType_class(problem,interpretation,to);
15862 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
15863 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
15864}
15865pattern refineRelation_references_reference_EAnnotation(
15866 problem:LogicProblem, interpretation:PartialInterpretation,
15867 relationIterpretation:PartialRelationInterpretation,
15868 from: DefinedElement, to: DefinedElement)
15869{
15870 find interpretation(problem,interpretation);
15871 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15872 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
15873 find mustExist(problem, interpretation, from);
15874 find mustExist(problem, interpretation, to);
15875 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
15876 find mustInstanceOfEObject_class(problem,interpretation,to);
15877 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
15878 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
15879}
15880pattern refineRelation_eSuperTypes_reference_EClass(
15881 problem:LogicProblem, interpretation:PartialInterpretation,
15882 relationIterpretation:PartialRelationInterpretation,
15883 from: DefinedElement, to: DefinedElement)
15884{
15885 find interpretation(problem,interpretation);
15886 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15887 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
15888 find mustExist(problem, interpretation, from);
15889 find mustExist(problem, interpretation, to);
15890 find mustInstanceOfEClass_class(problem,interpretation,from);
15891 find mustInstanceOfEClass_class(problem,interpretation,to);
15892 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
15893 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
15894}
15895pattern refineRelation_eAllAttributes_reference_EClass(
15896 problem:LogicProblem, interpretation:PartialInterpretation,
15897 relationIterpretation:PartialRelationInterpretation,
15898 from: DefinedElement, to: DefinedElement)
15899{
15900 find interpretation(problem,interpretation);
15901 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15902 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
15903 find mustExist(problem, interpretation, from);
15904 find mustExist(problem, interpretation, to);
15905 find mustInstanceOfEClass_class(problem,interpretation,from);
15906 find mustInstanceOfEAttribute_class(problem,interpretation,to);
15907 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
15908 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
15909}
15910pattern refineRelation_eAllReferences_reference_EClass(
15911 problem:LogicProblem, interpretation:PartialInterpretation,
15912 relationIterpretation:PartialRelationInterpretation,
15913 from: DefinedElement, to: DefinedElement)
15914{
15915 find interpretation(problem,interpretation);
15916 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15917 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
15918 find mustExist(problem, interpretation, from);
15919 find mustExist(problem, interpretation, to);
15920 find mustInstanceOfEClass_class(problem,interpretation,from);
15921 find mustInstanceOfEReference_class(problem,interpretation,to);
15922 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
15923 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
15924}
15925pattern refineRelation_eReferences_reference_EClass(
15926 problem:LogicProblem, interpretation:PartialInterpretation,
15927 relationIterpretation:PartialRelationInterpretation,
15928 from: DefinedElement, to: DefinedElement)
15929{
15930 find interpretation(problem,interpretation);
15931 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15932 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
15933 find mustExist(problem, interpretation, from);
15934 find mustExist(problem, interpretation, to);
15935 find mustInstanceOfEClass_class(problem,interpretation,from);
15936 find mustInstanceOfEReference_class(problem,interpretation,to);
15937 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
15938 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
15939}
15940pattern refineRelation_eAttributes_reference_EClass(
15941 problem:LogicProblem, interpretation:PartialInterpretation,
15942 relationIterpretation:PartialRelationInterpretation,
15943 from: DefinedElement, to: DefinedElement)
15944{
15945 find interpretation(problem,interpretation);
15946 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15947 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
15948 find mustExist(problem, interpretation, from);
15949 find mustExist(problem, interpretation, to);
15950 find mustInstanceOfEClass_class(problem,interpretation,from);
15951 find mustInstanceOfEAttribute_class(problem,interpretation,to);
15952 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
15953 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
15954}
15955pattern refineRelation_eAllContainments_reference_EClass(
15956 problem:LogicProblem, interpretation:PartialInterpretation,
15957 relationIterpretation:PartialRelationInterpretation,
15958 from: DefinedElement, to: DefinedElement)
15959{
15960 find interpretation(problem,interpretation);
15961 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15962 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
15963 find mustExist(problem, interpretation, from);
15964 find mustExist(problem, interpretation, to);
15965 find mustInstanceOfEClass_class(problem,interpretation,from);
15966 find mustInstanceOfEReference_class(problem,interpretation,to);
15967 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
15968 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
15969}
15970pattern refineRelation_eAllOperations_reference_EClass(
15971 problem:LogicProblem, interpretation:PartialInterpretation,
15972 relationIterpretation:PartialRelationInterpretation,
15973 from: DefinedElement, to: DefinedElement)
15974{
15975 find interpretation(problem,interpretation);
15976 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15977 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
15978 find mustExist(problem, interpretation, from);
15979 find mustExist(problem, interpretation, to);
15980 find mustInstanceOfEClass_class(problem,interpretation,from);
15981 find mustInstanceOfEOperation_class(problem,interpretation,to);
15982 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
15983 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
15984}
15985pattern refineRelation_eAllStructuralFeatures_reference_EClass(
15986 problem:LogicProblem, interpretation:PartialInterpretation,
15987 relationIterpretation:PartialRelationInterpretation,
15988 from: DefinedElement, to: DefinedElement)
15989{
15990 find interpretation(problem,interpretation);
15991 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15992 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
15993 find mustExist(problem, interpretation, from);
15994 find mustExist(problem, interpretation, to);
15995 find mustInstanceOfEClass_class(problem,interpretation,from);
15996 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
15997 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
15998 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
15999}
16000pattern refineRelation_eAllSuperTypes_reference_EClass(
16001 problem:LogicProblem, interpretation:PartialInterpretation,
16002 relationIterpretation:PartialRelationInterpretation,
16003 from: DefinedElement, to: DefinedElement)
16004{
16005 find interpretation(problem,interpretation);
16006 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16007 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
16008 find mustExist(problem, interpretation, from);
16009 find mustExist(problem, interpretation, to);
16010 find mustInstanceOfEClass_class(problem,interpretation,from);
16011 find mustInstanceOfEClass_class(problem,interpretation,to);
16012 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
16013 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
16014}
16015pattern refineRelation_eIDAttribute_reference_EClass(
16016 problem:LogicProblem, interpretation:PartialInterpretation,
16017 relationIterpretation:PartialRelationInterpretation,
16018 from: DefinedElement, to: DefinedElement)
16019{
16020 find interpretation(problem,interpretation);
16021 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16022 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
16023 find mustExist(problem, interpretation, from);
16024 find mustExist(problem, interpretation, to);
16025 find mustInstanceOfEClass_class(problem,interpretation,from);
16026 find mustInstanceOfEAttribute_class(problem,interpretation,to);
16027 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
16028 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
16029}
16030pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
16031 problem:LogicProblem, interpretation:PartialInterpretation,
16032 relationIterpretation:PartialRelationInterpretation,
16033 from: DefinedElement, to: DefinedElement)
16034{
16035 find interpretation(problem,interpretation);
16036 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16037 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
16038 find mustExist(problem, interpretation, from);
16039 find mustExist(problem, interpretation, to);
16040 find mustInstanceOfEClass_class(problem,interpretation,from);
16041 find mustInstanceOfEGenericType_class(problem,interpretation,to);
16042 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
16043 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
16044}
16045pattern refineRelation_eExceptions_reference_EOperation(
16046 problem:LogicProblem, interpretation:PartialInterpretation,
16047 relationIterpretation:PartialRelationInterpretation,
16048 from: DefinedElement, to: DefinedElement)
16049{
16050 find interpretation(problem,interpretation);
16051 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16052 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
16053 find mustExist(problem, interpretation, from);
16054 find mustExist(problem, interpretation, to);
16055 find mustInstanceOfEOperation_class(problem,interpretation,from);
16056 find mustInstanceOfEClassifier_class(problem,interpretation,to);
16057 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
16058 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
16059}
16060pattern refineRelation_eOpposite_reference_EReference(
16061 problem:LogicProblem, interpretation:PartialInterpretation,
16062 relationIterpretation:PartialRelationInterpretation,
16063 from: DefinedElement, to: DefinedElement)
16064{
16065 find interpretation(problem,interpretation);
16066 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16067 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
16068 find mustExist(problem, interpretation, from);
16069 find mustExist(problem, interpretation, to);
16070 find mustInstanceOfEReference_class(problem,interpretation,from);
16071 find mustInstanceOfEReference_class(problem,interpretation,to);
16072 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
16073 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
16074}
16075pattern refineRelation_eReferenceType_reference_EReference(
16076 problem:LogicProblem, interpretation:PartialInterpretation,
16077 relationIterpretation:PartialRelationInterpretation,
16078 from: DefinedElement, to: DefinedElement)
16079{
16080 find interpretation(problem,interpretation);
16081 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16082 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
16083 find mustExist(problem, interpretation, from);
16084 find mustExist(problem, interpretation, to);
16085 find mustInstanceOfEReference_class(problem,interpretation,from);
16086 find mustInstanceOfEClass_class(problem,interpretation,to);
16087 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
16088 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
16089}
16090pattern refineRelation_eKeys_reference_EReference(
16091 problem:LogicProblem, interpretation:PartialInterpretation,
16092 relationIterpretation:PartialRelationInterpretation,
16093 from: DefinedElement, to: DefinedElement)
16094{
16095 find interpretation(problem,interpretation);
16096 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16097 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
16098 find mustExist(problem, interpretation, from);
16099 find mustExist(problem, interpretation, to);
16100 find mustInstanceOfEReference_class(problem,interpretation,from);
16101 find mustInstanceOfEAttribute_class(problem,interpretation,to);
16102 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
16103 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
16104}
16105pattern refineRelation_eType_reference_ETypedElement(
16106 problem:LogicProblem, interpretation:PartialInterpretation,
16107 relationIterpretation:PartialRelationInterpretation,
16108 from: DefinedElement, to: DefinedElement)
16109{
16110 find interpretation(problem,interpretation);
16111 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16112 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
16113 find mustExist(problem, interpretation, from);
16114 find mustExist(problem, interpretation, to);
16115 find mustInstanceOfETypedElement_class(problem,interpretation,from);
16116 find mustInstanceOfEClassifier_class(problem,interpretation,to);
16117 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
16118 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
16119}
16120pattern refineRelation_eRawType_reference_EGenericType(
16121 problem:LogicProblem, interpretation:PartialInterpretation,
16122 relationIterpretation:PartialRelationInterpretation,
16123 from: DefinedElement, to: DefinedElement)
16124{
16125 find interpretation(problem,interpretation);
16126 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16127 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
16128 find mustExist(problem, interpretation, from);
16129 find mustExist(problem, interpretation, to);
16130 find mustInstanceOfEGenericType_class(problem,interpretation,from);
16131 find mustInstanceOfEClassifier_class(problem,interpretation,to);
16132 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
16133 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
16134}
16135pattern refineRelation_eTypeParameter_reference_EGenericType(
16136 problem:LogicProblem, interpretation:PartialInterpretation,
16137 relationIterpretation:PartialRelationInterpretation,
16138 from: DefinedElement, to: DefinedElement)
16139{
16140 find interpretation(problem,interpretation);
16141 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16142 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
16143 find mustExist(problem, interpretation, from);
16144 find mustExist(problem, interpretation, to);
16145 find mustInstanceOfEGenericType_class(problem,interpretation,from);
16146 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
16147 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
16148 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
16149}
16150pattern refineRelation_eClassifier_reference_EGenericType(
16151 problem:LogicProblem, interpretation:PartialInterpretation,
16152 relationIterpretation:PartialRelationInterpretation,
16153 from: DefinedElement, to: DefinedElement)
16154{
16155 find interpretation(problem,interpretation);
16156 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16157 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
16158 find mustExist(problem, interpretation, from);
16159 find mustExist(problem, interpretation, to);
16160 find mustInstanceOfEGenericType_class(problem,interpretation,from);
16161 find mustInstanceOfEClassifier_class(problem,interpretation,to);
16162 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
16163 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
16164}
16165pattern refineRelation_iD_attribute_EAttribute(
16166 problem:LogicProblem, interpretation:PartialInterpretation,
16167 relationIterpretation:PartialRelationInterpretation,
16168 from: DefinedElement, to: DefinedElement)
16169{
16170 find interpretation(problem,interpretation);
16171 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16172 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
16173 find mustExist(problem, interpretation, from);
16174 find mustExist(problem, interpretation, to);
16175 find mustInstanceOfEAttribute_class(problem,interpretation,from);
16176 BooleanElement(to);
16177 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
16178 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
16179}
16180pattern refineRelation_source_attribute_EAnnotation(
16181 problem:LogicProblem, interpretation:PartialInterpretation,
16182 relationIterpretation:PartialRelationInterpretation,
16183 from: DefinedElement, to: DefinedElement)
16184{
16185 find interpretation(problem,interpretation);
16186 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16187 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
16188 find mustExist(problem, interpretation, from);
16189 find mustExist(problem, interpretation, to);
16190 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
16191 StringElement(to);
16192 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
16193 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
16194}
16195pattern refineRelation_abstract_attribute_EClass(
16196 problem:LogicProblem, interpretation:PartialInterpretation,
16197 relationIterpretation:PartialRelationInterpretation,
16198 from: DefinedElement, to: DefinedElement)
16199{
16200 find interpretation(problem,interpretation);
16201 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16202 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
16203 find mustExist(problem, interpretation, from);
16204 find mustExist(problem, interpretation, to);
16205 find mustInstanceOfEClass_class(problem,interpretation,from);
16206 BooleanElement(to);
16207 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
16208 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
16209}
16210pattern refineRelation_interface_attribute_EClass(
16211 problem:LogicProblem, interpretation:PartialInterpretation,
16212 relationIterpretation:PartialRelationInterpretation,
16213 from: DefinedElement, to: DefinedElement)
16214{
16215 find interpretation(problem,interpretation);
16216 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16217 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
16218 find mustExist(problem, interpretation, from);
16219 find mustExist(problem, interpretation, to);
16220 find mustInstanceOfEClass_class(problem,interpretation,from);
16221 BooleanElement(to);
16222 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
16223 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
16224}
16225pattern refineRelation_instanceClassName_attribute_EClassifier(
16226 problem:LogicProblem, interpretation:PartialInterpretation,
16227 relationIterpretation:PartialRelationInterpretation,
16228 from: DefinedElement, to: DefinedElement)
16229{
16230 find interpretation(problem,interpretation);
16231 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16232 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
16233 find mustExist(problem, interpretation, from);
16234 find mustExist(problem, interpretation, to);
16235 find mustInstanceOfEClassifier_class(problem,interpretation,from);
16236 StringElement(to);
16237 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
16238 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
16239}
16240pattern refineRelation_instanceTypeName_attribute_EClassifier(
16241 problem:LogicProblem, interpretation:PartialInterpretation,
16242 relationIterpretation:PartialRelationInterpretation,
16243 from: DefinedElement, to: DefinedElement)
16244{
16245 find interpretation(problem,interpretation);
16246 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16247 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
16248 find mustExist(problem, interpretation, from);
16249 find mustExist(problem, interpretation, to);
16250 find mustInstanceOfEClassifier_class(problem,interpretation,from);
16251 StringElement(to);
16252 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
16253 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
16254}
16255pattern refineRelation_serializable_attribute_EDataType(
16256 problem:LogicProblem, interpretation:PartialInterpretation,
16257 relationIterpretation:PartialRelationInterpretation,
16258 from: DefinedElement, to: DefinedElement)
16259{
16260 find interpretation(problem,interpretation);
16261 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16262 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
16263 find mustExist(problem, interpretation, from);
16264 find mustExist(problem, interpretation, to);
16265 find mustInstanceOfEDataType_class(problem,interpretation,from);
16266 BooleanElement(to);
16267 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
16268 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
16269}
16270pattern refineRelation_value_attribute_EEnumLiteral(
16271 problem:LogicProblem, interpretation:PartialInterpretation,
16272 relationIterpretation:PartialRelationInterpretation,
16273 from: DefinedElement, to: DefinedElement)
16274{
16275 find interpretation(problem,interpretation);
16276 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16277 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
16278 find mustExist(problem, interpretation, from);
16279 find mustExist(problem, interpretation, to);
16280 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
16281 IntegerElement(to);
16282 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
16283 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
16284}
16285pattern refineRelation_literal_attribute_EEnumLiteral(
16286 problem:LogicProblem, interpretation:PartialInterpretation,
16287 relationIterpretation:PartialRelationInterpretation,
16288 from: DefinedElement, to: DefinedElement)
16289{
16290 find interpretation(problem,interpretation);
16291 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16292 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
16293 find mustExist(problem, interpretation, from);
16294 find mustExist(problem, interpretation, to);
16295 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
16296 StringElement(to);
16297 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
16298 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
16299}
16300pattern refineRelation_name_attribute_ENamedElement(
16301 problem:LogicProblem, interpretation:PartialInterpretation,
16302 relationIterpretation:PartialRelationInterpretation,
16303 from: DefinedElement, to: DefinedElement)
16304{
16305 find interpretation(problem,interpretation);
16306 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16307 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
16308 find mustExist(problem, interpretation, from);
16309 find mustExist(problem, interpretation, to);
16310 find mustInstanceOfENamedElement_class(problem,interpretation,from);
16311 StringElement(to);
16312 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
16313 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
16314}
16315pattern refineRelation_nsURI_attribute_EPackage(
16316 problem:LogicProblem, interpretation:PartialInterpretation,
16317 relationIterpretation:PartialRelationInterpretation,
16318 from: DefinedElement, to: DefinedElement)
16319{
16320 find interpretation(problem,interpretation);
16321 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16322 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
16323 find mustExist(problem, interpretation, from);
16324 find mustExist(problem, interpretation, to);
16325 find mustInstanceOfEPackage_class(problem,interpretation,from);
16326 StringElement(to);
16327 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
16328 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
16329}
16330pattern refineRelation_nsPrefix_attribute_EPackage(
16331 problem:LogicProblem, interpretation:PartialInterpretation,
16332 relationIterpretation:PartialRelationInterpretation,
16333 from: DefinedElement, to: DefinedElement)
16334{
16335 find interpretation(problem,interpretation);
16336 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16337 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
16338 find mustExist(problem, interpretation, from);
16339 find mustExist(problem, interpretation, to);
16340 find mustInstanceOfEPackage_class(problem,interpretation,from);
16341 StringElement(to);
16342 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
16343 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
16344}
16345pattern refineRelation_containment_attribute_EReference(
16346 problem:LogicProblem, interpretation:PartialInterpretation,
16347 relationIterpretation:PartialRelationInterpretation,
16348 from: DefinedElement, to: DefinedElement)
16349{
16350 find interpretation(problem,interpretation);
16351 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16352 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
16353 find mustExist(problem, interpretation, from);
16354 find mustExist(problem, interpretation, to);
16355 find mustInstanceOfEReference_class(problem,interpretation,from);
16356 BooleanElement(to);
16357 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
16358 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
16359}
16360pattern refineRelation_container_attribute_EReference(
16361 problem:LogicProblem, interpretation:PartialInterpretation,
16362 relationIterpretation:PartialRelationInterpretation,
16363 from: DefinedElement, to: DefinedElement)
16364{
16365 find interpretation(problem,interpretation);
16366 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16367 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
16368 find mustExist(problem, interpretation, from);
16369 find mustExist(problem, interpretation, to);
16370 find mustInstanceOfEReference_class(problem,interpretation,from);
16371 BooleanElement(to);
16372 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
16373 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
16374}
16375pattern refineRelation_resolveProxies_attribute_EReference(
16376 problem:LogicProblem, interpretation:PartialInterpretation,
16377 relationIterpretation:PartialRelationInterpretation,
16378 from: DefinedElement, to: DefinedElement)
16379{
16380 find interpretation(problem,interpretation);
16381 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16382 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
16383 find mustExist(problem, interpretation, from);
16384 find mustExist(problem, interpretation, to);
16385 find mustInstanceOfEReference_class(problem,interpretation,from);
16386 BooleanElement(to);
16387 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
16388 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
16389}
16390pattern refineRelation_changeable_attribute_EStructuralFeature(
16391 problem:LogicProblem, interpretation:PartialInterpretation,
16392 relationIterpretation:PartialRelationInterpretation,
16393 from: DefinedElement, to: DefinedElement)
16394{
16395 find interpretation(problem,interpretation);
16396 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16397 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
16398 find mustExist(problem, interpretation, from);
16399 find mustExist(problem, interpretation, to);
16400 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
16401 BooleanElement(to);
16402 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
16403 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
16404}
16405pattern refineRelation_volatile_attribute_EStructuralFeature(
16406 problem:LogicProblem, interpretation:PartialInterpretation,
16407 relationIterpretation:PartialRelationInterpretation,
16408 from: DefinedElement, to: DefinedElement)
16409{
16410 find interpretation(problem,interpretation);
16411 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16412 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
16413 find mustExist(problem, interpretation, from);
16414 find mustExist(problem, interpretation, to);
16415 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
16416 BooleanElement(to);
16417 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
16418 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
16419}
16420pattern refineRelation_transient_attribute_EStructuralFeature(
16421 problem:LogicProblem, interpretation:PartialInterpretation,
16422 relationIterpretation:PartialRelationInterpretation,
16423 from: DefinedElement, to: DefinedElement)
16424{
16425 find interpretation(problem,interpretation);
16426 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16427 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
16428 find mustExist(problem, interpretation, from);
16429 find mustExist(problem, interpretation, to);
16430 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
16431 BooleanElement(to);
16432 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
16433 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
16434}
16435pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
16436 problem:LogicProblem, interpretation:PartialInterpretation,
16437 relationIterpretation:PartialRelationInterpretation,
16438 from: DefinedElement, to: DefinedElement)
16439{
16440 find interpretation(problem,interpretation);
16441 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16442 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
16443 find mustExist(problem, interpretation, from);
16444 find mustExist(problem, interpretation, to);
16445 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
16446 StringElement(to);
16447 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
16448 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
16449}
16450pattern refineRelation_unsettable_attribute_EStructuralFeature(
16451 problem:LogicProblem, interpretation:PartialInterpretation,
16452 relationIterpretation:PartialRelationInterpretation,
16453 from: DefinedElement, to: DefinedElement)
16454{
16455 find interpretation(problem,interpretation);
16456 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16457 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
16458 find mustExist(problem, interpretation, from);
16459 find mustExist(problem, interpretation, to);
16460 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
16461 BooleanElement(to);
16462 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
16463 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
16464}
16465pattern refineRelation_derived_attribute_EStructuralFeature(
16466 problem:LogicProblem, interpretation:PartialInterpretation,
16467 relationIterpretation:PartialRelationInterpretation,
16468 from: DefinedElement, to: DefinedElement)
16469{
16470 find interpretation(problem,interpretation);
16471 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16472 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
16473 find mustExist(problem, interpretation, from);
16474 find mustExist(problem, interpretation, to);
16475 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
16476 BooleanElement(to);
16477 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
16478 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
16479}
16480pattern refineRelation_ordered_attribute_ETypedElement(
16481 problem:LogicProblem, interpretation:PartialInterpretation,
16482 relationIterpretation:PartialRelationInterpretation,
16483 from: DefinedElement, to: DefinedElement)
16484{
16485 find interpretation(problem,interpretation);
16486 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16487 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
16488 find mustExist(problem, interpretation, from);
16489 find mustExist(problem, interpretation, to);
16490 find mustInstanceOfETypedElement_class(problem,interpretation,from);
16491 BooleanElement(to);
16492 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
16493 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
16494}
16495pattern refineRelation_unique_attribute_ETypedElement(
16496 problem:LogicProblem, interpretation:PartialInterpretation,
16497 relationIterpretation:PartialRelationInterpretation,
16498 from: DefinedElement, to: DefinedElement)
16499{
16500 find interpretation(problem,interpretation);
16501 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16502 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
16503 find mustExist(problem, interpretation, from);
16504 find mustExist(problem, interpretation, to);
16505 find mustInstanceOfETypedElement_class(problem,interpretation,from);
16506 BooleanElement(to);
16507 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
16508 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
16509}
16510pattern refineRelation_lowerBound_attribute_ETypedElement(
16511 problem:LogicProblem, interpretation:PartialInterpretation,
16512 relationIterpretation:PartialRelationInterpretation,
16513 from: DefinedElement, to: DefinedElement)
16514{
16515 find interpretation(problem,interpretation);
16516 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16517 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
16518 find mustExist(problem, interpretation, from);
16519 find mustExist(problem, interpretation, to);
16520 find mustInstanceOfETypedElement_class(problem,interpretation,from);
16521 IntegerElement(to);
16522 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
16523 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
16524}
16525pattern refineRelation_upperBound_attribute_ETypedElement(
16526 problem:LogicProblem, interpretation:PartialInterpretation,
16527 relationIterpretation:PartialRelationInterpretation,
16528 from: DefinedElement, to: DefinedElement)
16529{
16530 find interpretation(problem,interpretation);
16531 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16532 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
16533 find mustExist(problem, interpretation, from);
16534 find mustExist(problem, interpretation, to);
16535 find mustInstanceOfETypedElement_class(problem,interpretation,from);
16536 IntegerElement(to);
16537 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
16538 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
16539}
16540pattern refineRelation_many_attribute_ETypedElement(
16541 problem:LogicProblem, interpretation:PartialInterpretation,
16542 relationIterpretation:PartialRelationInterpretation,
16543 from: DefinedElement, to: DefinedElement)
16544{
16545 find interpretation(problem,interpretation);
16546 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16547 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
16548 find mustExist(problem, interpretation, from);
16549 find mustExist(problem, interpretation, to);
16550 find mustInstanceOfETypedElement_class(problem,interpretation,from);
16551 BooleanElement(to);
16552 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
16553 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
16554}
16555pattern refineRelation_required_attribute_ETypedElement(
16556 problem:LogicProblem, interpretation:PartialInterpretation,
16557 relationIterpretation:PartialRelationInterpretation,
16558 from: DefinedElement, to: DefinedElement)
16559{
16560 find interpretation(problem,interpretation);
16561 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16562 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
16563 find mustExist(problem, interpretation, from);
16564 find mustExist(problem, interpretation, to);
16565 find mustInstanceOfETypedElement_class(problem,interpretation,from);
16566 BooleanElement(to);
16567 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
16568 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
16569}
16570pattern refineRelation_key_attribute_EStringToStringMapEntry(
16571 problem:LogicProblem, interpretation:PartialInterpretation,
16572 relationIterpretation:PartialRelationInterpretation,
16573 from: DefinedElement, to: DefinedElement)
16574{
16575 find interpretation(problem,interpretation);
16576 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16577 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
16578 find mustExist(problem, interpretation, from);
16579 find mustExist(problem, interpretation, to);
16580 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
16581 StringElement(to);
16582 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
16583 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
16584}
16585pattern refineRelation_value_attribute_EStringToStringMapEntry(
16586 problem:LogicProblem, interpretation:PartialInterpretation,
16587 relationIterpretation:PartialRelationInterpretation,
16588 from: DefinedElement, to: DefinedElement)
16589{
16590 find interpretation(problem,interpretation);
16591 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16592 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
16593 find mustExist(problem, interpretation, from);
16594 find mustExist(problem, interpretation, to);
16595 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
16596 StringElement(to);
16597 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
16598 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
16599}
16600import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
16601import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
16602import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
16603
16604//////////
16605// 0. Util
16606//////////
16607private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
16608 PartialInterpretation.problem(interpretation,problem);
16609}
16610
16611/////////////////////////
16612// 0.1 Existence
16613/////////////////////////
16614private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16615 find interpretation(problem,interpretation);
16616 LogicProblem.elements(problem,element);
16617} or {
16618 find interpretation(problem,interpretation);
16619 PartialInterpretation.newElements(interpretation,element);
16620}
16621
16622private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16623 find mustExist(problem,interpretation,element);
16624} or {
16625 find interpretation(problem,interpretation);
16626 neg find elementCloseWorld(element);
16627 PartialInterpretation.openWorldElements(interpretation,element);
16628}
16629
16630private pattern elementCloseWorld(element:DefinedElement) {
16631 PartialInterpretation.openWorldElements(i,element);
16632 PartialInterpretation.maxNewElements(i,0);
16633} or {
16634 Scope.targetTypeInterpretation(scope,interpretation);
16635 PartialTypeInterpratation.elements(interpretation,element);
16636 Scope.maxNewElements(scope,0);
16637}
16638
16639////////////////////////
16640// 0.2 Equivalence
16641////////////////////////
16642pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
16643 find mayExist(problem,interpretation,a);
16644 find mayExist(problem,interpretation,b);
16645 a == b;
16646}
16647
16648////////////////////////
16649// 0.3 Required Patterns by TypeIndexer
16650////////////////////////
16651private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
16652 find interpretation(problem,interpretation);
16653 LogicProblem.types(problem,type);
16654 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
16655 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16656}
16657
16658private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
16659 find interpretation(problem,interpretation);
16660 LogicProblem.types(problem,type);
16661 TypeDefinition.elements(type,element);
16662} or {
16663 find interpretation(problem,interpretation);
16664 find typeInterpretation(problem,interpretation,type,typeInterpretation);
16665 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
16666}
16667
16668private pattern isPrimitive(element: PrimitiveElement) {
16669 PrimitiveElement(element);
16670}
16671
16672//////////
16673// 1. Problem-Specific Base Indexers
16674//////////
16675// 1.1 Type Indexers
16676//////////
16677// 1.1.1 primitive Type Indexers
16678//////////
16679
16680//////////
16681// 1.1.2 domain-specific Type Indexers
16682//////////
16683/**
16684 * An element must be an instance of type "EAttribute class".
16685 */
16686private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16687 Type.name(type,"EAttribute class");
16688 find directInstanceOf(problem,interpretation,element,type);
16689}
16690private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16691 find interpretation(problem,interpretation);
16692 PartialInterpretation.scopes(interpretation,scope);
16693 Scope.targetTypeInterpretation(scope,typeInterpretation);
16694 Scope.maxNewElements(scope,0);
16695 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16696 Type.name(type,"EAttribute class");
16697}
16698
16699/**
16700 * An element may be an instance of type "EAttribute class".
16701 */
16702private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16703{
16704 find interpretation(problem,interpretation);
16705 PartialInterpretation.newElements(interpretation,element);
16706 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
16707 neg find mustInstanceOfEReference_class(problem,interpretation,element);
16708 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16709 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16710 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16711 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
16712 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16713 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
16714 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16715 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16716 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16717 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
16718 neg find isPrimitive(element);
16719} or {
16720 find interpretation(problem,interpretation);
16721 PartialInterpretation.openWorldElements(interpretation,element);
16722 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
16723 neg find mustInstanceOfEReference_class(problem,interpretation,element);
16724 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16725 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16726 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16727 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
16728 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16729 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
16730 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16731 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16732 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16733 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
16734 neg find isPrimitive(element);
16735} or
16736{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
16737/**
16738 * An element must be an instance of type "EAnnotation class".
16739 */
16740private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16741 Type.name(type,"EAnnotation class");
16742 find directInstanceOf(problem,interpretation,element,type);
16743}
16744private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16745 find interpretation(problem,interpretation);
16746 PartialInterpretation.scopes(interpretation,scope);
16747 Scope.targetTypeInterpretation(scope,typeInterpretation);
16748 Scope.maxNewElements(scope,0);
16749 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16750 Type.name(type,"EAnnotation class");
16751}
16752
16753/**
16754 * An element may be an instance of type "EAnnotation class".
16755 */
16756private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16757{
16758 find interpretation(problem,interpretation);
16759 PartialInterpretation.newElements(interpretation,element);
16760 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16761 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
16762 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16763 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16764 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
16765 neg find isPrimitive(element);
16766} or {
16767 find interpretation(problem,interpretation);
16768 PartialInterpretation.openWorldElements(interpretation,element);
16769 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16770 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
16771 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16772 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16773 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
16774 neg find isPrimitive(element);
16775} or
16776{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
16777/**
16778 * An element must be an instance of type "EClass class".
16779 */
16780private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16781 Type.name(type,"EClass class");
16782 find directInstanceOf(problem,interpretation,element,type);
16783}
16784private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16785 find interpretation(problem,interpretation);
16786 PartialInterpretation.scopes(interpretation,scope);
16787 Scope.targetTypeInterpretation(scope,typeInterpretation);
16788 Scope.maxNewElements(scope,0);
16789 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16790 Type.name(type,"EClass class");
16791}
16792
16793/**
16794 * An element may be an instance of type "EClass class".
16795 */
16796private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16797{
16798 find interpretation(problem,interpretation);
16799 PartialInterpretation.newElements(interpretation,element);
16800 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
16801 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16802 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16803 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16804 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16805 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16806 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
16807 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16808 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16809 neg find scopeDisallowsNewEClass_class(problem, interpretation);
16810 neg find isPrimitive(element);
16811} or {
16812 find interpretation(problem,interpretation);
16813 PartialInterpretation.openWorldElements(interpretation,element);
16814 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
16815 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16816 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16817 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16818 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16819 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16820 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
16821 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16822 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16823 neg find scopeDisallowsNewEClass_class(problem, interpretation);
16824 neg find isPrimitive(element);
16825} or
16826{ find mustInstanceOfEClass_class(problem,interpretation,element); }
16827/**
16828 * An element must be an instance of type "EClassifier class".
16829 */
16830private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16831 Type.name(type,"EClassifier class");
16832 find directInstanceOf(problem,interpretation,element,type);
16833}
16834private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16835 find interpretation(problem,interpretation);
16836 PartialInterpretation.scopes(interpretation,scope);
16837 Scope.targetTypeInterpretation(scope,typeInterpretation);
16838 Scope.maxNewElements(scope,0);
16839 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16840 Type.name(type,"EClassifier class");
16841}
16842
16843/**
16844 * An element may be an instance of type "EClassifier class".
16845 */
16846private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16847{
16848 find interpretation(problem,interpretation);
16849 PartialInterpretation.newElements(interpretation,element);
16850 neg find mustInstanceOfEClass_class(problem,interpretation,element);
16851 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
16852 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16853 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16854 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16855 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16856 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16857 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
16858 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16859 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16860 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
16861 neg find isPrimitive(element);
16862} or {
16863 find interpretation(problem,interpretation);
16864 PartialInterpretation.openWorldElements(interpretation,element);
16865 neg find mustInstanceOfEClass_class(problem,interpretation,element);
16866 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
16867 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16868 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16869 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16870 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16871 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16872 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
16873 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16874 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16875 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
16876 neg find isPrimitive(element);
16877} or
16878{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
16879/**
16880 * An element must be an instance of type "EDataType class".
16881 */
16882private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16883 Type.name(type,"EDataType class");
16884 find directInstanceOf(problem,interpretation,element,type);
16885}
16886private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16887 find interpretation(problem,interpretation);
16888 PartialInterpretation.scopes(interpretation,scope);
16889 Scope.targetTypeInterpretation(scope,typeInterpretation);
16890 Scope.maxNewElements(scope,0);
16891 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16892 Type.name(type,"EDataType class");
16893}
16894
16895/**
16896 * An element may be an instance of type "EDataType class".
16897 */
16898private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16899{
16900 find interpretation(problem,interpretation);
16901 PartialInterpretation.newElements(interpretation,element);
16902 neg find mustInstanceOfEClass_class(problem,interpretation,element);
16903 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16904 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16905 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16906 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16907 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16908 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
16909 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
16910 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16911 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16912 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
16913 neg find isPrimitive(element);
16914} or {
16915 find interpretation(problem,interpretation);
16916 PartialInterpretation.openWorldElements(interpretation,element);
16917 neg find mustInstanceOfEClass_class(problem,interpretation,element);
16918 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16919 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16920 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16921 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16922 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16923 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
16924 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
16925 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16926 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16927 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
16928 neg find isPrimitive(element);
16929} or
16930{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
16931/**
16932 * An element must be an instance of type "EEnum class".
16933 */
16934private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16935 Type.name(type,"EEnum class");
16936 find directInstanceOf(problem,interpretation,element,type);
16937}
16938private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16939 find interpretation(problem,interpretation);
16940 PartialInterpretation.scopes(interpretation,scope);
16941 Scope.targetTypeInterpretation(scope,typeInterpretation);
16942 Scope.maxNewElements(scope,0);
16943 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16944 Type.name(type,"EEnum class");
16945}
16946
16947/**
16948 * An element may be an instance of type "EEnum class".
16949 */
16950private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16951{
16952 find interpretation(problem,interpretation);
16953 PartialInterpretation.newElements(interpretation,element);
16954 neg find mustInstanceOfEClass_class(problem,interpretation,element);
16955 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16956 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16957 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16958 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16959 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16960 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
16961 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16962 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16963 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
16964 neg find isPrimitive(element);
16965} or {
16966 find interpretation(problem,interpretation);
16967 PartialInterpretation.openWorldElements(interpretation,element);
16968 neg find mustInstanceOfEClass_class(problem,interpretation,element);
16969 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
16970 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
16971 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
16972 neg find mustInstanceOfEObject_class(problem,interpretation,element);
16973 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
16974 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
16975 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
16976 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
16977 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
16978 neg find isPrimitive(element);
16979} or
16980{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
16981/**
16982 * An element must be an instance of type "EEnumLiteral class".
16983 */
16984private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16985 Type.name(type,"EEnumLiteral class");
16986 find directInstanceOf(problem,interpretation,element,type);
16987}
16988private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16989 find interpretation(problem,interpretation);
16990 PartialInterpretation.scopes(interpretation,scope);
16991 Scope.targetTypeInterpretation(scope,typeInterpretation);
16992 Scope.maxNewElements(scope,0);
16993 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16994 Type.name(type,"EEnumLiteral class");
16995}
16996
16997/**
16998 * An element may be an instance of type "EEnumLiteral class".
16999 */
17000private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17001{
17002 find interpretation(problem,interpretation);
17003 PartialInterpretation.newElements(interpretation,element);
17004 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17005 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17006 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17007 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17008 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17009 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
17010 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17011 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17012 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
17013 neg find isPrimitive(element);
17014} or {
17015 find interpretation(problem,interpretation);
17016 PartialInterpretation.openWorldElements(interpretation,element);
17017 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17018 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17019 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17020 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17021 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17022 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
17023 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17024 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17025 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
17026 neg find isPrimitive(element);
17027} or
17028{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
17029/**
17030 * An element must be an instance of type "EModelElement class".
17031 */
17032private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17033 Type.name(type,"EModelElement class");
17034 find directInstanceOf(problem,interpretation,element,type);
17035}
17036private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17037 find interpretation(problem,interpretation);
17038 PartialInterpretation.scopes(interpretation,scope);
17039 Scope.targetTypeInterpretation(scope,typeInterpretation);
17040 Scope.maxNewElements(scope,0);
17041 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17042 Type.name(type,"EModelElement class");
17043}
17044
17045/**
17046 * An element may be an instance of type "EModelElement class".
17047 */
17048private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17049{
17050 find interpretation(problem,interpretation);
17051 PartialInterpretation.newElements(interpretation,element);
17052 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17053 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
17054 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17055 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
17056 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17057 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
17058 neg find isPrimitive(element);
17059} or {
17060 find interpretation(problem,interpretation);
17061 PartialInterpretation.openWorldElements(interpretation,element);
17062 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17063 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
17064 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17065 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
17066 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17067 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
17068 neg find isPrimitive(element);
17069} or
17070{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
17071/**
17072 * An element must be an instance of type "ENamedElement class".
17073 */
17074private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17075 Type.name(type,"ENamedElement class");
17076 find directInstanceOf(problem,interpretation,element,type);
17077}
17078private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17079 find interpretation(problem,interpretation);
17080 PartialInterpretation.scopes(interpretation,scope);
17081 Scope.targetTypeInterpretation(scope,typeInterpretation);
17082 Scope.maxNewElements(scope,0);
17083 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17084 Type.name(type,"ENamedElement class");
17085}
17086
17087/**
17088 * An element may be an instance of type "ENamedElement class".
17089 */
17090private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17091{
17092 find interpretation(problem,interpretation);
17093 PartialInterpretation.newElements(interpretation,element);
17094 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17095 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17096 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
17097 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17098 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17099 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
17100 neg find isPrimitive(element);
17101} or {
17102 find interpretation(problem,interpretation);
17103 PartialInterpretation.openWorldElements(interpretation,element);
17104 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17105 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17106 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
17107 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17108 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17109 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
17110 neg find isPrimitive(element);
17111} or
17112{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
17113/**
17114 * An element must be an instance of type "EObject class".
17115 */
17116private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17117 Type.name(type,"EObject class");
17118 find directInstanceOf(problem,interpretation,element,type);
17119}
17120private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17121 find interpretation(problem,interpretation);
17122 PartialInterpretation.scopes(interpretation,scope);
17123 Scope.targetTypeInterpretation(scope,typeInterpretation);
17124 Scope.maxNewElements(scope,0);
17125 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17126 Type.name(type,"EObject class");
17127}
17128
17129/**
17130 * An element may be an instance of type "EObject class".
17131 */
17132private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17133{
17134 find interpretation(problem,interpretation);
17135 PartialInterpretation.newElements(interpretation,element);
17136 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
17137 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17138 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17139 neg find scopeDisallowsNewEObject_class(problem, interpretation);
17140 neg find isPrimitive(element);
17141} or {
17142 find interpretation(problem,interpretation);
17143 PartialInterpretation.openWorldElements(interpretation,element);
17144 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
17145 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17146 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17147 neg find scopeDisallowsNewEObject_class(problem, interpretation);
17148 neg find isPrimitive(element);
17149} or
17150{ find mustInstanceOfEObject_class(problem,interpretation,element); }
17151/**
17152 * An element must be an instance of type "EOperation class".
17153 */
17154private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17155 Type.name(type,"EOperation class");
17156 find directInstanceOf(problem,interpretation,element,type);
17157}
17158private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17159 find interpretation(problem,interpretation);
17160 PartialInterpretation.scopes(interpretation,scope);
17161 Scope.targetTypeInterpretation(scope,typeInterpretation);
17162 Scope.maxNewElements(scope,0);
17163 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17164 Type.name(type,"EOperation class");
17165}
17166
17167/**
17168 * An element may be an instance of type "EOperation class".
17169 */
17170private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17171{
17172 find interpretation(problem,interpretation);
17173 PartialInterpretation.newElements(interpretation,element);
17174 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17175 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17176 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17177 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
17178 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17179 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17180 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17181 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
17182 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17183 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17184 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
17185 neg find isPrimitive(element);
17186} or {
17187 find interpretation(problem,interpretation);
17188 PartialInterpretation.openWorldElements(interpretation,element);
17189 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17190 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17191 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17192 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
17193 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17194 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17195 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17196 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
17197 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17198 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17199 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
17200 neg find isPrimitive(element);
17201} or
17202{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
17203/**
17204 * An element must be an instance of type "EPackage class".
17205 */
17206private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17207 Type.name(type,"EPackage class");
17208 find directInstanceOf(problem,interpretation,element,type);
17209}
17210private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17211 find interpretation(problem,interpretation);
17212 PartialInterpretation.scopes(interpretation,scope);
17213 Scope.targetTypeInterpretation(scope,typeInterpretation);
17214 Scope.maxNewElements(scope,0);
17215 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17216 Type.name(type,"EPackage class");
17217}
17218
17219/**
17220 * An element may be an instance of type "EPackage class".
17221 */
17222private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17223{
17224 find interpretation(problem,interpretation);
17225 PartialInterpretation.newElements(interpretation,element);
17226 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17227 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17228 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
17229 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17230 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
17231 neg find isPrimitive(element);
17232} or {
17233 find interpretation(problem,interpretation);
17234 PartialInterpretation.openWorldElements(interpretation,element);
17235 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17236 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17237 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
17238 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17239 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
17240 neg find isPrimitive(element);
17241} or
17242{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
17243/**
17244 * An element must be an instance of type "EParameter class".
17245 */
17246private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17247 Type.name(type,"EParameter class");
17248 find directInstanceOf(problem,interpretation,element,type);
17249}
17250private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17251 find interpretation(problem,interpretation);
17252 PartialInterpretation.scopes(interpretation,scope);
17253 Scope.targetTypeInterpretation(scope,typeInterpretation);
17254 Scope.maxNewElements(scope,0);
17255 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17256 Type.name(type,"EParameter class");
17257}
17258
17259/**
17260 * An element may be an instance of type "EParameter class".
17261 */
17262private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17263{
17264 find interpretation(problem,interpretation);
17265 PartialInterpretation.newElements(interpretation,element);
17266 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
17267 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17268 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17269 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17270 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17271 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17272 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
17273 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17274 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17275 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17276 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
17277 neg find isPrimitive(element);
17278} or {
17279 find interpretation(problem,interpretation);
17280 PartialInterpretation.openWorldElements(interpretation,element);
17281 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
17282 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17283 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17284 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17285 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17286 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17287 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
17288 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17289 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17290 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17291 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
17292 neg find isPrimitive(element);
17293} or
17294{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
17295/**
17296 * An element must be an instance of type "EReference class".
17297 */
17298private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17299 Type.name(type,"EReference class");
17300 find directInstanceOf(problem,interpretation,element,type);
17301}
17302private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17303 find interpretation(problem,interpretation);
17304 PartialInterpretation.scopes(interpretation,scope);
17305 Scope.targetTypeInterpretation(scope,typeInterpretation);
17306 Scope.maxNewElements(scope,0);
17307 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17308 Type.name(type,"EReference class");
17309}
17310
17311/**
17312 * An element may be an instance of type "EReference class".
17313 */
17314private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17315{
17316 find interpretation(problem,interpretation);
17317 PartialInterpretation.newElements(interpretation,element);
17318 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
17319 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17320 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17321 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17322 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
17323 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17324 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17325 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17326 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
17327 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17328 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17329 neg find scopeDisallowsNewEReference_class(problem, interpretation);
17330 neg find isPrimitive(element);
17331} or {
17332 find interpretation(problem,interpretation);
17333 PartialInterpretation.openWorldElements(interpretation,element);
17334 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
17335 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17336 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17337 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17338 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
17339 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17340 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17341 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17342 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
17343 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17344 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17345 neg find scopeDisallowsNewEReference_class(problem, interpretation);
17346 neg find isPrimitive(element);
17347} or
17348{ find mustInstanceOfEReference_class(problem,interpretation,element); }
17349/**
17350 * An element must be an instance of type "EStructuralFeature class".
17351 */
17352private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17353 Type.name(type,"EStructuralFeature class");
17354 find directInstanceOf(problem,interpretation,element,type);
17355}
17356private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17357 find interpretation(problem,interpretation);
17358 PartialInterpretation.scopes(interpretation,scope);
17359 Scope.targetTypeInterpretation(scope,typeInterpretation);
17360 Scope.maxNewElements(scope,0);
17361 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17362 Type.name(type,"EStructuralFeature class");
17363}
17364
17365/**
17366 * An element may be an instance of type "EStructuralFeature class".
17367 */
17368private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17369{
17370 find interpretation(problem,interpretation);
17371 PartialInterpretation.newElements(interpretation,element);
17372 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
17373 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17374 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17375 neg find mustInstanceOfEReference_class(problem,interpretation,element);
17376 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17377 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
17378 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17379 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17380 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17381 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
17382 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17383 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17384 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
17385 neg find isPrimitive(element);
17386} or {
17387 find interpretation(problem,interpretation);
17388 PartialInterpretation.openWorldElements(interpretation,element);
17389 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
17390 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17391 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17392 neg find mustInstanceOfEReference_class(problem,interpretation,element);
17393 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17394 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
17395 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17396 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17397 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17398 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
17399 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17400 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17401 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
17402 neg find isPrimitive(element);
17403} or
17404{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
17405/**
17406 * An element must be an instance of type "ETypedElement class".
17407 */
17408private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17409 Type.name(type,"ETypedElement class");
17410 find directInstanceOf(problem,interpretation,element,type);
17411}
17412private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17413 find interpretation(problem,interpretation);
17414 PartialInterpretation.scopes(interpretation,scope);
17415 Scope.targetTypeInterpretation(scope,typeInterpretation);
17416 Scope.maxNewElements(scope,0);
17417 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17418 Type.name(type,"ETypedElement class");
17419}
17420
17421/**
17422 * An element may be an instance of type "ETypedElement class".
17423 */
17424private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17425{
17426 find interpretation(problem,interpretation);
17427 PartialInterpretation.newElements(interpretation,element);
17428 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
17429 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17430 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17431 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17432 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
17433 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17434 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17435 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
17436 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17437 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17438 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17439 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
17440 neg find isPrimitive(element);
17441} or {
17442 find interpretation(problem,interpretation);
17443 PartialInterpretation.openWorldElements(interpretation,element);
17444 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
17445 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17446 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17447 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17448 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
17449 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17450 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17451 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
17452 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17453 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17454 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17455 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
17456 neg find isPrimitive(element);
17457} or
17458{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
17459/**
17460 * An element must be an instance of type "EStringToStringMapEntry class".
17461 */
17462private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17463 Type.name(type,"EStringToStringMapEntry class");
17464 find directInstanceOf(problem,interpretation,element,type);
17465}
17466private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17467 find interpretation(problem,interpretation);
17468 PartialInterpretation.scopes(interpretation,scope);
17469 Scope.targetTypeInterpretation(scope,typeInterpretation);
17470 Scope.maxNewElements(scope,0);
17471 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17472 Type.name(type,"EStringToStringMapEntry class");
17473}
17474
17475/**
17476 * An element may be an instance of type "EStringToStringMapEntry class".
17477 */
17478private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17479{
17480 find interpretation(problem,interpretation);
17481 PartialInterpretation.newElements(interpretation,element);
17482 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
17483 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17484 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17485 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
17486 neg find isPrimitive(element);
17487} or {
17488 find interpretation(problem,interpretation);
17489 PartialInterpretation.openWorldElements(interpretation,element);
17490 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
17491 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17492 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17493 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
17494 neg find isPrimitive(element);
17495} or
17496{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
17497/**
17498 * An element must be an instance of type "EGenericType class".
17499 */
17500private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17501 Type.name(type,"EGenericType class");
17502 find directInstanceOf(problem,interpretation,element,type);
17503}
17504private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17505 find interpretation(problem,interpretation);
17506 PartialInterpretation.scopes(interpretation,scope);
17507 Scope.targetTypeInterpretation(scope,typeInterpretation);
17508 Scope.maxNewElements(scope,0);
17509 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17510 Type.name(type,"EGenericType class");
17511}
17512
17513/**
17514 * An element may be an instance of type "EGenericType class".
17515 */
17516private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17517{
17518 find interpretation(problem,interpretation);
17519 PartialInterpretation.newElements(interpretation,element);
17520 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
17521 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17522 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17523 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
17524 neg find isPrimitive(element);
17525} or {
17526 find interpretation(problem,interpretation);
17527 PartialInterpretation.openWorldElements(interpretation,element);
17528 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
17529 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17530 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17531 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
17532 neg find isPrimitive(element);
17533} or
17534{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
17535/**
17536 * An element must be an instance of type "ETypeParameter class".
17537 */
17538private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17539 Type.name(type,"ETypeParameter class");
17540 find directInstanceOf(problem,interpretation,element,type);
17541}
17542private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17543 find interpretation(problem,interpretation);
17544 PartialInterpretation.scopes(interpretation,scope);
17545 Scope.targetTypeInterpretation(scope,typeInterpretation);
17546 Scope.maxNewElements(scope,0);
17547 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17548 Type.name(type,"ETypeParameter class");
17549}
17550
17551/**
17552 * An element may be an instance of type "ETypeParameter class".
17553 */
17554private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17555{
17556 find interpretation(problem,interpretation);
17557 PartialInterpretation.newElements(interpretation,element);
17558 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17559 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17560 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17561 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17562 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17563 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
17564 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17565 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17566 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
17567 neg find isPrimitive(element);
17568} or {
17569 find interpretation(problem,interpretation);
17570 PartialInterpretation.openWorldElements(interpretation,element);
17571 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17572 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17573 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17574 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17575 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17576 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
17577 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17578 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17579 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
17580 neg find isPrimitive(element);
17581} or
17582{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
17583/**
17584 * An element must be an instance of type "EModelElement class DefinedPart".
17585 */
17586private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17587 Type.name(type,"EModelElement class DefinedPart");
17588 find directInstanceOf(problem,interpretation,element,type);
17589}
17590private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
17591 find interpretation(problem,interpretation);
17592 PartialInterpretation.scopes(interpretation,scope);
17593 Scope.targetTypeInterpretation(scope,typeInterpretation);
17594 Scope.maxNewElements(scope,0);
17595 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17596 Type.name(type,"EModelElement class DefinedPart");
17597}
17598
17599/**
17600 * An element may be an instance of type "EModelElement class DefinedPart".
17601 */
17602private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17603{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
17604/**
17605 * An element must be an instance of type "EModelElement class UndefinedPart".
17606 */
17607private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17608 Type.name(type,"EModelElement class UndefinedPart");
17609 find directInstanceOf(problem,interpretation,element,type);
17610}
17611private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
17612 find interpretation(problem,interpretation);
17613 PartialInterpretation.scopes(interpretation,scope);
17614 Scope.targetTypeInterpretation(scope,typeInterpretation);
17615 Scope.maxNewElements(scope,0);
17616 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17617 Type.name(type,"EModelElement class UndefinedPart");
17618}
17619
17620/**
17621 * An element may be an instance of type "EModelElement class UndefinedPart".
17622 */
17623private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17624{
17625 find interpretation(problem,interpretation);
17626 PartialInterpretation.newElements(interpretation,element);
17627 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17628 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
17629 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17630 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17631 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17632 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
17633 neg find isPrimitive(element);
17634} or {
17635 find interpretation(problem,interpretation);
17636 PartialInterpretation.openWorldElements(interpretation,element);
17637 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17638 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
17639 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17640 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17641 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17642 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
17643 neg find isPrimitive(element);
17644} or
17645{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
17646/**
17647 * An element must be an instance of type "ENamedElement class DefinedPart".
17648 */
17649private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17650 Type.name(type,"ENamedElement class DefinedPart");
17651 find directInstanceOf(problem,interpretation,element,type);
17652}
17653private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
17654 find interpretation(problem,interpretation);
17655 PartialInterpretation.scopes(interpretation,scope);
17656 Scope.targetTypeInterpretation(scope,typeInterpretation);
17657 Scope.maxNewElements(scope,0);
17658 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17659 Type.name(type,"ENamedElement class DefinedPart");
17660}
17661
17662/**
17663 * An element may be an instance of type "ENamedElement class DefinedPart".
17664 */
17665private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17666{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
17667/**
17668 * An element must be an instance of type "ENamedElement class UndefinedPart".
17669 */
17670private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17671 Type.name(type,"ENamedElement class UndefinedPart");
17672 find directInstanceOf(problem,interpretation,element,type);
17673}
17674private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
17675 find interpretation(problem,interpretation);
17676 PartialInterpretation.scopes(interpretation,scope);
17677 Scope.targetTypeInterpretation(scope,typeInterpretation);
17678 Scope.maxNewElements(scope,0);
17679 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17680 Type.name(type,"ENamedElement class UndefinedPart");
17681}
17682
17683/**
17684 * An element may be an instance of type "ENamedElement class UndefinedPart".
17685 */
17686private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17687{
17688 find interpretation(problem,interpretation);
17689 PartialInterpretation.newElements(interpretation,element);
17690 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17691 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17692 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17693 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17694 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17695 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17696 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
17697 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17698 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17699 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
17700 neg find isPrimitive(element);
17701} or {
17702 find interpretation(problem,interpretation);
17703 PartialInterpretation.openWorldElements(interpretation,element);
17704 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17705 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17706 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17707 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17708 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17709 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17710 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
17711 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17712 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
17713 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
17714 neg find isPrimitive(element);
17715} or
17716{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
17717/**
17718 * An element must be an instance of type "EPackage class DefinedPart".
17719 */
17720private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17721 Type.name(type,"EPackage class DefinedPart");
17722 find directInstanceOf(problem,interpretation,element,type);
17723}
17724private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
17725 find interpretation(problem,interpretation);
17726 PartialInterpretation.scopes(interpretation,scope);
17727 Scope.targetTypeInterpretation(scope,typeInterpretation);
17728 Scope.maxNewElements(scope,0);
17729 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17730 Type.name(type,"EPackage class DefinedPart");
17731}
17732
17733/**
17734 * An element may be an instance of type "EPackage class DefinedPart".
17735 */
17736private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17737{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
17738/**
17739 * An element must be an instance of type "EPackage class UndefinedPart".
17740 */
17741private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17742 Type.name(type,"EPackage class UndefinedPart");
17743 find directInstanceOf(problem,interpretation,element,type);
17744}
17745private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
17746 find interpretation(problem,interpretation);
17747 PartialInterpretation.scopes(interpretation,scope);
17748 Scope.targetTypeInterpretation(scope,typeInterpretation);
17749 Scope.maxNewElements(scope,0);
17750 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17751 Type.name(type,"EPackage class UndefinedPart");
17752}
17753
17754/**
17755 * An element may be an instance of type "EPackage class UndefinedPart".
17756 */
17757private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17758{
17759 find interpretation(problem,interpretation);
17760 PartialInterpretation.newElements(interpretation,element);
17761 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17762 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17763 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17764 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17765 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17766 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17767 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
17768 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17769 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
17770 neg find isPrimitive(element);
17771} or {
17772 find interpretation(problem,interpretation);
17773 PartialInterpretation.openWorldElements(interpretation,element);
17774 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
17775 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
17776 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
17777 neg find mustInstanceOfEObject_class(problem,interpretation,element);
17778 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
17779 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
17780 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
17781 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
17782 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
17783 neg find isPrimitive(element);
17784} or
17785{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
17786
17787//////////
17788// 1.2 Relation Declaration Indexers
17789//////////
17790/**
17791 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
17792 */
17793private pattern mustInRelationeAttributeType_reference_EAttribute(
17794 problem:LogicProblem, interpretation:PartialInterpretation,
17795 source: DefinedElement, target:DefinedElement)
17796{
17797 find interpretation(problem,interpretation);
17798 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17799 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
17800 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
17801 BinaryElementRelationLink.param1(link,source);
17802 BinaryElementRelationLink.param2(link,target);
17803}
17804/**
17805 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
17806 */
17807private pattern mayInRelationeAttributeType_reference_EAttribute(
17808 problem:LogicProblem, interpretation:PartialInterpretation,
17809 source: DefinedElement, target:DefinedElement)
17810{
17811 find interpretation(problem,interpretation);
17812 // The two endpoint of the link have to exist
17813 find mayExist(problem, interpretation, source);
17814 find mayExist(problem, interpretation, target);
17815 // Type consistency
17816 find mayInstanceOfEAttribute_class(problem,interpretation,source);
17817 find mayInstanceOfEDataType_class(problem,interpretation,target);
17818 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
17819 // the upper bound of the multiplicity should be considered.
17820 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
17821 check(numberOfExistingReferences < 1);
17822} or {
17823 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
17824}
17825/**
17826 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
17827 */
17828private pattern mustInRelationdetails_reference_EAnnotation(
17829 problem:LogicProblem, interpretation:PartialInterpretation,
17830 source: DefinedElement, target:DefinedElement)
17831{
17832 find interpretation(problem,interpretation);
17833 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17834 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
17835 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
17836 BinaryElementRelationLink.param1(link,source);
17837 BinaryElementRelationLink.param2(link,target);
17838}
17839/**
17840 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
17841 */
17842private pattern mayInRelationdetails_reference_EAnnotation(
17843 problem:LogicProblem, interpretation:PartialInterpretation,
17844 source: DefinedElement, target:DefinedElement)
17845{
17846 find interpretation(problem,interpretation);
17847 // The two endpoint of the link have to exist
17848 find mayExist(problem, interpretation, source);
17849 find mayExist(problem, interpretation, target);
17850 // Type consistency
17851 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
17852 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
17853 // The reference is containment, then a new reference cannot be create if:
17854 // 1. Multiple parents
17855 neg find mustContains4(problem,interpretation,_,target);
17856 // 2. Circle in the containment hierarchy
17857 neg find mustTransitiveContains(source,target);
17858} or {
17859 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
17860}
17861/**
17862 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
17863 */
17864private pattern mustInRelationeModelElement_reference_EAnnotation(
17865 problem:LogicProblem, interpretation:PartialInterpretation,
17866 source: DefinedElement, target:DefinedElement)
17867{
17868 find interpretation(problem,interpretation);
17869 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17870 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
17871 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
17872 BinaryElementRelationLink.param1(link,source);
17873 BinaryElementRelationLink.param2(link,target);
17874}
17875/**
17876 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
17877 */
17878private pattern mayInRelationeModelElement_reference_EAnnotation(
17879 problem:LogicProblem, interpretation:PartialInterpretation,
17880 source: DefinedElement, target:DefinedElement)
17881{
17882 find interpretation(problem,interpretation);
17883 // The two endpoint of the link have to exist
17884 find mayExist(problem, interpretation, source);
17885 find mayExist(problem, interpretation, target);
17886 // Type consistency
17887 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
17888 find mayInstanceOfEModelElement_class(problem,interpretation,target);
17889 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
17890 // the upper bound of the multiplicity should be considered.
17891 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
17892 check(numberOfExistingReferences < 1);
17893 // The eOpposite of the reference is containment, then a referene cannot be created if
17894 // 1. Multiple parents
17895 neg find mustContains4(problem,interpretation,source,_);
17896 // 2. Circle in the containment hierarchy
17897 neg find mustTransitiveContains(source,target);
17898} or {
17899 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
17900}
17901/**
17902 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
17903 */
17904private pattern mustInRelationcontents_reference_EAnnotation(
17905 problem:LogicProblem, interpretation:PartialInterpretation,
17906 source: DefinedElement, target:DefinedElement)
17907{
17908 find interpretation(problem,interpretation);
17909 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17910 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
17911 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
17912 BinaryElementRelationLink.param1(link,source);
17913 BinaryElementRelationLink.param2(link,target);
17914}
17915/**
17916 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
17917 */
17918private pattern mayInRelationcontents_reference_EAnnotation(
17919 problem:LogicProblem, interpretation:PartialInterpretation,
17920 source: DefinedElement, target:DefinedElement)
17921{
17922 find interpretation(problem,interpretation);
17923 // The two endpoint of the link have to exist
17924 find mayExist(problem, interpretation, source);
17925 find mayExist(problem, interpretation, target);
17926 // Type consistency
17927 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
17928 find mayInstanceOfEObject_class(problem,interpretation,target);
17929 // The reference is containment, then a new reference cannot be create if:
17930 // 1. Multiple parents
17931 neg find mustContains4(problem,interpretation,_,target);
17932 // 2. Circle in the containment hierarchy
17933 neg find mustTransitiveContains(source,target);
17934} or {
17935 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
17936}
17937/**
17938 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
17939 */
17940private pattern mustInRelationreferences_reference_EAnnotation(
17941 problem:LogicProblem, interpretation:PartialInterpretation,
17942 source: DefinedElement, target:DefinedElement)
17943{
17944 find interpretation(problem,interpretation);
17945 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17946 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
17947 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
17948 BinaryElementRelationLink.param1(link,source);
17949 BinaryElementRelationLink.param2(link,target);
17950}
17951/**
17952 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
17953 */
17954private pattern mayInRelationreferences_reference_EAnnotation(
17955 problem:LogicProblem, interpretation:PartialInterpretation,
17956 source: DefinedElement, target:DefinedElement)
17957{
17958 find interpretation(problem,interpretation);
17959 // The two endpoint of the link have to exist
17960 find mayExist(problem, interpretation, source);
17961 find mayExist(problem, interpretation, target);
17962 // Type consistency
17963 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
17964 find mayInstanceOfEObject_class(problem,interpretation,target);
17965} or {
17966 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
17967}
17968/**
17969 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
17970 */
17971private pattern mustInRelationeSuperTypes_reference_EClass(
17972 problem:LogicProblem, interpretation:PartialInterpretation,
17973 source: DefinedElement, target:DefinedElement)
17974{
17975 find interpretation(problem,interpretation);
17976 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17977 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
17978 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
17979 BinaryElementRelationLink.param1(link,source);
17980 BinaryElementRelationLink.param2(link,target);
17981}
17982/**
17983 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
17984 */
17985private pattern mayInRelationeSuperTypes_reference_EClass(
17986 problem:LogicProblem, interpretation:PartialInterpretation,
17987 source: DefinedElement, target:DefinedElement)
17988{
17989 find interpretation(problem,interpretation);
17990 // The two endpoint of the link have to exist
17991 find mayExist(problem, interpretation, source);
17992 find mayExist(problem, interpretation, target);
17993 // Type consistency
17994 find mayInstanceOfEClass_class(problem,interpretation,source);
17995 find mayInstanceOfEClass_class(problem,interpretation,target);
17996} or {
17997 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
17998}
17999/**
18000 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
18001 */
18002private pattern mustInRelationeOperations_reference_EClass(
18003 problem:LogicProblem, interpretation:PartialInterpretation,
18004 source: DefinedElement, target:DefinedElement)
18005{
18006 find interpretation(problem,interpretation);
18007 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18008 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
18009 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18010 BinaryElementRelationLink.param1(link,source);
18011 BinaryElementRelationLink.param2(link,target);
18012}
18013/**
18014 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
18015 */
18016private pattern mayInRelationeOperations_reference_EClass(
18017 problem:LogicProblem, interpretation:PartialInterpretation,
18018 source: DefinedElement, target:DefinedElement)
18019{
18020 find interpretation(problem,interpretation);
18021 // The two endpoint of the link have to exist
18022 find mayExist(problem, interpretation, source);
18023 find mayExist(problem, interpretation, target);
18024 // Type consistency
18025 find mayInstanceOfEClass_class(problem,interpretation,source);
18026 find mayInstanceOfEOperation_class(problem,interpretation,target);
18027 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18028 // the upper bound of the opposite reference multiplicity should be considered.
18029 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
18030 check(numberOfExistingOppositeReferences < 1);
18031 // The reference is containment, then a new reference cannot be create if:
18032 // 1. Multiple parents
18033 neg find mustContains4(problem,interpretation,_,target);
18034 // 2. Circle in the containment hierarchy
18035 neg find mustTransitiveContains(source,target);
18036} or {
18037 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
18038}
18039/**
18040 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
18041 */
18042private pattern mustInRelationeAllAttributes_reference_EClass(
18043 problem:LogicProblem, interpretation:PartialInterpretation,
18044 source: DefinedElement, target:DefinedElement)
18045{
18046 find interpretation(problem,interpretation);
18047 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18048 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
18049 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18050 BinaryElementRelationLink.param1(link,source);
18051 BinaryElementRelationLink.param2(link,target);
18052}
18053/**
18054 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
18055 */
18056private pattern mayInRelationeAllAttributes_reference_EClass(
18057 problem:LogicProblem, interpretation:PartialInterpretation,
18058 source: DefinedElement, target:DefinedElement)
18059{
18060 find interpretation(problem,interpretation);
18061 // The two endpoint of the link have to exist
18062 find mayExist(problem, interpretation, source);
18063 find mayExist(problem, interpretation, target);
18064 // Type consistency
18065 find mayInstanceOfEClass_class(problem,interpretation,source);
18066 find mayInstanceOfEAttribute_class(problem,interpretation,target);
18067} or {
18068 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
18069}
18070/**
18071 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
18072 */
18073private pattern mustInRelationeAllReferences_reference_EClass(
18074 problem:LogicProblem, interpretation:PartialInterpretation,
18075 source: DefinedElement, target:DefinedElement)
18076{
18077 find interpretation(problem,interpretation);
18078 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18079 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
18080 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18081 BinaryElementRelationLink.param1(link,source);
18082 BinaryElementRelationLink.param2(link,target);
18083}
18084/**
18085 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
18086 */
18087private pattern mayInRelationeAllReferences_reference_EClass(
18088 problem:LogicProblem, interpretation:PartialInterpretation,
18089 source: DefinedElement, target:DefinedElement)
18090{
18091 find interpretation(problem,interpretation);
18092 // The two endpoint of the link have to exist
18093 find mayExist(problem, interpretation, source);
18094 find mayExist(problem, interpretation, target);
18095 // Type consistency
18096 find mayInstanceOfEClass_class(problem,interpretation,source);
18097 find mayInstanceOfEReference_class(problem,interpretation,target);
18098} or {
18099 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
18100}
18101/**
18102 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
18103 */
18104private pattern mustInRelationeReferences_reference_EClass(
18105 problem:LogicProblem, interpretation:PartialInterpretation,
18106 source: DefinedElement, target:DefinedElement)
18107{
18108 find interpretation(problem,interpretation);
18109 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18110 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
18111 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18112 BinaryElementRelationLink.param1(link,source);
18113 BinaryElementRelationLink.param2(link,target);
18114}
18115/**
18116 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
18117 */
18118private pattern mayInRelationeReferences_reference_EClass(
18119 problem:LogicProblem, interpretation:PartialInterpretation,
18120 source: DefinedElement, target:DefinedElement)
18121{
18122 find interpretation(problem,interpretation);
18123 // The two endpoint of the link have to exist
18124 find mayExist(problem, interpretation, source);
18125 find mayExist(problem, interpretation, target);
18126 // Type consistency
18127 find mayInstanceOfEClass_class(problem,interpretation,source);
18128 find mayInstanceOfEReference_class(problem,interpretation,target);
18129} or {
18130 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
18131}
18132/**
18133 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
18134 */
18135private pattern mustInRelationeAttributes_reference_EClass(
18136 problem:LogicProblem, interpretation:PartialInterpretation,
18137 source: DefinedElement, target:DefinedElement)
18138{
18139 find interpretation(problem,interpretation);
18140 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18141 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
18142 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18143 BinaryElementRelationLink.param1(link,source);
18144 BinaryElementRelationLink.param2(link,target);
18145}
18146/**
18147 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
18148 */
18149private pattern mayInRelationeAttributes_reference_EClass(
18150 problem:LogicProblem, interpretation:PartialInterpretation,
18151 source: DefinedElement, target:DefinedElement)
18152{
18153 find interpretation(problem,interpretation);
18154 // The two endpoint of the link have to exist
18155 find mayExist(problem, interpretation, source);
18156 find mayExist(problem, interpretation, target);
18157 // Type consistency
18158 find mayInstanceOfEClass_class(problem,interpretation,source);
18159 find mayInstanceOfEAttribute_class(problem,interpretation,target);
18160} or {
18161 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
18162}
18163/**
18164 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
18165 */
18166private pattern mustInRelationeAllContainments_reference_EClass(
18167 problem:LogicProblem, interpretation:PartialInterpretation,
18168 source: DefinedElement, target:DefinedElement)
18169{
18170 find interpretation(problem,interpretation);
18171 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18172 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
18173 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18174 BinaryElementRelationLink.param1(link,source);
18175 BinaryElementRelationLink.param2(link,target);
18176}
18177/**
18178 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
18179 */
18180private pattern mayInRelationeAllContainments_reference_EClass(
18181 problem:LogicProblem, interpretation:PartialInterpretation,
18182 source: DefinedElement, target:DefinedElement)
18183{
18184 find interpretation(problem,interpretation);
18185 // The two endpoint of the link have to exist
18186 find mayExist(problem, interpretation, source);
18187 find mayExist(problem, interpretation, target);
18188 // Type consistency
18189 find mayInstanceOfEClass_class(problem,interpretation,source);
18190 find mayInstanceOfEReference_class(problem,interpretation,target);
18191} or {
18192 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
18193}
18194/**
18195 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
18196 */
18197private pattern mustInRelationeAllOperations_reference_EClass(
18198 problem:LogicProblem, interpretation:PartialInterpretation,
18199 source: DefinedElement, target:DefinedElement)
18200{
18201 find interpretation(problem,interpretation);
18202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
18204 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18205 BinaryElementRelationLink.param1(link,source);
18206 BinaryElementRelationLink.param2(link,target);
18207}
18208/**
18209 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
18210 */
18211private pattern mayInRelationeAllOperations_reference_EClass(
18212 problem:LogicProblem, interpretation:PartialInterpretation,
18213 source: DefinedElement, target:DefinedElement)
18214{
18215 find interpretation(problem,interpretation);
18216 // The two endpoint of the link have to exist
18217 find mayExist(problem, interpretation, source);
18218 find mayExist(problem, interpretation, target);
18219 // Type consistency
18220 find mayInstanceOfEClass_class(problem,interpretation,source);
18221 find mayInstanceOfEOperation_class(problem,interpretation,target);
18222} or {
18223 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
18224}
18225/**
18226 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
18227 */
18228private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
18229 problem:LogicProblem, interpretation:PartialInterpretation,
18230 source: DefinedElement, target:DefinedElement)
18231{
18232 find interpretation(problem,interpretation);
18233 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18234 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
18235 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18236 BinaryElementRelationLink.param1(link,source);
18237 BinaryElementRelationLink.param2(link,target);
18238}
18239/**
18240 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
18241 */
18242private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
18243 problem:LogicProblem, interpretation:PartialInterpretation,
18244 source: DefinedElement, target:DefinedElement)
18245{
18246 find interpretation(problem,interpretation);
18247 // The two endpoint of the link have to exist
18248 find mayExist(problem, interpretation, source);
18249 find mayExist(problem, interpretation, target);
18250 // Type consistency
18251 find mayInstanceOfEClass_class(problem,interpretation,source);
18252 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
18253} or {
18254 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
18255}
18256/**
18257 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
18258 */
18259private pattern mustInRelationeAllSuperTypes_reference_EClass(
18260 problem:LogicProblem, interpretation:PartialInterpretation,
18261 source: DefinedElement, target:DefinedElement)
18262{
18263 find interpretation(problem,interpretation);
18264 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18265 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
18266 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18267 BinaryElementRelationLink.param1(link,source);
18268 BinaryElementRelationLink.param2(link,target);
18269}
18270/**
18271 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
18272 */
18273private pattern mayInRelationeAllSuperTypes_reference_EClass(
18274 problem:LogicProblem, interpretation:PartialInterpretation,
18275 source: DefinedElement, target:DefinedElement)
18276{
18277 find interpretation(problem,interpretation);
18278 // The two endpoint of the link have to exist
18279 find mayExist(problem, interpretation, source);
18280 find mayExist(problem, interpretation, target);
18281 // Type consistency
18282 find mayInstanceOfEClass_class(problem,interpretation,source);
18283 find mayInstanceOfEClass_class(problem,interpretation,target);
18284} or {
18285 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
18286}
18287/**
18288 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
18289 */
18290private pattern mustInRelationeIDAttribute_reference_EClass(
18291 problem:LogicProblem, interpretation:PartialInterpretation,
18292 source: DefinedElement, target:DefinedElement)
18293{
18294 find interpretation(problem,interpretation);
18295 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18296 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
18297 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18298 BinaryElementRelationLink.param1(link,source);
18299 BinaryElementRelationLink.param2(link,target);
18300}
18301/**
18302 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
18303 */
18304private pattern mayInRelationeIDAttribute_reference_EClass(
18305 problem:LogicProblem, interpretation:PartialInterpretation,
18306 source: DefinedElement, target:DefinedElement)
18307{
18308 find interpretation(problem,interpretation);
18309 // The two endpoint of the link have to exist
18310 find mayExist(problem, interpretation, source);
18311 find mayExist(problem, interpretation, target);
18312 // Type consistency
18313 find mayInstanceOfEClass_class(problem,interpretation,source);
18314 find mayInstanceOfEAttribute_class(problem,interpretation,target);
18315 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18316 // the upper bound of the multiplicity should be considered.
18317 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
18318 check(numberOfExistingReferences < 1);
18319} or {
18320 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
18321}
18322/**
18323 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
18324 */
18325private pattern mustInRelationeStructuralFeatures_reference_EClass(
18326 problem:LogicProblem, interpretation:PartialInterpretation,
18327 source: DefinedElement, target:DefinedElement)
18328{
18329 find interpretation(problem,interpretation);
18330 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18331 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
18332 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18333 BinaryElementRelationLink.param1(link,source);
18334 BinaryElementRelationLink.param2(link,target);
18335}
18336/**
18337 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
18338 */
18339private pattern mayInRelationeStructuralFeatures_reference_EClass(
18340 problem:LogicProblem, interpretation:PartialInterpretation,
18341 source: DefinedElement, target:DefinedElement)
18342{
18343 find interpretation(problem,interpretation);
18344 // The two endpoint of the link have to exist
18345 find mayExist(problem, interpretation, source);
18346 find mayExist(problem, interpretation, target);
18347 // Type consistency
18348 find mayInstanceOfEClass_class(problem,interpretation,source);
18349 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
18350 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18351 // the upper bound of the opposite reference multiplicity should be considered.
18352 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
18353 check(numberOfExistingOppositeReferences < 1);
18354 // The reference is containment, then a new reference cannot be create if:
18355 // 1. Multiple parents
18356 neg find mustContains4(problem,interpretation,_,target);
18357 // 2. Circle in the containment hierarchy
18358 neg find mustTransitiveContains(source,target);
18359} or {
18360 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
18361}
18362/**
18363 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
18364 */
18365private pattern mustInRelationeGenericSuperTypes_reference_EClass(
18366 problem:LogicProblem, interpretation:PartialInterpretation,
18367 source: DefinedElement, target:DefinedElement)
18368{
18369 find interpretation(problem,interpretation);
18370 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18371 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
18372 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18373 BinaryElementRelationLink.param1(link,source);
18374 BinaryElementRelationLink.param2(link,target);
18375}
18376/**
18377 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
18378 */
18379private pattern mayInRelationeGenericSuperTypes_reference_EClass(
18380 problem:LogicProblem, interpretation:PartialInterpretation,
18381 source: DefinedElement, target:DefinedElement)
18382{
18383 find interpretation(problem,interpretation);
18384 // The two endpoint of the link have to exist
18385 find mayExist(problem, interpretation, source);
18386 find mayExist(problem, interpretation, target);
18387 // Type consistency
18388 find mayInstanceOfEClass_class(problem,interpretation,source);
18389 find mayInstanceOfEGenericType_class(problem,interpretation,target);
18390 // The reference is containment, then a new reference cannot be create if:
18391 // 1. Multiple parents
18392 neg find mustContains4(problem,interpretation,_,target);
18393 // 2. Circle in the containment hierarchy
18394 neg find mustTransitiveContains(source,target);
18395} or {
18396 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
18397}
18398/**
18399 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
18400 */
18401private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
18402 problem:LogicProblem, interpretation:PartialInterpretation,
18403 source: DefinedElement, target:DefinedElement)
18404{
18405 find interpretation(problem,interpretation);
18406 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18407 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
18408 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18409 BinaryElementRelationLink.param1(link,source);
18410 BinaryElementRelationLink.param2(link,target);
18411}
18412/**
18413 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
18414 */
18415private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
18416 problem:LogicProblem, interpretation:PartialInterpretation,
18417 source: DefinedElement, target:DefinedElement)
18418{
18419 find interpretation(problem,interpretation);
18420 // The two endpoint of the link have to exist
18421 find mayExist(problem, interpretation, source);
18422 find mayExist(problem, interpretation, target);
18423 // Type consistency
18424 find mayInstanceOfEClass_class(problem,interpretation,source);
18425 find mayInstanceOfEGenericType_class(problem,interpretation,target);
18426} or {
18427 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
18428}
18429/**
18430 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
18431 */
18432private pattern mustInRelationePackage_reference_EClassifier(
18433 problem:LogicProblem, interpretation:PartialInterpretation,
18434 source: DefinedElement, target:DefinedElement)
18435{
18436 find interpretation(problem,interpretation);
18437 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18438 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
18439 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18440 BinaryElementRelationLink.param1(link,source);
18441 BinaryElementRelationLink.param2(link,target);
18442}
18443/**
18444 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
18445 */
18446private pattern mayInRelationePackage_reference_EClassifier(
18447 problem:LogicProblem, interpretation:PartialInterpretation,
18448 source: DefinedElement, target:DefinedElement)
18449{
18450 find interpretation(problem,interpretation);
18451 // The two endpoint of the link have to exist
18452 find mayExist(problem, interpretation, source);
18453 find mayExist(problem, interpretation, target);
18454 // Type consistency
18455 find mayInstanceOfEClassifier_class(problem,interpretation,source);
18456 find mayInstanceOfEPackage_class(problem,interpretation,target);
18457 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18458 // the upper bound of the multiplicity should be considered.
18459 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
18460 check(numberOfExistingReferences < 1);
18461 // The eOpposite of the reference is containment, then a referene cannot be created if
18462 // 1. Multiple parents
18463 neg find mustContains4(problem,interpretation,source,_);
18464 // 2. Circle in the containment hierarchy
18465 neg find mustTransitiveContains(source,target);
18466} or {
18467 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
18468}
18469/**
18470 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
18471 */
18472private pattern mustInRelationeTypeParameters_reference_EClassifier(
18473 problem:LogicProblem, interpretation:PartialInterpretation,
18474 source: DefinedElement, target:DefinedElement)
18475{
18476 find interpretation(problem,interpretation);
18477 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18478 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
18479 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18480 BinaryElementRelationLink.param1(link,source);
18481 BinaryElementRelationLink.param2(link,target);
18482}
18483/**
18484 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
18485 */
18486private pattern mayInRelationeTypeParameters_reference_EClassifier(
18487 problem:LogicProblem, interpretation:PartialInterpretation,
18488 source: DefinedElement, target:DefinedElement)
18489{
18490 find interpretation(problem,interpretation);
18491 // The two endpoint of the link have to exist
18492 find mayExist(problem, interpretation, source);
18493 find mayExist(problem, interpretation, target);
18494 // Type consistency
18495 find mayInstanceOfEClassifier_class(problem,interpretation,source);
18496 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
18497 // The reference is containment, then a new reference cannot be create if:
18498 // 1. Multiple parents
18499 neg find mustContains4(problem,interpretation,_,target);
18500 // 2. Circle in the containment hierarchy
18501 neg find mustTransitiveContains(source,target);
18502} or {
18503 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
18504}
18505/**
18506 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
18507 */
18508private pattern mustInRelationeLiterals_reference_EEnum(
18509 problem:LogicProblem, interpretation:PartialInterpretation,
18510 source: DefinedElement, target:DefinedElement)
18511{
18512 find interpretation(problem,interpretation);
18513 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18514 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
18515 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18516 BinaryElementRelationLink.param1(link,source);
18517 BinaryElementRelationLink.param2(link,target);
18518}
18519/**
18520 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
18521 */
18522private pattern mayInRelationeLiterals_reference_EEnum(
18523 problem:LogicProblem, interpretation:PartialInterpretation,
18524 source: DefinedElement, target:DefinedElement)
18525{
18526 find interpretation(problem,interpretation);
18527 // The two endpoint of the link have to exist
18528 find mayExist(problem, interpretation, source);
18529 find mayExist(problem, interpretation, target);
18530 // Type consistency
18531 find mayInstanceOfEEnum_class(problem,interpretation,source);
18532 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
18533 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18534 // the upper bound of the opposite reference multiplicity should be considered.
18535 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
18536 check(numberOfExistingOppositeReferences < 1);
18537 // The reference is containment, then a new reference cannot be create if:
18538 // 1. Multiple parents
18539 neg find mustContains4(problem,interpretation,_,target);
18540 // 2. Circle in the containment hierarchy
18541 neg find mustTransitiveContains(source,target);
18542} or {
18543 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
18544}
18545/**
18546 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
18547 */
18548private pattern mustInRelationeEnum_reference_EEnumLiteral(
18549 problem:LogicProblem, interpretation:PartialInterpretation,
18550 source: DefinedElement, target:DefinedElement)
18551{
18552 find interpretation(problem,interpretation);
18553 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18554 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
18555 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18556 BinaryElementRelationLink.param1(link,source);
18557 BinaryElementRelationLink.param2(link,target);
18558}
18559/**
18560 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
18561 */
18562private pattern mayInRelationeEnum_reference_EEnumLiteral(
18563 problem:LogicProblem, interpretation:PartialInterpretation,
18564 source: DefinedElement, target:DefinedElement)
18565{
18566 find interpretation(problem,interpretation);
18567 // The two endpoint of the link have to exist
18568 find mayExist(problem, interpretation, source);
18569 find mayExist(problem, interpretation, target);
18570 // Type consistency
18571 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
18572 find mayInstanceOfEEnum_class(problem,interpretation,target);
18573 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18574 // the upper bound of the multiplicity should be considered.
18575 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
18576 check(numberOfExistingReferences < 1);
18577 // The eOpposite of the reference is containment, then a referene cannot be created if
18578 // 1. Multiple parents
18579 neg find mustContains4(problem,interpretation,source,_);
18580 // 2. Circle in the containment hierarchy
18581 neg find mustTransitiveContains(source,target);
18582} or {
18583 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
18584}
18585/**
18586 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
18587 */
18588private pattern mustInRelationeAnnotations_reference_EModelElement(
18589 problem:LogicProblem, interpretation:PartialInterpretation,
18590 source: DefinedElement, target:DefinedElement)
18591{
18592 find interpretation(problem,interpretation);
18593 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18594 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
18595 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18596 BinaryElementRelationLink.param1(link,source);
18597 BinaryElementRelationLink.param2(link,target);
18598}
18599/**
18600 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
18601 */
18602private pattern mayInRelationeAnnotations_reference_EModelElement(
18603 problem:LogicProblem, interpretation:PartialInterpretation,
18604 source: DefinedElement, target:DefinedElement)
18605{
18606 find interpretation(problem,interpretation);
18607 // The two endpoint of the link have to exist
18608 find mayExist(problem, interpretation, source);
18609 find mayExist(problem, interpretation, target);
18610 // Type consistency
18611 find mayInstanceOfEModelElement_class(problem,interpretation,source);
18612 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
18613 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18614 // the upper bound of the opposite reference multiplicity should be considered.
18615 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
18616 check(numberOfExistingOppositeReferences < 1);
18617 // The reference is containment, then a new reference cannot be create if:
18618 // 1. Multiple parents
18619 neg find mustContains4(problem,interpretation,_,target);
18620 // 2. Circle in the containment hierarchy
18621 neg find mustTransitiveContains(source,target);
18622} or {
18623 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
18624}
18625/**
18626 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
18627 */
18628private pattern mustInRelationeContainingClass_reference_EOperation(
18629 problem:LogicProblem, interpretation:PartialInterpretation,
18630 source: DefinedElement, target:DefinedElement)
18631{
18632 find interpretation(problem,interpretation);
18633 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18634 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
18635 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18636 BinaryElementRelationLink.param1(link,source);
18637 BinaryElementRelationLink.param2(link,target);
18638}
18639/**
18640 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
18641 */
18642private pattern mayInRelationeContainingClass_reference_EOperation(
18643 problem:LogicProblem, interpretation:PartialInterpretation,
18644 source: DefinedElement, target:DefinedElement)
18645{
18646 find interpretation(problem,interpretation);
18647 // The two endpoint of the link have to exist
18648 find mayExist(problem, interpretation, source);
18649 find mayExist(problem, interpretation, target);
18650 // Type consistency
18651 find mayInstanceOfEOperation_class(problem,interpretation,source);
18652 find mayInstanceOfEClass_class(problem,interpretation,target);
18653 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18654 // the upper bound of the multiplicity should be considered.
18655 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
18656 check(numberOfExistingReferences < 1);
18657 // The eOpposite of the reference is containment, then a referene cannot be created if
18658 // 1. Multiple parents
18659 neg find mustContains4(problem,interpretation,source,_);
18660 // 2. Circle in the containment hierarchy
18661 neg find mustTransitiveContains(source,target);
18662} or {
18663 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
18664}
18665/**
18666 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
18667 */
18668private pattern mustInRelationeTypeParameters_reference_EOperation(
18669 problem:LogicProblem, interpretation:PartialInterpretation,
18670 source: DefinedElement, target:DefinedElement)
18671{
18672 find interpretation(problem,interpretation);
18673 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18674 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
18675 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18676 BinaryElementRelationLink.param1(link,source);
18677 BinaryElementRelationLink.param2(link,target);
18678}
18679/**
18680 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
18681 */
18682private pattern mayInRelationeTypeParameters_reference_EOperation(
18683 problem:LogicProblem, interpretation:PartialInterpretation,
18684 source: DefinedElement, target:DefinedElement)
18685{
18686 find interpretation(problem,interpretation);
18687 // The two endpoint of the link have to exist
18688 find mayExist(problem, interpretation, source);
18689 find mayExist(problem, interpretation, target);
18690 // Type consistency
18691 find mayInstanceOfEOperation_class(problem,interpretation,source);
18692 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
18693 // The reference is containment, then a new reference cannot be create if:
18694 // 1. Multiple parents
18695 neg find mustContains4(problem,interpretation,_,target);
18696 // 2. Circle in the containment hierarchy
18697 neg find mustTransitiveContains(source,target);
18698} or {
18699 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
18700}
18701/**
18702 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
18703 */
18704private pattern mustInRelationeParameters_reference_EOperation(
18705 problem:LogicProblem, interpretation:PartialInterpretation,
18706 source: DefinedElement, target:DefinedElement)
18707{
18708 find interpretation(problem,interpretation);
18709 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18710 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
18711 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18712 BinaryElementRelationLink.param1(link,source);
18713 BinaryElementRelationLink.param2(link,target);
18714}
18715/**
18716 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
18717 */
18718private pattern mayInRelationeParameters_reference_EOperation(
18719 problem:LogicProblem, interpretation:PartialInterpretation,
18720 source: DefinedElement, target:DefinedElement)
18721{
18722 find interpretation(problem,interpretation);
18723 // The two endpoint of the link have to exist
18724 find mayExist(problem, interpretation, source);
18725 find mayExist(problem, interpretation, target);
18726 // Type consistency
18727 find mayInstanceOfEOperation_class(problem,interpretation,source);
18728 find mayInstanceOfEParameter_class(problem,interpretation,target);
18729 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18730 // the upper bound of the opposite reference multiplicity should be considered.
18731 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
18732 check(numberOfExistingOppositeReferences < 1);
18733 // The reference is containment, then a new reference cannot be create if:
18734 // 1. Multiple parents
18735 neg find mustContains4(problem,interpretation,_,target);
18736 // 2. Circle in the containment hierarchy
18737 neg find mustTransitiveContains(source,target);
18738} or {
18739 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
18740}
18741/**
18742 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
18743 */
18744private pattern mustInRelationeExceptions_reference_EOperation(
18745 problem:LogicProblem, interpretation:PartialInterpretation,
18746 source: DefinedElement, target:DefinedElement)
18747{
18748 find interpretation(problem,interpretation);
18749 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18750 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
18751 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18752 BinaryElementRelationLink.param1(link,source);
18753 BinaryElementRelationLink.param2(link,target);
18754}
18755/**
18756 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
18757 */
18758private pattern mayInRelationeExceptions_reference_EOperation(
18759 problem:LogicProblem, interpretation:PartialInterpretation,
18760 source: DefinedElement, target:DefinedElement)
18761{
18762 find interpretation(problem,interpretation);
18763 // The two endpoint of the link have to exist
18764 find mayExist(problem, interpretation, source);
18765 find mayExist(problem, interpretation, target);
18766 // Type consistency
18767 find mayInstanceOfEOperation_class(problem,interpretation,source);
18768 find mayInstanceOfEClassifier_class(problem,interpretation,target);
18769} or {
18770 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
18771}
18772/**
18773 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
18774 */
18775private pattern mustInRelationeGenericExceptions_reference_EOperation(
18776 problem:LogicProblem, interpretation:PartialInterpretation,
18777 source: DefinedElement, target:DefinedElement)
18778{
18779 find interpretation(problem,interpretation);
18780 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18781 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
18782 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18783 BinaryElementRelationLink.param1(link,source);
18784 BinaryElementRelationLink.param2(link,target);
18785}
18786/**
18787 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
18788 */
18789private pattern mayInRelationeGenericExceptions_reference_EOperation(
18790 problem:LogicProblem, interpretation:PartialInterpretation,
18791 source: DefinedElement, target:DefinedElement)
18792{
18793 find interpretation(problem,interpretation);
18794 // The two endpoint of the link have to exist
18795 find mayExist(problem, interpretation, source);
18796 find mayExist(problem, interpretation, target);
18797 // Type consistency
18798 find mayInstanceOfEOperation_class(problem,interpretation,source);
18799 find mayInstanceOfEGenericType_class(problem,interpretation,target);
18800 // The reference is containment, then a new reference cannot be create if:
18801 // 1. Multiple parents
18802 neg find mustContains4(problem,interpretation,_,target);
18803 // 2. Circle in the containment hierarchy
18804 neg find mustTransitiveContains(source,target);
18805} or {
18806 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
18807}
18808/**
18809 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
18810 */
18811private pattern mustInRelationeClassifiers_reference_EPackage(
18812 problem:LogicProblem, interpretation:PartialInterpretation,
18813 source: DefinedElement, target:DefinedElement)
18814{
18815 find interpretation(problem,interpretation);
18816 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18817 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
18818 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18819 BinaryElementRelationLink.param1(link,source);
18820 BinaryElementRelationLink.param2(link,target);
18821}
18822/**
18823 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
18824 */
18825private pattern mayInRelationeClassifiers_reference_EPackage(
18826 problem:LogicProblem, interpretation:PartialInterpretation,
18827 source: DefinedElement, target:DefinedElement)
18828{
18829 find interpretation(problem,interpretation);
18830 // The two endpoint of the link have to exist
18831 find mayExist(problem, interpretation, source);
18832 find mayExist(problem, interpretation, target);
18833 // Type consistency
18834 find mayInstanceOfEPackage_class(problem,interpretation,source);
18835 find mayInstanceOfEClassifier_class(problem,interpretation,target);
18836 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18837 // the upper bound of the opposite reference multiplicity should be considered.
18838 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
18839 check(numberOfExistingOppositeReferences < 1);
18840 // The reference is containment, then a new reference cannot be create if:
18841 // 1. Multiple parents
18842 neg find mustContains4(problem,interpretation,_,target);
18843 // 2. Circle in the containment hierarchy
18844 neg find mustTransitiveContains(source,target);
18845} or {
18846 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
18847}
18848/**
18849 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
18850 */
18851private pattern mustInRelationeSubpackages_reference_EPackage(
18852 problem:LogicProblem, interpretation:PartialInterpretation,
18853 source: DefinedElement, target:DefinedElement)
18854{
18855 find interpretation(problem,interpretation);
18856 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18857 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
18858 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18859 BinaryElementRelationLink.param1(link,source);
18860 BinaryElementRelationLink.param2(link,target);
18861}
18862/**
18863 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
18864 */
18865private pattern mayInRelationeSubpackages_reference_EPackage(
18866 problem:LogicProblem, interpretation:PartialInterpretation,
18867 source: DefinedElement, target:DefinedElement)
18868{
18869 find interpretation(problem,interpretation);
18870 // The two endpoint of the link have to exist
18871 find mayExist(problem, interpretation, source);
18872 find mayExist(problem, interpretation, target);
18873 // Type consistency
18874 find mayInstanceOfEPackage_class(problem,interpretation,source);
18875 find mayInstanceOfEPackage_class(problem,interpretation,target);
18876 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18877 // the upper bound of the opposite reference multiplicity should be considered.
18878 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
18879 check(numberOfExistingOppositeReferences < 1);
18880 // The reference is containment, then a new reference cannot be create if:
18881 // 1. Multiple parents
18882 neg find mustContains4(problem,interpretation,_,target);
18883 // 2. Circle in the containment hierarchy
18884 neg find mustTransitiveContains(source,target);
18885} or {
18886 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
18887}
18888/**
18889 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
18890 */
18891private pattern mustInRelationeSuperPackage_reference_EPackage(
18892 problem:LogicProblem, interpretation:PartialInterpretation,
18893 source: DefinedElement, target:DefinedElement)
18894{
18895 find interpretation(problem,interpretation);
18896 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18897 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
18898 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18899 BinaryElementRelationLink.param1(link,source);
18900 BinaryElementRelationLink.param2(link,target);
18901}
18902/**
18903 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
18904 */
18905private pattern mayInRelationeSuperPackage_reference_EPackage(
18906 problem:LogicProblem, interpretation:PartialInterpretation,
18907 source: DefinedElement, target:DefinedElement)
18908{
18909 find interpretation(problem,interpretation);
18910 // The two endpoint of the link have to exist
18911 find mayExist(problem, interpretation, source);
18912 find mayExist(problem, interpretation, target);
18913 // Type consistency
18914 find mayInstanceOfEPackage_class(problem,interpretation,source);
18915 find mayInstanceOfEPackage_class(problem,interpretation,target);
18916 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18917 // the upper bound of the multiplicity should be considered.
18918 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
18919 check(numberOfExistingReferences < 1);
18920 // The eOpposite of the reference is containment, then a referene cannot be created if
18921 // 1. Multiple parents
18922 neg find mustContains4(problem,interpretation,source,_);
18923 // 2. Circle in the containment hierarchy
18924 neg find mustTransitiveContains(source,target);
18925} or {
18926 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
18927}
18928/**
18929 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
18930 */
18931private pattern mustInRelationeOperation_reference_EParameter(
18932 problem:LogicProblem, interpretation:PartialInterpretation,
18933 source: DefinedElement, target:DefinedElement)
18934{
18935 find interpretation(problem,interpretation);
18936 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18937 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
18938 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18939 BinaryElementRelationLink.param1(link,source);
18940 BinaryElementRelationLink.param2(link,target);
18941}
18942/**
18943 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
18944 */
18945private pattern mayInRelationeOperation_reference_EParameter(
18946 problem:LogicProblem, interpretation:PartialInterpretation,
18947 source: DefinedElement, target:DefinedElement)
18948{
18949 find interpretation(problem,interpretation);
18950 // The two endpoint of the link have to exist
18951 find mayExist(problem, interpretation, source);
18952 find mayExist(problem, interpretation, target);
18953 // Type consistency
18954 find mayInstanceOfEParameter_class(problem,interpretation,source);
18955 find mayInstanceOfEOperation_class(problem,interpretation,target);
18956 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18957 // the upper bound of the multiplicity should be considered.
18958 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
18959 check(numberOfExistingReferences < 1);
18960 // The eOpposite of the reference is containment, then a referene cannot be created if
18961 // 1. Multiple parents
18962 neg find mustContains4(problem,interpretation,source,_);
18963 // 2. Circle in the containment hierarchy
18964 neg find mustTransitiveContains(source,target);
18965} or {
18966 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
18967}
18968/**
18969 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
18970 */
18971private pattern mustInRelationeOpposite_reference_EReference(
18972 problem:LogicProblem, interpretation:PartialInterpretation,
18973 source: DefinedElement, target:DefinedElement)
18974{
18975 find interpretation(problem,interpretation);
18976 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18977 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
18978 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18979 BinaryElementRelationLink.param1(link,source);
18980 BinaryElementRelationLink.param2(link,target);
18981}
18982/**
18983 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
18984 */
18985private pattern mayInRelationeOpposite_reference_EReference(
18986 problem:LogicProblem, interpretation:PartialInterpretation,
18987 source: DefinedElement, target:DefinedElement)
18988{
18989 find interpretation(problem,interpretation);
18990 // The two endpoint of the link have to exist
18991 find mayExist(problem, interpretation, source);
18992 find mayExist(problem, interpretation, target);
18993 // Type consistency
18994 find mayInstanceOfEReference_class(problem,interpretation,source);
18995 find mayInstanceOfEReference_class(problem,interpretation,target);
18996 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18997 // the upper bound of the multiplicity should be considered.
18998 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
18999 check(numberOfExistingReferences < 1);
19000} or {
19001 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
19002}
19003/**
19004 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
19005 */
19006private pattern mustInRelationeReferenceType_reference_EReference(
19007 problem:LogicProblem, interpretation:PartialInterpretation,
19008 source: DefinedElement, target:DefinedElement)
19009{
19010 find interpretation(problem,interpretation);
19011 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19012 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
19013 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19014 BinaryElementRelationLink.param1(link,source);
19015 BinaryElementRelationLink.param2(link,target);
19016}
19017/**
19018 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
19019 */
19020private pattern mayInRelationeReferenceType_reference_EReference(
19021 problem:LogicProblem, interpretation:PartialInterpretation,
19022 source: DefinedElement, target:DefinedElement)
19023{
19024 find interpretation(problem,interpretation);
19025 // The two endpoint of the link have to exist
19026 find mayExist(problem, interpretation, source);
19027 find mayExist(problem, interpretation, target);
19028 // Type consistency
19029 find mayInstanceOfEReference_class(problem,interpretation,source);
19030 find mayInstanceOfEClass_class(problem,interpretation,target);
19031 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19032 // the upper bound of the multiplicity should be considered.
19033 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
19034 check(numberOfExistingReferences < 1);
19035} or {
19036 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
19037}
19038/**
19039 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
19040 */
19041private pattern mustInRelationeKeys_reference_EReference(
19042 problem:LogicProblem, interpretation:PartialInterpretation,
19043 source: DefinedElement, target:DefinedElement)
19044{
19045 find interpretation(problem,interpretation);
19046 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19047 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
19048 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19049 BinaryElementRelationLink.param1(link,source);
19050 BinaryElementRelationLink.param2(link,target);
19051}
19052/**
19053 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
19054 */
19055private pattern mayInRelationeKeys_reference_EReference(
19056 problem:LogicProblem, interpretation:PartialInterpretation,
19057 source: DefinedElement, target:DefinedElement)
19058{
19059 find interpretation(problem,interpretation);
19060 // The two endpoint of the link have to exist
19061 find mayExist(problem, interpretation, source);
19062 find mayExist(problem, interpretation, target);
19063 // Type consistency
19064 find mayInstanceOfEReference_class(problem,interpretation,source);
19065 find mayInstanceOfEAttribute_class(problem,interpretation,target);
19066} or {
19067 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
19068}
19069/**
19070 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
19071 */
19072private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
19073 problem:LogicProblem, interpretation:PartialInterpretation,
19074 source: DefinedElement, target:DefinedElement)
19075{
19076 find interpretation(problem,interpretation);
19077 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19078 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
19079 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19080 BinaryElementRelationLink.param1(link,source);
19081 BinaryElementRelationLink.param2(link,target);
19082}
19083/**
19084 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
19085 */
19086private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
19087 problem:LogicProblem, interpretation:PartialInterpretation,
19088 source: DefinedElement, target:DefinedElement)
19089{
19090 find interpretation(problem,interpretation);
19091 // The two endpoint of the link have to exist
19092 find mayExist(problem, interpretation, source);
19093 find mayExist(problem, interpretation, target);
19094 // Type consistency
19095 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
19096 find mayInstanceOfEClass_class(problem,interpretation,target);
19097 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19098 // the upper bound of the multiplicity should be considered.
19099 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
19100 check(numberOfExistingReferences < 1);
19101 // The eOpposite of the reference is containment, then a referene cannot be created if
19102 // 1. Multiple parents
19103 neg find mustContains4(problem,interpretation,source,_);
19104 // 2. Circle in the containment hierarchy
19105 neg find mustTransitiveContains(source,target);
19106} or {
19107 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
19108}
19109/**
19110 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
19111 */
19112private pattern mustInRelationeType_reference_ETypedElement(
19113 problem:LogicProblem, interpretation:PartialInterpretation,
19114 source: DefinedElement, target:DefinedElement)
19115{
19116 find interpretation(problem,interpretation);
19117 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19118 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
19119 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19120 BinaryElementRelationLink.param1(link,source);
19121 BinaryElementRelationLink.param2(link,target);
19122}
19123/**
19124 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
19125 */
19126private pattern mayInRelationeType_reference_ETypedElement(
19127 problem:LogicProblem, interpretation:PartialInterpretation,
19128 source: DefinedElement, target:DefinedElement)
19129{
19130 find interpretation(problem,interpretation);
19131 // The two endpoint of the link have to exist
19132 find mayExist(problem, interpretation, source);
19133 find mayExist(problem, interpretation, target);
19134 // Type consistency
19135 find mayInstanceOfETypedElement_class(problem,interpretation,source);
19136 find mayInstanceOfEClassifier_class(problem,interpretation,target);
19137 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19138 // the upper bound of the multiplicity should be considered.
19139 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
19140 check(numberOfExistingReferences < 1);
19141} or {
19142 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
19143}
19144/**
19145 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
19146 */
19147private pattern mustInRelationeGenericType_reference_ETypedElement(
19148 problem:LogicProblem, interpretation:PartialInterpretation,
19149 source: DefinedElement, target:DefinedElement)
19150{
19151 find interpretation(problem,interpretation);
19152 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19153 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
19154 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19155 BinaryElementRelationLink.param1(link,source);
19156 BinaryElementRelationLink.param2(link,target);
19157}
19158/**
19159 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
19160 */
19161private pattern mayInRelationeGenericType_reference_ETypedElement(
19162 problem:LogicProblem, interpretation:PartialInterpretation,
19163 source: DefinedElement, target:DefinedElement)
19164{
19165 find interpretation(problem,interpretation);
19166 // The two endpoint of the link have to exist
19167 find mayExist(problem, interpretation, source);
19168 find mayExist(problem, interpretation, target);
19169 // Type consistency
19170 find mayInstanceOfETypedElement_class(problem,interpretation,source);
19171 find mayInstanceOfEGenericType_class(problem,interpretation,target);
19172 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19173 // the upper bound of the multiplicity should be considered.
19174 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
19175 check(numberOfExistingReferences < 1);
19176 // The reference is containment, then a new reference cannot be create if:
19177 // 1. Multiple parents
19178 neg find mustContains4(problem,interpretation,_,target);
19179 // 2. Circle in the containment hierarchy
19180 neg find mustTransitiveContains(source,target);
19181} or {
19182 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
19183}
19184/**
19185 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
19186 */
19187private pattern mustInRelationeUpperBound_reference_EGenericType(
19188 problem:LogicProblem, interpretation:PartialInterpretation,
19189 source: DefinedElement, target:DefinedElement)
19190{
19191 find interpretation(problem,interpretation);
19192 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19193 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
19194 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19195 BinaryElementRelationLink.param1(link,source);
19196 BinaryElementRelationLink.param2(link,target);
19197}
19198/**
19199 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
19200 */
19201private pattern mayInRelationeUpperBound_reference_EGenericType(
19202 problem:LogicProblem, interpretation:PartialInterpretation,
19203 source: DefinedElement, target:DefinedElement)
19204{
19205 find interpretation(problem,interpretation);
19206 // The two endpoint of the link have to exist
19207 find mayExist(problem, interpretation, source);
19208 find mayExist(problem, interpretation, target);
19209 // Type consistency
19210 find mayInstanceOfEGenericType_class(problem,interpretation,source);
19211 find mayInstanceOfEGenericType_class(problem,interpretation,target);
19212 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19213 // the upper bound of the multiplicity should be considered.
19214 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
19215 check(numberOfExistingReferences < 1);
19216 // The reference is containment, then a new reference cannot be create if:
19217 // 1. Multiple parents
19218 neg find mustContains4(problem,interpretation,_,target);
19219 // 2. Circle in the containment hierarchy
19220 neg find mustTransitiveContains(source,target);
19221} or {
19222 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
19223}
19224/**
19225 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
19226 */
19227private pattern mustInRelationeTypeArguments_reference_EGenericType(
19228 problem:LogicProblem, interpretation:PartialInterpretation,
19229 source: DefinedElement, target:DefinedElement)
19230{
19231 find interpretation(problem,interpretation);
19232 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19233 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
19234 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19235 BinaryElementRelationLink.param1(link,source);
19236 BinaryElementRelationLink.param2(link,target);
19237}
19238/**
19239 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
19240 */
19241private pattern mayInRelationeTypeArguments_reference_EGenericType(
19242 problem:LogicProblem, interpretation:PartialInterpretation,
19243 source: DefinedElement, target:DefinedElement)
19244{
19245 find interpretation(problem,interpretation);
19246 // The two endpoint of the link have to exist
19247 find mayExist(problem, interpretation, source);
19248 find mayExist(problem, interpretation, target);
19249 // Type consistency
19250 find mayInstanceOfEGenericType_class(problem,interpretation,source);
19251 find mayInstanceOfEGenericType_class(problem,interpretation,target);
19252 // The reference is containment, then a new reference cannot be create if:
19253 // 1. Multiple parents
19254 neg find mustContains4(problem,interpretation,_,target);
19255 // 2. Circle in the containment hierarchy
19256 neg find mustTransitiveContains(source,target);
19257} or {
19258 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
19259}
19260/**
19261 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
19262 */
19263private pattern mustInRelationeRawType_reference_EGenericType(
19264 problem:LogicProblem, interpretation:PartialInterpretation,
19265 source: DefinedElement, target:DefinedElement)
19266{
19267 find interpretation(problem,interpretation);
19268 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19269 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
19270 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19271 BinaryElementRelationLink.param1(link,source);
19272 BinaryElementRelationLink.param2(link,target);
19273}
19274/**
19275 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
19276 */
19277private pattern mayInRelationeRawType_reference_EGenericType(
19278 problem:LogicProblem, interpretation:PartialInterpretation,
19279 source: DefinedElement, target:DefinedElement)
19280{
19281 find interpretation(problem,interpretation);
19282 // The two endpoint of the link have to exist
19283 find mayExist(problem, interpretation, source);
19284 find mayExist(problem, interpretation, target);
19285 // Type consistency
19286 find mayInstanceOfEGenericType_class(problem,interpretation,source);
19287 find mayInstanceOfEClassifier_class(problem,interpretation,target);
19288 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19289 // the upper bound of the multiplicity should be considered.
19290 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
19291 check(numberOfExistingReferences < 1);
19292} or {
19293 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
19294}
19295/**
19296 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
19297 */
19298private pattern mustInRelationeLowerBound_reference_EGenericType(
19299 problem:LogicProblem, interpretation:PartialInterpretation,
19300 source: DefinedElement, target:DefinedElement)
19301{
19302 find interpretation(problem,interpretation);
19303 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19304 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
19305 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19306 BinaryElementRelationLink.param1(link,source);
19307 BinaryElementRelationLink.param2(link,target);
19308}
19309/**
19310 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
19311 */
19312private pattern mayInRelationeLowerBound_reference_EGenericType(
19313 problem:LogicProblem, interpretation:PartialInterpretation,
19314 source: DefinedElement, target:DefinedElement)
19315{
19316 find interpretation(problem,interpretation);
19317 // The two endpoint of the link have to exist
19318 find mayExist(problem, interpretation, source);
19319 find mayExist(problem, interpretation, target);
19320 // Type consistency
19321 find mayInstanceOfEGenericType_class(problem,interpretation,source);
19322 find mayInstanceOfEGenericType_class(problem,interpretation,target);
19323 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19324 // the upper bound of the multiplicity should be considered.
19325 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
19326 check(numberOfExistingReferences < 1);
19327 // The reference is containment, then a new reference cannot be create if:
19328 // 1. Multiple parents
19329 neg find mustContains4(problem,interpretation,_,target);
19330 // 2. Circle in the containment hierarchy
19331 neg find mustTransitiveContains(source,target);
19332} or {
19333 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
19334}
19335/**
19336 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
19337 */
19338private pattern mustInRelationeTypeParameter_reference_EGenericType(
19339 problem:LogicProblem, interpretation:PartialInterpretation,
19340 source: DefinedElement, target:DefinedElement)
19341{
19342 find interpretation(problem,interpretation);
19343 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19344 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
19345 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19346 BinaryElementRelationLink.param1(link,source);
19347 BinaryElementRelationLink.param2(link,target);
19348}
19349/**
19350 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
19351 */
19352private pattern mayInRelationeTypeParameter_reference_EGenericType(
19353 problem:LogicProblem, interpretation:PartialInterpretation,
19354 source: DefinedElement, target:DefinedElement)
19355{
19356 find interpretation(problem,interpretation);
19357 // The two endpoint of the link have to exist
19358 find mayExist(problem, interpretation, source);
19359 find mayExist(problem, interpretation, target);
19360 // Type consistency
19361 find mayInstanceOfEGenericType_class(problem,interpretation,source);
19362 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
19363 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19364 // the upper bound of the multiplicity should be considered.
19365 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
19366 check(numberOfExistingReferences < 1);
19367} or {
19368 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
19369}
19370/**
19371 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
19372 */
19373private pattern mustInRelationeClassifier_reference_EGenericType(
19374 problem:LogicProblem, interpretation:PartialInterpretation,
19375 source: DefinedElement, target:DefinedElement)
19376{
19377 find interpretation(problem,interpretation);
19378 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19379 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
19380 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19381 BinaryElementRelationLink.param1(link,source);
19382 BinaryElementRelationLink.param2(link,target);
19383}
19384/**
19385 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
19386 */
19387private pattern mayInRelationeClassifier_reference_EGenericType(
19388 problem:LogicProblem, interpretation:PartialInterpretation,
19389 source: DefinedElement, target:DefinedElement)
19390{
19391 find interpretation(problem,interpretation);
19392 // The two endpoint of the link have to exist
19393 find mayExist(problem, interpretation, source);
19394 find mayExist(problem, interpretation, target);
19395 // Type consistency
19396 find mayInstanceOfEGenericType_class(problem,interpretation,source);
19397 find mayInstanceOfEClassifier_class(problem,interpretation,target);
19398 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19399 // the upper bound of the multiplicity should be considered.
19400 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
19401 check(numberOfExistingReferences < 1);
19402} or {
19403 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
19404}
19405/**
19406 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
19407 */
19408private pattern mustInRelationeBounds_reference_ETypeParameter(
19409 problem:LogicProblem, interpretation:PartialInterpretation,
19410 source: DefinedElement, target:DefinedElement)
19411{
19412 find interpretation(problem,interpretation);
19413 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19414 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
19415 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19416 BinaryElementRelationLink.param1(link,source);
19417 BinaryElementRelationLink.param2(link,target);
19418}
19419/**
19420 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
19421 */
19422private pattern mayInRelationeBounds_reference_ETypeParameter(
19423 problem:LogicProblem, interpretation:PartialInterpretation,
19424 source: DefinedElement, target:DefinedElement)
19425{
19426 find interpretation(problem,interpretation);
19427 // The two endpoint of the link have to exist
19428 find mayExist(problem, interpretation, source);
19429 find mayExist(problem, interpretation, target);
19430 // Type consistency
19431 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
19432 find mayInstanceOfEGenericType_class(problem,interpretation,target);
19433 // The reference is containment, then a new reference cannot be create if:
19434 // 1. Multiple parents
19435 neg find mustContains4(problem,interpretation,_,target);
19436 // 2. Circle in the containment hierarchy
19437 neg find mustTransitiveContains(source,target);
19438} or {
19439 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
19440}
19441/**
19442 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
19443 */
19444private pattern mustInRelationiD_attribute_EAttribute(
19445 problem:LogicProblem, interpretation:PartialInterpretation,
19446 source: DefinedElement, target:DefinedElement)
19447{
19448 find interpretation(problem,interpretation);
19449 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19450 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
19451 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19452 BinaryElementRelationLink.param1(link,source);
19453 BinaryElementRelationLink.param2(link,target);
19454}
19455/**
19456 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
19457 */
19458private pattern mayInRelationiD_attribute_EAttribute(
19459 problem:LogicProblem, interpretation:PartialInterpretation,
19460 source: DefinedElement, target:DefinedElement)
19461{
19462 find interpretation(problem,interpretation);
19463 // The two endpoint of the link have to exist
19464 find mayExist(problem, interpretation, source);
19465 find mayExist(problem, interpretation, target);
19466 // Type consistency
19467 find mayInstanceOfEAttribute_class(problem,interpretation,source);
19468 BooleanElement(target);
19469 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19470 // the upper bound of the multiplicity should be considered.
19471 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
19472 check(numberOfExistingReferences < 1);
19473} or {
19474 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
19475}
19476/**
19477 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
19478 */
19479private pattern mustInRelationsource_attribute_EAnnotation(
19480 problem:LogicProblem, interpretation:PartialInterpretation,
19481 source: DefinedElement, target:DefinedElement)
19482{
19483 find interpretation(problem,interpretation);
19484 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19485 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
19486 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19487 BinaryElementRelationLink.param1(link,source);
19488 BinaryElementRelationLink.param2(link,target);
19489}
19490/**
19491 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
19492 */
19493private pattern mayInRelationsource_attribute_EAnnotation(
19494 problem:LogicProblem, interpretation:PartialInterpretation,
19495 source: DefinedElement, target:DefinedElement)
19496{
19497 find interpretation(problem,interpretation);
19498 // The two endpoint of the link have to exist
19499 find mayExist(problem, interpretation, source);
19500 find mayExist(problem, interpretation, target);
19501 // Type consistency
19502 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
19503 StringElement(target);
19504 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19505 // the upper bound of the multiplicity should be considered.
19506 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
19507 check(numberOfExistingReferences < 1);
19508} or {
19509 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
19510}
19511/**
19512 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
19513 */
19514private pattern mustInRelationabstract_attribute_EClass(
19515 problem:LogicProblem, interpretation:PartialInterpretation,
19516 source: DefinedElement, target:DefinedElement)
19517{
19518 find interpretation(problem,interpretation);
19519 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19520 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
19521 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19522 BinaryElementRelationLink.param1(link,source);
19523 BinaryElementRelationLink.param2(link,target);
19524}
19525/**
19526 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
19527 */
19528private pattern mayInRelationabstract_attribute_EClass(
19529 problem:LogicProblem, interpretation:PartialInterpretation,
19530 source: DefinedElement, target:DefinedElement)
19531{
19532 find interpretation(problem,interpretation);
19533 // The two endpoint of the link have to exist
19534 find mayExist(problem, interpretation, source);
19535 find mayExist(problem, interpretation, target);
19536 // Type consistency
19537 find mayInstanceOfEClass_class(problem,interpretation,source);
19538 BooleanElement(target);
19539 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19540 // the upper bound of the multiplicity should be considered.
19541 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
19542 check(numberOfExistingReferences < 1);
19543} or {
19544 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
19545}
19546/**
19547 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
19548 */
19549private pattern mustInRelationinterface_attribute_EClass(
19550 problem:LogicProblem, interpretation:PartialInterpretation,
19551 source: DefinedElement, target:DefinedElement)
19552{
19553 find interpretation(problem,interpretation);
19554 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19555 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
19556 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19557 BinaryElementRelationLink.param1(link,source);
19558 BinaryElementRelationLink.param2(link,target);
19559}
19560/**
19561 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
19562 */
19563private pattern mayInRelationinterface_attribute_EClass(
19564 problem:LogicProblem, interpretation:PartialInterpretation,
19565 source: DefinedElement, target:DefinedElement)
19566{
19567 find interpretation(problem,interpretation);
19568 // The two endpoint of the link have to exist
19569 find mayExist(problem, interpretation, source);
19570 find mayExist(problem, interpretation, target);
19571 // Type consistency
19572 find mayInstanceOfEClass_class(problem,interpretation,source);
19573 BooleanElement(target);
19574 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19575 // the upper bound of the multiplicity should be considered.
19576 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
19577 check(numberOfExistingReferences < 1);
19578} or {
19579 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
19580}
19581/**
19582 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
19583 */
19584private pattern mustInRelationinstanceClassName_attribute_EClassifier(
19585 problem:LogicProblem, interpretation:PartialInterpretation,
19586 source: DefinedElement, target:DefinedElement)
19587{
19588 find interpretation(problem,interpretation);
19589 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19590 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
19591 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19592 BinaryElementRelationLink.param1(link,source);
19593 BinaryElementRelationLink.param2(link,target);
19594}
19595/**
19596 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
19597 */
19598private pattern mayInRelationinstanceClassName_attribute_EClassifier(
19599 problem:LogicProblem, interpretation:PartialInterpretation,
19600 source: DefinedElement, target:DefinedElement)
19601{
19602 find interpretation(problem,interpretation);
19603 // The two endpoint of the link have to exist
19604 find mayExist(problem, interpretation, source);
19605 find mayExist(problem, interpretation, target);
19606 // Type consistency
19607 find mayInstanceOfEClassifier_class(problem,interpretation,source);
19608 StringElement(target);
19609 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19610 // the upper bound of the multiplicity should be considered.
19611 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
19612 check(numberOfExistingReferences < 1);
19613} or {
19614 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
19615}
19616/**
19617 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
19618 */
19619private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
19620 problem:LogicProblem, interpretation:PartialInterpretation,
19621 source: DefinedElement, target:DefinedElement)
19622{
19623 find interpretation(problem,interpretation);
19624 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19625 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
19626 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19627 BinaryElementRelationLink.param1(link,source);
19628 BinaryElementRelationLink.param2(link,target);
19629}
19630/**
19631 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
19632 */
19633private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
19634 problem:LogicProblem, interpretation:PartialInterpretation,
19635 source: DefinedElement, target:DefinedElement)
19636{
19637 find interpretation(problem,interpretation);
19638 // The two endpoint of the link have to exist
19639 find mayExist(problem, interpretation, source);
19640 find mayExist(problem, interpretation, target);
19641 // Type consistency
19642 find mayInstanceOfEClassifier_class(problem,interpretation,source);
19643 StringElement(target);
19644 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19645 // the upper bound of the multiplicity should be considered.
19646 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
19647 check(numberOfExistingReferences < 1);
19648} or {
19649 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
19650}
19651/**
19652 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
19653 */
19654private pattern mustInRelationserializable_attribute_EDataType(
19655 problem:LogicProblem, interpretation:PartialInterpretation,
19656 source: DefinedElement, target:DefinedElement)
19657{
19658 find interpretation(problem,interpretation);
19659 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19660 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
19661 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19662 BinaryElementRelationLink.param1(link,source);
19663 BinaryElementRelationLink.param2(link,target);
19664}
19665/**
19666 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
19667 */
19668private pattern mayInRelationserializable_attribute_EDataType(
19669 problem:LogicProblem, interpretation:PartialInterpretation,
19670 source: DefinedElement, target:DefinedElement)
19671{
19672 find interpretation(problem,interpretation);
19673 // The two endpoint of the link have to exist
19674 find mayExist(problem, interpretation, source);
19675 find mayExist(problem, interpretation, target);
19676 // Type consistency
19677 find mayInstanceOfEDataType_class(problem,interpretation,source);
19678 BooleanElement(target);
19679 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19680 // the upper bound of the multiplicity should be considered.
19681 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
19682 check(numberOfExistingReferences < 1);
19683} or {
19684 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
19685}
19686/**
19687 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
19688 */
19689private pattern mustInRelationvalue_attribute_EEnumLiteral(
19690 problem:LogicProblem, interpretation:PartialInterpretation,
19691 source: DefinedElement, target:DefinedElement)
19692{
19693 find interpretation(problem,interpretation);
19694 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19695 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
19696 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19697 BinaryElementRelationLink.param1(link,source);
19698 BinaryElementRelationLink.param2(link,target);
19699}
19700/**
19701 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
19702 */
19703private pattern mayInRelationvalue_attribute_EEnumLiteral(
19704 problem:LogicProblem, interpretation:PartialInterpretation,
19705 source: DefinedElement, target:DefinedElement)
19706{
19707 find interpretation(problem,interpretation);
19708 // The two endpoint of the link have to exist
19709 find mayExist(problem, interpretation, source);
19710 find mayExist(problem, interpretation, target);
19711 // Type consistency
19712 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
19713 IntegerElement(target);
19714 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19715 // the upper bound of the multiplicity should be considered.
19716 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
19717 check(numberOfExistingReferences < 1);
19718} or {
19719 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
19720}
19721/**
19722 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
19723 */
19724private pattern mustInRelationliteral_attribute_EEnumLiteral(
19725 problem:LogicProblem, interpretation:PartialInterpretation,
19726 source: DefinedElement, target:DefinedElement)
19727{
19728 find interpretation(problem,interpretation);
19729 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19730 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
19731 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19732 BinaryElementRelationLink.param1(link,source);
19733 BinaryElementRelationLink.param2(link,target);
19734}
19735/**
19736 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
19737 */
19738private pattern mayInRelationliteral_attribute_EEnumLiteral(
19739 problem:LogicProblem, interpretation:PartialInterpretation,
19740 source: DefinedElement, target:DefinedElement)
19741{
19742 find interpretation(problem,interpretation);
19743 // The two endpoint of the link have to exist
19744 find mayExist(problem, interpretation, source);
19745 find mayExist(problem, interpretation, target);
19746 // Type consistency
19747 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
19748 StringElement(target);
19749 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19750 // the upper bound of the multiplicity should be considered.
19751 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
19752 check(numberOfExistingReferences < 1);
19753} or {
19754 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
19755}
19756/**
19757 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
19758 */
19759private pattern mustInRelationname_attribute_ENamedElement(
19760 problem:LogicProblem, interpretation:PartialInterpretation,
19761 source: DefinedElement, target:DefinedElement)
19762{
19763 find interpretation(problem,interpretation);
19764 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19765 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
19766 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19767 BinaryElementRelationLink.param1(link,source);
19768 BinaryElementRelationLink.param2(link,target);
19769}
19770/**
19771 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
19772 */
19773private pattern mayInRelationname_attribute_ENamedElement(
19774 problem:LogicProblem, interpretation:PartialInterpretation,
19775 source: DefinedElement, target:DefinedElement)
19776{
19777 find interpretation(problem,interpretation);
19778 // The two endpoint of the link have to exist
19779 find mayExist(problem, interpretation, source);
19780 find mayExist(problem, interpretation, target);
19781 // Type consistency
19782 find mayInstanceOfENamedElement_class(problem,interpretation,source);
19783 StringElement(target);
19784 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19785 // the upper bound of the multiplicity should be considered.
19786 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
19787 check(numberOfExistingReferences < 1);
19788} or {
19789 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
19790}
19791/**
19792 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
19793 */
19794private pattern mustInRelationnsURI_attribute_EPackage(
19795 problem:LogicProblem, interpretation:PartialInterpretation,
19796 source: DefinedElement, target:DefinedElement)
19797{
19798 find interpretation(problem,interpretation);
19799 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19800 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
19801 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19802 BinaryElementRelationLink.param1(link,source);
19803 BinaryElementRelationLink.param2(link,target);
19804}
19805/**
19806 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
19807 */
19808private pattern mayInRelationnsURI_attribute_EPackage(
19809 problem:LogicProblem, interpretation:PartialInterpretation,
19810 source: DefinedElement, target:DefinedElement)
19811{
19812 find interpretation(problem,interpretation);
19813 // The two endpoint of the link have to exist
19814 find mayExist(problem, interpretation, source);
19815 find mayExist(problem, interpretation, target);
19816 // Type consistency
19817 find mayInstanceOfEPackage_class(problem,interpretation,source);
19818 StringElement(target);
19819 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19820 // the upper bound of the multiplicity should be considered.
19821 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
19822 check(numberOfExistingReferences < 1);
19823} or {
19824 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
19825}
19826/**
19827 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
19828 */
19829private pattern mustInRelationnsPrefix_attribute_EPackage(
19830 problem:LogicProblem, interpretation:PartialInterpretation,
19831 source: DefinedElement, target:DefinedElement)
19832{
19833 find interpretation(problem,interpretation);
19834 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19835 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
19836 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19837 BinaryElementRelationLink.param1(link,source);
19838 BinaryElementRelationLink.param2(link,target);
19839}
19840/**
19841 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
19842 */
19843private pattern mayInRelationnsPrefix_attribute_EPackage(
19844 problem:LogicProblem, interpretation:PartialInterpretation,
19845 source: DefinedElement, target:DefinedElement)
19846{
19847 find interpretation(problem,interpretation);
19848 // The two endpoint of the link have to exist
19849 find mayExist(problem, interpretation, source);
19850 find mayExist(problem, interpretation, target);
19851 // Type consistency
19852 find mayInstanceOfEPackage_class(problem,interpretation,source);
19853 StringElement(target);
19854 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19855 // the upper bound of the multiplicity should be considered.
19856 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
19857 check(numberOfExistingReferences < 1);
19858} or {
19859 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
19860}
19861/**
19862 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
19863 */
19864private pattern mustInRelationcontainment_attribute_EReference(
19865 problem:LogicProblem, interpretation:PartialInterpretation,
19866 source: DefinedElement, target:DefinedElement)
19867{
19868 find interpretation(problem,interpretation);
19869 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19870 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
19871 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19872 BinaryElementRelationLink.param1(link,source);
19873 BinaryElementRelationLink.param2(link,target);
19874}
19875/**
19876 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
19877 */
19878private pattern mayInRelationcontainment_attribute_EReference(
19879 problem:LogicProblem, interpretation:PartialInterpretation,
19880 source: DefinedElement, target:DefinedElement)
19881{
19882 find interpretation(problem,interpretation);
19883 // The two endpoint of the link have to exist
19884 find mayExist(problem, interpretation, source);
19885 find mayExist(problem, interpretation, target);
19886 // Type consistency
19887 find mayInstanceOfEReference_class(problem,interpretation,source);
19888 BooleanElement(target);
19889 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19890 // the upper bound of the multiplicity should be considered.
19891 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
19892 check(numberOfExistingReferences < 1);
19893} or {
19894 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
19895}
19896/**
19897 * Matcher for detecting tuples t where []container attribute EReference(source,target)
19898 */
19899private pattern mustInRelationcontainer_attribute_EReference(
19900 problem:LogicProblem, interpretation:PartialInterpretation,
19901 source: DefinedElement, target:DefinedElement)
19902{
19903 find interpretation(problem,interpretation);
19904 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19905 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
19906 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19907 BinaryElementRelationLink.param1(link,source);
19908 BinaryElementRelationLink.param2(link,target);
19909}
19910/**
19911 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
19912 */
19913private pattern mayInRelationcontainer_attribute_EReference(
19914 problem:LogicProblem, interpretation:PartialInterpretation,
19915 source: DefinedElement, target:DefinedElement)
19916{
19917 find interpretation(problem,interpretation);
19918 // The two endpoint of the link have to exist
19919 find mayExist(problem, interpretation, source);
19920 find mayExist(problem, interpretation, target);
19921 // Type consistency
19922 find mayInstanceOfEReference_class(problem,interpretation,source);
19923 BooleanElement(target);
19924 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19925 // the upper bound of the multiplicity should be considered.
19926 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
19927 check(numberOfExistingReferences < 1);
19928} or {
19929 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
19930}
19931/**
19932 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
19933 */
19934private pattern mustInRelationresolveProxies_attribute_EReference(
19935 problem:LogicProblem, interpretation:PartialInterpretation,
19936 source: DefinedElement, target:DefinedElement)
19937{
19938 find interpretation(problem,interpretation);
19939 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19940 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
19941 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19942 BinaryElementRelationLink.param1(link,source);
19943 BinaryElementRelationLink.param2(link,target);
19944}
19945/**
19946 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
19947 */
19948private pattern mayInRelationresolveProxies_attribute_EReference(
19949 problem:LogicProblem, interpretation:PartialInterpretation,
19950 source: DefinedElement, target:DefinedElement)
19951{
19952 find interpretation(problem,interpretation);
19953 // The two endpoint of the link have to exist
19954 find mayExist(problem, interpretation, source);
19955 find mayExist(problem, interpretation, target);
19956 // Type consistency
19957 find mayInstanceOfEReference_class(problem,interpretation,source);
19958 BooleanElement(target);
19959 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19960 // the upper bound of the multiplicity should be considered.
19961 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
19962 check(numberOfExistingReferences < 1);
19963} or {
19964 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
19965}
19966/**
19967 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
19968 */
19969private pattern mustInRelationchangeable_attribute_EStructuralFeature(
19970 problem:LogicProblem, interpretation:PartialInterpretation,
19971 source: DefinedElement, target:DefinedElement)
19972{
19973 find interpretation(problem,interpretation);
19974 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19975 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
19976 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19977 BinaryElementRelationLink.param1(link,source);
19978 BinaryElementRelationLink.param2(link,target);
19979}
19980/**
19981 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
19982 */
19983private pattern mayInRelationchangeable_attribute_EStructuralFeature(
19984 problem:LogicProblem, interpretation:PartialInterpretation,
19985 source: DefinedElement, target:DefinedElement)
19986{
19987 find interpretation(problem,interpretation);
19988 // The two endpoint of the link have to exist
19989 find mayExist(problem, interpretation, source);
19990 find mayExist(problem, interpretation, target);
19991 // Type consistency
19992 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
19993 BooleanElement(target);
19994 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19995 // the upper bound of the multiplicity should be considered.
19996 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
19997 check(numberOfExistingReferences < 1);
19998} or {
19999 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
20000}
20001/**
20002 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
20003 */
20004private pattern mustInRelationvolatile_attribute_EStructuralFeature(
20005 problem:LogicProblem, interpretation:PartialInterpretation,
20006 source: DefinedElement, target:DefinedElement)
20007{
20008 find interpretation(problem,interpretation);
20009 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20010 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
20011 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20012 BinaryElementRelationLink.param1(link,source);
20013 BinaryElementRelationLink.param2(link,target);
20014}
20015/**
20016 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
20017 */
20018private pattern mayInRelationvolatile_attribute_EStructuralFeature(
20019 problem:LogicProblem, interpretation:PartialInterpretation,
20020 source: DefinedElement, target:DefinedElement)
20021{
20022 find interpretation(problem,interpretation);
20023 // The two endpoint of the link have to exist
20024 find mayExist(problem, interpretation, source);
20025 find mayExist(problem, interpretation, target);
20026 // Type consistency
20027 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
20028 BooleanElement(target);
20029 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20030 // the upper bound of the multiplicity should be considered.
20031 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
20032 check(numberOfExistingReferences < 1);
20033} or {
20034 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
20035}
20036/**
20037 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
20038 */
20039private pattern mustInRelationtransient_attribute_EStructuralFeature(
20040 problem:LogicProblem, interpretation:PartialInterpretation,
20041 source: DefinedElement, target:DefinedElement)
20042{
20043 find interpretation(problem,interpretation);
20044 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20045 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
20046 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20047 BinaryElementRelationLink.param1(link,source);
20048 BinaryElementRelationLink.param2(link,target);
20049}
20050/**
20051 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
20052 */
20053private pattern mayInRelationtransient_attribute_EStructuralFeature(
20054 problem:LogicProblem, interpretation:PartialInterpretation,
20055 source: DefinedElement, target:DefinedElement)
20056{
20057 find interpretation(problem,interpretation);
20058 // The two endpoint of the link have to exist
20059 find mayExist(problem, interpretation, source);
20060 find mayExist(problem, interpretation, target);
20061 // Type consistency
20062 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
20063 BooleanElement(target);
20064 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20065 // the upper bound of the multiplicity should be considered.
20066 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
20067 check(numberOfExistingReferences < 1);
20068} or {
20069 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
20070}
20071/**
20072 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
20073 */
20074private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
20075 problem:LogicProblem, interpretation:PartialInterpretation,
20076 source: DefinedElement, target:DefinedElement)
20077{
20078 find interpretation(problem,interpretation);
20079 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20080 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
20081 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20082 BinaryElementRelationLink.param1(link,source);
20083 BinaryElementRelationLink.param2(link,target);
20084}
20085/**
20086 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
20087 */
20088private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
20089 problem:LogicProblem, interpretation:PartialInterpretation,
20090 source: DefinedElement, target:DefinedElement)
20091{
20092 find interpretation(problem,interpretation);
20093 // The two endpoint of the link have to exist
20094 find mayExist(problem, interpretation, source);
20095 find mayExist(problem, interpretation, target);
20096 // Type consistency
20097 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
20098 StringElement(target);
20099 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20100 // the upper bound of the multiplicity should be considered.
20101 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
20102 check(numberOfExistingReferences < 1);
20103} or {
20104 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
20105}
20106/**
20107 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
20108 */
20109private pattern mustInRelationunsettable_attribute_EStructuralFeature(
20110 problem:LogicProblem, interpretation:PartialInterpretation,
20111 source: DefinedElement, target:DefinedElement)
20112{
20113 find interpretation(problem,interpretation);
20114 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20115 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
20116 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20117 BinaryElementRelationLink.param1(link,source);
20118 BinaryElementRelationLink.param2(link,target);
20119}
20120/**
20121 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
20122 */
20123private pattern mayInRelationunsettable_attribute_EStructuralFeature(
20124 problem:LogicProblem, interpretation:PartialInterpretation,
20125 source: DefinedElement, target:DefinedElement)
20126{
20127 find interpretation(problem,interpretation);
20128 // The two endpoint of the link have to exist
20129 find mayExist(problem, interpretation, source);
20130 find mayExist(problem, interpretation, target);
20131 // Type consistency
20132 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
20133 BooleanElement(target);
20134 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20135 // the upper bound of the multiplicity should be considered.
20136 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
20137 check(numberOfExistingReferences < 1);
20138} or {
20139 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
20140}
20141/**
20142 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
20143 */
20144private pattern mustInRelationderived_attribute_EStructuralFeature(
20145 problem:LogicProblem, interpretation:PartialInterpretation,
20146 source: DefinedElement, target:DefinedElement)
20147{
20148 find interpretation(problem,interpretation);
20149 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20150 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
20151 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20152 BinaryElementRelationLink.param1(link,source);
20153 BinaryElementRelationLink.param2(link,target);
20154}
20155/**
20156 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
20157 */
20158private pattern mayInRelationderived_attribute_EStructuralFeature(
20159 problem:LogicProblem, interpretation:PartialInterpretation,
20160 source: DefinedElement, target:DefinedElement)
20161{
20162 find interpretation(problem,interpretation);
20163 // The two endpoint of the link have to exist
20164 find mayExist(problem, interpretation, source);
20165 find mayExist(problem, interpretation, target);
20166 // Type consistency
20167 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
20168 BooleanElement(target);
20169 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20170 // the upper bound of the multiplicity should be considered.
20171 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
20172 check(numberOfExistingReferences < 1);
20173} or {
20174 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
20175}
20176/**
20177 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
20178 */
20179private pattern mustInRelationordered_attribute_ETypedElement(
20180 problem:LogicProblem, interpretation:PartialInterpretation,
20181 source: DefinedElement, target:DefinedElement)
20182{
20183 find interpretation(problem,interpretation);
20184 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20185 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
20186 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20187 BinaryElementRelationLink.param1(link,source);
20188 BinaryElementRelationLink.param2(link,target);
20189}
20190/**
20191 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
20192 */
20193private pattern mayInRelationordered_attribute_ETypedElement(
20194 problem:LogicProblem, interpretation:PartialInterpretation,
20195 source: DefinedElement, target:DefinedElement)
20196{
20197 find interpretation(problem,interpretation);
20198 // The two endpoint of the link have to exist
20199 find mayExist(problem, interpretation, source);
20200 find mayExist(problem, interpretation, target);
20201 // Type consistency
20202 find mayInstanceOfETypedElement_class(problem,interpretation,source);
20203 BooleanElement(target);
20204 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20205 // the upper bound of the multiplicity should be considered.
20206 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
20207 check(numberOfExistingReferences < 1);
20208} or {
20209 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
20210}
20211/**
20212 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
20213 */
20214private pattern mustInRelationunique_attribute_ETypedElement(
20215 problem:LogicProblem, interpretation:PartialInterpretation,
20216 source: DefinedElement, target:DefinedElement)
20217{
20218 find interpretation(problem,interpretation);
20219 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20220 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
20221 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20222 BinaryElementRelationLink.param1(link,source);
20223 BinaryElementRelationLink.param2(link,target);
20224}
20225/**
20226 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
20227 */
20228private pattern mayInRelationunique_attribute_ETypedElement(
20229 problem:LogicProblem, interpretation:PartialInterpretation,
20230 source: DefinedElement, target:DefinedElement)
20231{
20232 find interpretation(problem,interpretation);
20233 // The two endpoint of the link have to exist
20234 find mayExist(problem, interpretation, source);
20235 find mayExist(problem, interpretation, target);
20236 // Type consistency
20237 find mayInstanceOfETypedElement_class(problem,interpretation,source);
20238 BooleanElement(target);
20239 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20240 // the upper bound of the multiplicity should be considered.
20241 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
20242 check(numberOfExistingReferences < 1);
20243} or {
20244 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
20245}
20246/**
20247 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
20248 */
20249private pattern mustInRelationlowerBound_attribute_ETypedElement(
20250 problem:LogicProblem, interpretation:PartialInterpretation,
20251 source: DefinedElement, target:DefinedElement)
20252{
20253 find interpretation(problem,interpretation);
20254 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20255 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
20256 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20257 BinaryElementRelationLink.param1(link,source);
20258 BinaryElementRelationLink.param2(link,target);
20259}
20260/**
20261 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
20262 */
20263private pattern mayInRelationlowerBound_attribute_ETypedElement(
20264 problem:LogicProblem, interpretation:PartialInterpretation,
20265 source: DefinedElement, target:DefinedElement)
20266{
20267 find interpretation(problem,interpretation);
20268 // The two endpoint of the link have to exist
20269 find mayExist(problem, interpretation, source);
20270 find mayExist(problem, interpretation, target);
20271 // Type consistency
20272 find mayInstanceOfETypedElement_class(problem,interpretation,source);
20273 IntegerElement(target);
20274 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20275 // the upper bound of the multiplicity should be considered.
20276 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
20277 check(numberOfExistingReferences < 1);
20278} or {
20279 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
20280}
20281/**
20282 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
20283 */
20284private pattern mustInRelationupperBound_attribute_ETypedElement(
20285 problem:LogicProblem, interpretation:PartialInterpretation,
20286 source: DefinedElement, target:DefinedElement)
20287{
20288 find interpretation(problem,interpretation);
20289 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20290 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
20291 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20292 BinaryElementRelationLink.param1(link,source);
20293 BinaryElementRelationLink.param2(link,target);
20294}
20295/**
20296 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
20297 */
20298private pattern mayInRelationupperBound_attribute_ETypedElement(
20299 problem:LogicProblem, interpretation:PartialInterpretation,
20300 source: DefinedElement, target:DefinedElement)
20301{
20302 find interpretation(problem,interpretation);
20303 // The two endpoint of the link have to exist
20304 find mayExist(problem, interpretation, source);
20305 find mayExist(problem, interpretation, target);
20306 // Type consistency
20307 find mayInstanceOfETypedElement_class(problem,interpretation,source);
20308 IntegerElement(target);
20309 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20310 // the upper bound of the multiplicity should be considered.
20311 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
20312 check(numberOfExistingReferences < 1);
20313} or {
20314 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
20315}
20316/**
20317 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
20318 */
20319private pattern mustInRelationmany_attribute_ETypedElement(
20320 problem:LogicProblem, interpretation:PartialInterpretation,
20321 source: DefinedElement, target:DefinedElement)
20322{
20323 find interpretation(problem,interpretation);
20324 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20325 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
20326 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20327 BinaryElementRelationLink.param1(link,source);
20328 BinaryElementRelationLink.param2(link,target);
20329}
20330/**
20331 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
20332 */
20333private pattern mayInRelationmany_attribute_ETypedElement(
20334 problem:LogicProblem, interpretation:PartialInterpretation,
20335 source: DefinedElement, target:DefinedElement)
20336{
20337 find interpretation(problem,interpretation);
20338 // The two endpoint of the link have to exist
20339 find mayExist(problem, interpretation, source);
20340 find mayExist(problem, interpretation, target);
20341 // Type consistency
20342 find mayInstanceOfETypedElement_class(problem,interpretation,source);
20343 BooleanElement(target);
20344 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20345 // the upper bound of the multiplicity should be considered.
20346 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
20347 check(numberOfExistingReferences < 1);
20348} or {
20349 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
20350}
20351/**
20352 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
20353 */
20354private pattern mustInRelationrequired_attribute_ETypedElement(
20355 problem:LogicProblem, interpretation:PartialInterpretation,
20356 source: DefinedElement, target:DefinedElement)
20357{
20358 find interpretation(problem,interpretation);
20359 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20360 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
20361 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20362 BinaryElementRelationLink.param1(link,source);
20363 BinaryElementRelationLink.param2(link,target);
20364}
20365/**
20366 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
20367 */
20368private pattern mayInRelationrequired_attribute_ETypedElement(
20369 problem:LogicProblem, interpretation:PartialInterpretation,
20370 source: DefinedElement, target:DefinedElement)
20371{
20372 find interpretation(problem,interpretation);
20373 // The two endpoint of the link have to exist
20374 find mayExist(problem, interpretation, source);
20375 find mayExist(problem, interpretation, target);
20376 // Type consistency
20377 find mayInstanceOfETypedElement_class(problem,interpretation,source);
20378 BooleanElement(target);
20379 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20380 // the upper bound of the multiplicity should be considered.
20381 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
20382 check(numberOfExistingReferences < 1);
20383} or {
20384 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
20385}
20386/**
20387 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
20388 */
20389private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
20390 problem:LogicProblem, interpretation:PartialInterpretation,
20391 source: DefinedElement, target:DefinedElement)
20392{
20393 find interpretation(problem,interpretation);
20394 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20395 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
20396 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20397 BinaryElementRelationLink.param1(link,source);
20398 BinaryElementRelationLink.param2(link,target);
20399}
20400/**
20401 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
20402 */
20403private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
20404 problem:LogicProblem, interpretation:PartialInterpretation,
20405 source: DefinedElement, target:DefinedElement)
20406{
20407 find interpretation(problem,interpretation);
20408 // The two endpoint of the link have to exist
20409 find mayExist(problem, interpretation, source);
20410 find mayExist(problem, interpretation, target);
20411 // Type consistency
20412 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
20413 StringElement(target);
20414 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20415 // the upper bound of the multiplicity should be considered.
20416 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
20417 check(numberOfExistingReferences < 1);
20418} or {
20419 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
20420}
20421/**
20422 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
20423 */
20424private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
20425 problem:LogicProblem, interpretation:PartialInterpretation,
20426 source: DefinedElement, target:DefinedElement)
20427{
20428 find interpretation(problem,interpretation);
20429 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20430 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
20431 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20432 BinaryElementRelationLink.param1(link,source);
20433 BinaryElementRelationLink.param2(link,target);
20434}
20435/**
20436 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
20437 */
20438private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
20439 problem:LogicProblem, interpretation:PartialInterpretation,
20440 source: DefinedElement, target:DefinedElement)
20441{
20442 find interpretation(problem,interpretation);
20443 // The two endpoint of the link have to exist
20444 find mayExist(problem, interpretation, source);
20445 find mayExist(problem, interpretation, target);
20446 // Type consistency
20447 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
20448 StringElement(target);
20449 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20450 // the upper bound of the multiplicity should be considered.
20451 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
20452 check(numberOfExistingReferences < 1);
20453} or {
20454 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
20455}
20456
20457//////////
20458// 1.3 Relation Definition Indexers
20459//////////
20460
20461//////////
20462// 1.4 Containment Indexer
20463//////////
20464private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
20465 find mustContains4(_,_,source,target);
20466}
20467
20468private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
20469 source: DefinedElement, target: DefinedElement)
20470 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
20471
20472 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
20473
20474 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
20475
20476 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
20477
20478 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
20479
20480 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
20481
20482 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
20483
20484 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
20485
20486 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
20487
20488 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
20489
20490 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
20491
20492 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
20493
20494 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
20495
20496 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
20497
20498 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
20499
20500 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
20501
20502 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
20503
20504 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
20505
20506private pattern mustTransitiveContains(source,target) {
20507 find mustContains2+(source,target);
20508}
20509
20510//////////
20511// 2. Invalidation Indexers
20512//////////
20513// 2.1 Invalidated by WF Queries
20514//////////
20515
20516//////////
20517// 3. Unfinishedness Indexers
20518//////////
20519// 3.1 Unfinishedness Measured by Multiplicity
20520//////////
20521pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
20522 find interpretation(problem,interpretation);
20523 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20524 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
20525 find mustInstanceOfEAttribute_class(problem,interpretation,object);
20526 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
20527 check(numberOfExistingReferences < 1);
20528 missingMultiplicity == eval(1-numberOfExistingReferences);
20529}
20530pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
20531 find interpretation(problem,interpretation);
20532 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20533 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
20534 find mustInstanceOfEReference_class(problem,interpretation,object);
20535 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
20536 check(numberOfExistingReferences < 1);
20537 missingMultiplicity == eval(1-numberOfExistingReferences);
20538}
20539pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
20540 find interpretation(problem,interpretation);
20541 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20542 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
20543 find mustInstanceOfEGenericType_class(problem,interpretation,object);
20544 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
20545 check(numberOfExistingReferences < 1);
20546 missingMultiplicity == eval(1-numberOfExistingReferences);
20547}
20548
20549//////////
20550// 3.2 Unfinishedness Measured by WF Queries
20551//////////
20552
20553//////////
20554// 4. Refinement Indexers
20555//////////
20556// 4.1 Object constructors
20557//////////
20558private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
20559{
20560 find interpretation(problem,interpretation);
20561 find mustInstanceOfEEnum_class(problem,interpretation,root);
20562 find mustExist(problem, interpretation, root);
20563}or{
20564 find interpretation(problem,interpretation);
20565 find mustInstanceOfENamedElement_class(problem,interpretation,root);
20566 find mustExist(problem, interpretation, root);
20567}or{
20568 find interpretation(problem,interpretation);
20569 find mustInstanceOfEClassifier_class(problem,interpretation,root);
20570 find mustExist(problem, interpretation, root);
20571}or{
20572 find interpretation(problem,interpretation);
20573 find mustInstanceOfEDataType_class(problem,interpretation,root);
20574 find mustExist(problem, interpretation, root);
20575}or{
20576 find interpretation(problem,interpretation);
20577 find mustInstanceOfEClass_class(problem,interpretation,root);
20578 find mustExist(problem, interpretation, root);
20579}or{
20580 find interpretation(problem,interpretation);
20581 find mustInstanceOfEGenericType_class(problem,interpretation,root);
20582 find mustExist(problem, interpretation, root);
20583}or{
20584 find interpretation(problem,interpretation);
20585 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
20586 find mustExist(problem, interpretation, root);
20587}or{
20588 find interpretation(problem,interpretation);
20589 find mustInstanceOfEReference_class(problem,interpretation,root);
20590 find mustExist(problem, interpretation, root);
20591}or{
20592 find interpretation(problem,interpretation);
20593 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
20594 find mustExist(problem, interpretation, root);
20595}or{
20596 find interpretation(problem,interpretation);
20597 find mustInstanceOfEModelElement_class(problem,interpretation,root);
20598 find mustExist(problem, interpretation, root);
20599}or{
20600 find interpretation(problem,interpretation);
20601 find mustInstanceOfEPackage_class(problem,interpretation,root);
20602 find mustExist(problem, interpretation, root);
20603}or{
20604 find interpretation(problem,interpretation);
20605 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
20606 find mustExist(problem, interpretation, root);
20607}or{
20608 find interpretation(problem,interpretation);
20609 find mustInstanceOfEOperation_class(problem,interpretation,root);
20610 find mustExist(problem, interpretation, root);
20611}or{
20612 find interpretation(problem,interpretation);
20613 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
20614 find mustExist(problem, interpretation, root);
20615}or{
20616 find interpretation(problem,interpretation);
20617 find mustInstanceOfEParameter_class(problem,interpretation,root);
20618 find mustExist(problem, interpretation, root);
20619}or{
20620 find interpretation(problem,interpretation);
20621 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
20622 find mustExist(problem, interpretation, root);
20623}or{
20624 find interpretation(problem,interpretation);
20625 find mustInstanceOfEAttribute_class(problem,interpretation,root);
20626 find mustExist(problem, interpretation, root);
20627}or{
20628 find interpretation(problem,interpretation);
20629 find mustInstanceOfETypedElement_class(problem,interpretation,root);
20630 find mustExist(problem, interpretation, root);
20631}or{
20632 find interpretation(problem,interpretation);
20633 find mustInstanceOfEObject_class(problem,interpretation,root);
20634 find mustExist(problem, interpretation, root);
20635}or{
20636 find interpretation(problem,interpretation);
20637 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
20638 find mustExist(problem, interpretation, root);
20639}or{
20640 find interpretation(problem,interpretation);
20641 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
20642 find mustExist(problem, interpretation, root);
20643}or{
20644 find interpretation(problem,interpretation);
20645 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
20646 find mustExist(problem, interpretation, root);
20647}or{
20648 find interpretation(problem,interpretation);
20649 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
20650 find mustExist(problem, interpretation, root);
20651}or{
20652 find interpretation(problem,interpretation);
20653 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
20654 find mustExist(problem, interpretation, root);
20655}or{
20656 find interpretation(problem,interpretation);
20657 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
20658 find mustExist(problem, interpretation, root);
20659}
20660pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
20661 problem:LogicProblem, interpretation:PartialInterpretation,
20662 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20663 container:DefinedElement)
20664{
20665 find interpretation(problem,interpretation);
20666 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20667 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
20668 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20669 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
20670 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20671 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
20672 find mustInstanceOfEPackage_class(problem,interpretation,container);
20673 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
20674 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
20675 find mustExist(problem, interpretation, container);
20676 neg find mustExist(problem, interpretation, newObject);
20677}
20678pattern createObject_EDataType_class(
20679 problem:LogicProblem, interpretation:PartialInterpretation,
20680 typeInterpretation:PartialComplexTypeInterpretation)
20681{
20682 find interpretation(problem,interpretation);
20683 neg find hasElementInContainment(problem,interpretation);
20684 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20685 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
20686 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
20687 find mayExist(problem, interpretation, newObject);
20688 neg find mustExist(problem, interpretation, newObject);
20689}
20690pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
20691 problem:LogicProblem, interpretation:PartialInterpretation,
20692 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20693 container:DefinedElement)
20694{
20695 find interpretation(problem,interpretation);
20696 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20697 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
20698 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20699 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
20700 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20701 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
20702 find mustInstanceOfEPackage_class(problem,interpretation,container);
20703 find mayInstanceOfEClass_class(problem,interpretation,newObject);
20704 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
20705 find mustExist(problem, interpretation, container);
20706 neg find mustExist(problem, interpretation, newObject);
20707}
20708pattern createObject_EClass_class(
20709 problem:LogicProblem, interpretation:PartialInterpretation,
20710 typeInterpretation:PartialComplexTypeInterpretation)
20711{
20712 find interpretation(problem,interpretation);
20713 neg find hasElementInContainment(problem,interpretation);
20714 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20715 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
20716 find mayInstanceOfEClass_class(problem,interpretation,newObject);
20717 find mayExist(problem, interpretation, newObject);
20718 neg find mustExist(problem, interpretation, newObject);
20719}
20720pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
20721 problem:LogicProblem, interpretation:PartialInterpretation,
20722 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20723 container:DefinedElement)
20724{
20725 find interpretation(problem,interpretation);
20726 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20727 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
20728 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20729 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
20730 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20731 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
20732 find mustInstanceOfEEnum_class(problem,interpretation,container);
20733 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
20734 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
20735 find mustExist(problem, interpretation, container);
20736 neg find mustExist(problem, interpretation, newObject);
20737}
20738pattern createObject_EEnumLiteral_class(
20739 problem:LogicProblem, interpretation:PartialInterpretation,
20740 typeInterpretation:PartialComplexTypeInterpretation)
20741{
20742 find interpretation(problem,interpretation);
20743 neg find hasElementInContainment(problem,interpretation);
20744 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20745 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
20746 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
20747 find mayExist(problem, interpretation, newObject);
20748 neg find mustExist(problem, interpretation, newObject);
20749}
20750pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
20751 problem:LogicProblem, interpretation:PartialInterpretation,
20752 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20753 container:DefinedElement)
20754{
20755 find interpretation(problem,interpretation);
20756 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20757 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
20758 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20759 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
20760 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20761 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
20762 find mustInstanceOfEModelElement_class(problem,interpretation,container);
20763 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
20764 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
20765 find mustExist(problem, interpretation, container);
20766 neg find mustExist(problem, interpretation, newObject);
20767}
20768pattern createObject_EAnnotation_class(
20769 problem:LogicProblem, interpretation:PartialInterpretation,
20770 typeInterpretation:PartialComplexTypeInterpretation)
20771{
20772 find interpretation(problem,interpretation);
20773 neg find hasElementInContainment(problem,interpretation);
20774 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20775 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
20776 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
20777 find mayExist(problem, interpretation, newObject);
20778 neg find mustExist(problem, interpretation, newObject);
20779}
20780pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
20781 problem:LogicProblem, interpretation:PartialInterpretation,
20782 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20783 container:DefinedElement)
20784{
20785 find interpretation(problem,interpretation);
20786 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20787 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
20788 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20789 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
20790 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20791 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
20792 find mustInstanceOfEPackage_class(problem,interpretation,container);
20793 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
20794 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
20795 find mustExist(problem, interpretation, container);
20796 neg find mustExist(problem, interpretation, newObject);
20797}
20798pattern createObject_EPackage_class_UndefinedPart(
20799 problem:LogicProblem, interpretation:PartialInterpretation,
20800 typeInterpretation:PartialComplexTypeInterpretation)
20801{
20802 find interpretation(problem,interpretation);
20803 neg find hasElementInContainment(problem,interpretation);
20804 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20805 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
20806 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
20807 find mayExist(problem, interpretation, newObject);
20808 neg find mustExist(problem, interpretation, newObject);
20809}
20810pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
20811 problem:LogicProblem, interpretation:PartialInterpretation,
20812 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20813 container:DefinedElement)
20814{
20815 find interpretation(problem,interpretation);
20816 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20817 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
20818 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20819 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
20820 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20821 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
20822 find mustInstanceOfEClass_class(problem,interpretation,container);
20823 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
20824 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
20825 find mustExist(problem, interpretation, container);
20826 neg find mustExist(problem, interpretation, newObject);
20827}
20828pattern createObject_EOperation_class(
20829 problem:LogicProblem, interpretation:PartialInterpretation,
20830 typeInterpretation:PartialComplexTypeInterpretation)
20831{
20832 find interpretation(problem,interpretation);
20833 neg find hasElementInContainment(problem,interpretation);
20834 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20835 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
20836 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
20837 find mayExist(problem, interpretation, newObject);
20838 neg find mustExist(problem, interpretation, newObject);
20839}
20840pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
20841 problem:LogicProblem, interpretation:PartialInterpretation,
20842 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20843 container:DefinedElement)
20844{
20845 find interpretation(problem,interpretation);
20846 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20847 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
20848 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20849 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
20850 find mustInstanceOfEClass_class(problem,interpretation,container);
20851 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
20852 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
20853 find mustExist(problem, interpretation, container);
20854 neg find mustExist(problem, interpretation, newObject);
20855}
20856pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
20857 problem:LogicProblem, interpretation:PartialInterpretation,
20858 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20859 container:DefinedElement)
20860{
20861 find interpretation(problem,interpretation);
20862 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20863 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
20864 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20865 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
20866 find mustInstanceOfEOperation_class(problem,interpretation,container);
20867 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
20868 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
20869 find mustExist(problem, interpretation, container);
20870 neg find mustExist(problem, interpretation, newObject);
20871}
20872pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
20873 problem:LogicProblem, interpretation:PartialInterpretation,
20874 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20875 container:DefinedElement)
20876{
20877 find interpretation(problem,interpretation);
20878 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20879 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
20880 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20881 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
20882 find mustInstanceOfETypedElement_class(problem,interpretation,container);
20883 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
20884 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
20885 find mustExist(problem, interpretation, container);
20886 neg find mustExist(problem, interpretation, newObject);
20887}
20888pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
20889 problem:LogicProblem, interpretation:PartialInterpretation,
20890 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20891 container:DefinedElement)
20892{
20893 find interpretation(problem,interpretation);
20894 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20895 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
20896 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20897 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
20898 find mustInstanceOfEGenericType_class(problem,interpretation,container);
20899 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
20900 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
20901 find mustExist(problem, interpretation, container);
20902 neg find mustExist(problem, interpretation, newObject);
20903}
20904pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
20905 problem:LogicProblem, interpretation:PartialInterpretation,
20906 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20907 container:DefinedElement)
20908{
20909 find interpretation(problem,interpretation);
20910 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20911 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
20912 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20913 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
20914 find mustInstanceOfEGenericType_class(problem,interpretation,container);
20915 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
20916 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
20917 find mustExist(problem, interpretation, container);
20918 neg find mustExist(problem, interpretation, newObject);
20919}
20920pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
20921 problem:LogicProblem, interpretation:PartialInterpretation,
20922 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20923 container:DefinedElement)
20924{
20925 find interpretation(problem,interpretation);
20926 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20927 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
20928 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20929 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
20930 find mustInstanceOfEGenericType_class(problem,interpretation,container);
20931 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
20932 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
20933 find mustExist(problem, interpretation, container);
20934 neg find mustExist(problem, interpretation, newObject);
20935}
20936pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
20937 problem:LogicProblem, interpretation:PartialInterpretation,
20938 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20939 container:DefinedElement)
20940{
20941 find interpretation(problem,interpretation);
20942 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20943 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
20944 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20945 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
20946 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
20947 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
20948 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
20949 find mustExist(problem, interpretation, container);
20950 neg find mustExist(problem, interpretation, newObject);
20951}
20952pattern createObject_EGenericType_class(
20953 problem:LogicProblem, interpretation:PartialInterpretation,
20954 typeInterpretation:PartialComplexTypeInterpretation)
20955{
20956 find interpretation(problem,interpretation);
20957 neg find hasElementInContainment(problem,interpretation);
20958 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20959 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
20960 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
20961 find mayExist(problem, interpretation, newObject);
20962 neg find mustExist(problem, interpretation, newObject);
20963}
20964pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
20965 problem:LogicProblem, interpretation:PartialInterpretation,
20966 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20967 container:DefinedElement)
20968{
20969 find interpretation(problem,interpretation);
20970 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20971 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
20972 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20973 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
20974 find mustInstanceOfEClassifier_class(problem,interpretation,container);
20975 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
20976 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
20977 find mustExist(problem, interpretation, container);
20978 neg find mustExist(problem, interpretation, newObject);
20979}
20980pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
20981 problem:LogicProblem, interpretation:PartialInterpretation,
20982 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20983 container:DefinedElement)
20984{
20985 find interpretation(problem,interpretation);
20986 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20987 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
20988 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20989 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
20990 find mustInstanceOfEOperation_class(problem,interpretation,container);
20991 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
20992 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
20993 find mustExist(problem, interpretation, container);
20994 neg find mustExist(problem, interpretation, newObject);
20995}
20996pattern createObject_ETypeParameter_class(
20997 problem:LogicProblem, interpretation:PartialInterpretation,
20998 typeInterpretation:PartialComplexTypeInterpretation)
20999{
21000 find interpretation(problem,interpretation);
21001 neg find hasElementInContainment(problem,interpretation);
21002 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21003 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
21004 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
21005 find mayExist(problem, interpretation, newObject);
21006 neg find mustExist(problem, interpretation, newObject);
21007}
21008pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
21009 problem:LogicProblem, interpretation:PartialInterpretation,
21010 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
21011 container:DefinedElement)
21012{
21013 find interpretation(problem,interpretation);
21014 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21015 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
21016 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
21017 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
21018 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
21019 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
21020 find mustInstanceOfEClass_class(problem,interpretation,container);
21021 find mayInstanceOfEReference_class(problem,interpretation,newObject);
21022 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
21023 find mustExist(problem, interpretation, container);
21024 neg find mustExist(problem, interpretation, newObject);
21025}
21026pattern createObject_EReference_class(
21027 problem:LogicProblem, interpretation:PartialInterpretation,
21028 typeInterpretation:PartialComplexTypeInterpretation)
21029{
21030 find interpretation(problem,interpretation);
21031 neg find hasElementInContainment(problem,interpretation);
21032 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21033 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
21034 find mayInstanceOfEReference_class(problem,interpretation,newObject);
21035 find mayExist(problem, interpretation, newObject);
21036 neg find mustExist(problem, interpretation, newObject);
21037}
21038pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
21039 problem:LogicProblem, interpretation:PartialInterpretation,
21040 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
21041 container:DefinedElement)
21042{
21043 find interpretation(problem,interpretation);
21044 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21045 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
21046 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
21047 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
21048 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
21049 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
21050 find mustInstanceOfEOperation_class(problem,interpretation,container);
21051 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
21052 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
21053 find mustExist(problem, interpretation, container);
21054 neg find mustExist(problem, interpretation, newObject);
21055}
21056pattern createObject_EParameter_class(
21057 problem:LogicProblem, interpretation:PartialInterpretation,
21058 typeInterpretation:PartialComplexTypeInterpretation)
21059{
21060 find interpretation(problem,interpretation);
21061 neg find hasElementInContainment(problem,interpretation);
21062 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21063 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
21064 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
21065 find mayExist(problem, interpretation, newObject);
21066 neg find mustExist(problem, interpretation, newObject);
21067}
21068pattern createObject_EObject_class_by_contents_reference_EAnnotation(
21069 problem:LogicProblem, interpretation:PartialInterpretation,
21070 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
21071 container:DefinedElement)
21072{
21073 find interpretation(problem,interpretation);
21074 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21075 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
21076 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
21077 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
21078 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
21079 find mayInstanceOfEObject_class(problem,interpretation,newObject);
21080 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
21081 find mustExist(problem, interpretation, container);
21082 neg find mustExist(problem, interpretation, newObject);
21083}
21084pattern createObject_EObject_class(
21085 problem:LogicProblem, interpretation:PartialInterpretation,
21086 typeInterpretation:PartialComplexTypeInterpretation)
21087{
21088 find interpretation(problem,interpretation);
21089 neg find hasElementInContainment(problem,interpretation);
21090 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21091 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
21092 find mayInstanceOfEObject_class(problem,interpretation,newObject);
21093 find mayExist(problem, interpretation, newObject);
21094 neg find mustExist(problem, interpretation, newObject);
21095}
21096pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
21097 problem:LogicProblem, interpretation:PartialInterpretation,
21098 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
21099 container:DefinedElement)
21100{
21101 find interpretation(problem,interpretation);
21102 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21103 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
21104 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
21105 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
21106 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
21107 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
21108 find mustInstanceOfEClass_class(problem,interpretation,container);
21109 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
21110 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
21111 find mustExist(problem, interpretation, container);
21112 neg find mustExist(problem, interpretation, newObject);
21113}
21114pattern createObject_EAttribute_class(
21115 problem:LogicProblem, interpretation:PartialInterpretation,
21116 typeInterpretation:PartialComplexTypeInterpretation)
21117{
21118 find interpretation(problem,interpretation);
21119 neg find hasElementInContainment(problem,interpretation);
21120 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21121 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
21122 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
21123 find mayExist(problem, interpretation, newObject);
21124 neg find mustExist(problem, interpretation, newObject);
21125}
21126pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
21127 problem:LogicProblem, interpretation:PartialInterpretation,
21128 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
21129 container:DefinedElement)
21130{
21131 find interpretation(problem,interpretation);
21132 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21133 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
21134 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
21135 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
21136 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
21137 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
21138 find mustInstanceOfEPackage_class(problem,interpretation,container);
21139 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
21140 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
21141 find mustExist(problem, interpretation, container);
21142 neg find mustExist(problem, interpretation, newObject);
21143}
21144pattern createObject_EEnum_class(
21145 problem:LogicProblem, interpretation:PartialInterpretation,
21146 typeInterpretation:PartialComplexTypeInterpretation)
21147{
21148 find interpretation(problem,interpretation);
21149 neg find hasElementInContainment(problem,interpretation);
21150 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21151 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
21152 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
21153 find mayExist(problem, interpretation, newObject);
21154 neg find mustExist(problem, interpretation, newObject);
21155}
21156pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
21157 problem:LogicProblem, interpretation:PartialInterpretation,
21158 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
21159 container:DefinedElement)
21160{
21161 find interpretation(problem,interpretation);
21162 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21163 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
21164 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
21165 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
21166 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
21167 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
21168 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
21169 find mustExist(problem, interpretation, container);
21170 neg find mustExist(problem, interpretation, newObject);
21171}
21172pattern createObject_EStringToStringMapEntry_class(
21173 problem:LogicProblem, interpretation:PartialInterpretation,
21174 typeInterpretation:PartialComplexTypeInterpretation)
21175{
21176 find interpretation(problem,interpretation);
21177 neg find hasElementInContainment(problem,interpretation);
21178 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
21179 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
21180 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
21181 find mayExist(problem, interpretation, newObject);
21182 neg find mustExist(problem, interpretation, newObject);
21183}
21184
21185//////////
21186// 4.2 Type refinement
21187//////////
21188pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21189 find interpretation(problem,interpretation);
21190 PartialInterpretation.newElements(interpretation,element);
21191 find mayInstanceOfEDataType_class(problem,interpretation,element);
21192 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
21193 neg find mustInstanceOfEClass_class(problem,interpretation,element);
21194 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21195 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21196 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21197 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21198 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21199 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
21200 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
21201 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21202 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
21203}
21204pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21205 find interpretation(problem,interpretation);
21206 PartialInterpretation.newElements(interpretation,element);
21207 find mayInstanceOfEClass_class(problem,interpretation,element);
21208 neg find mustInstanceOfEClass_class(problem,interpretation,element);
21209 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
21210 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21211 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21212 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21213 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21214 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21215 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
21216 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
21217 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21218}
21219pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21220 find interpretation(problem,interpretation);
21221 PartialInterpretation.newElements(interpretation,element);
21222 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
21223 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21224 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21225 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21226 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
21227 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21228 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21229 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
21230 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21231 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
21232}
21233pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21234 find interpretation(problem,interpretation);
21235 PartialInterpretation.newElements(interpretation,element);
21236 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
21237 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21238 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
21239 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21240 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21241 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21242}
21243pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21244 find interpretation(problem,interpretation);
21245 PartialInterpretation.newElements(interpretation,element);
21246 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
21247 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21248 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21249 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21250 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21251 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
21252 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21253 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
21254 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
21255 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21256}
21257pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21258 find interpretation(problem,interpretation);
21259 PartialInterpretation.newElements(interpretation,element);
21260 find mayInstanceOfEOperation_class(problem,interpretation,element);
21261 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
21262 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21263 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21264 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21265 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
21266 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
21267 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21268 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21269 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
21270 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
21271 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21272}
21273pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21274 find interpretation(problem,interpretation);
21275 PartialInterpretation.newElements(interpretation,element);
21276 find mayInstanceOfEGenericType_class(problem,interpretation,element);
21277 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
21278 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21279 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21280 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21281}
21282pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21283 find interpretation(problem,interpretation);
21284 PartialInterpretation.newElements(interpretation,element);
21285 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
21286 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21287 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21288 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21289 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
21290 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21291 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21292 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
21293 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
21294 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21295}
21296pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21297 find interpretation(problem,interpretation);
21298 PartialInterpretation.newElements(interpretation,element);
21299 find mayInstanceOfEReference_class(problem,interpretation,element);
21300 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
21301 neg find mustInstanceOfEReference_class(problem,interpretation,element);
21302 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21303 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21304 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21305 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
21306 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
21307 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21308 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21309 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
21310 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
21311 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21312}
21313pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21314 find interpretation(problem,interpretation);
21315 PartialInterpretation.newElements(interpretation,element);
21316 find mayInstanceOfEParameter_class(problem,interpretation,element);
21317 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
21318 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21319 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21320 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21321 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
21322 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21323 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
21324 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
21325 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21326 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
21327 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21328}
21329pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21330 find interpretation(problem,interpretation);
21331 PartialInterpretation.newElements(interpretation,element);
21332 find mayInstanceOfEObject_class(problem,interpretation,element);
21333 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
21334 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21335 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21336 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21337}
21338pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21339 find interpretation(problem,interpretation);
21340 PartialInterpretation.newElements(interpretation,element);
21341 find mayInstanceOfEAttribute_class(problem,interpretation,element);
21342 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
21343 neg find mustInstanceOfEReference_class(problem,interpretation,element);
21344 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21345 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21346 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21347 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
21348 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21349 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
21350 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21351 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
21352 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
21353 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21354}
21355pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21356 find interpretation(problem,interpretation);
21357 PartialInterpretation.newElements(interpretation,element);
21358 find mayInstanceOfEEnum_class(problem,interpretation,element);
21359 neg find mustInstanceOfEClass_class(problem,interpretation,element);
21360 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
21361 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
21362 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21363 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21364 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
21365 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
21366 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
21367 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
21368 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21369}
21370pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
21371 find interpretation(problem,interpretation);
21372 PartialInterpretation.newElements(interpretation,element);
21373 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21374 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
21375 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
21376 neg find mustInstanceOfEObject_class(problem,interpretation,element);
21377 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
21378}
21379
21380//////////
21381// 4.3 Relation refinement
21382//////////
21383pattern refineRelation_eAttributeType_reference_EAttribute(
21384 problem:LogicProblem, interpretation:PartialInterpretation,
21385 relationIterpretation:PartialRelationInterpretation,
21386 from: DefinedElement, to: DefinedElement)
21387{
21388 find interpretation(problem,interpretation);
21389 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21390 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
21391 find mustExist(problem, interpretation, from);
21392 find mustExist(problem, interpretation, to);
21393 find mustInstanceOfEAttribute_class(problem,interpretation,from);
21394 find mustInstanceOfEDataType_class(problem,interpretation,to);
21395 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
21396 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
21397}
21398pattern refineRelation_references_reference_EAnnotation(
21399 problem:LogicProblem, interpretation:PartialInterpretation,
21400 relationIterpretation:PartialRelationInterpretation,
21401 from: DefinedElement, to: DefinedElement)
21402{
21403 find interpretation(problem,interpretation);
21404 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21405 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
21406 find mustExist(problem, interpretation, from);
21407 find mustExist(problem, interpretation, to);
21408 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
21409 find mustInstanceOfEObject_class(problem,interpretation,to);
21410 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
21411 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
21412}
21413pattern refineRelation_eSuperTypes_reference_EClass(
21414 problem:LogicProblem, interpretation:PartialInterpretation,
21415 relationIterpretation:PartialRelationInterpretation,
21416 from: DefinedElement, to: DefinedElement)
21417{
21418 find interpretation(problem,interpretation);
21419 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21420 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
21421 find mustExist(problem, interpretation, from);
21422 find mustExist(problem, interpretation, to);
21423 find mustInstanceOfEClass_class(problem,interpretation,from);
21424 find mustInstanceOfEClass_class(problem,interpretation,to);
21425 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
21426 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
21427}
21428pattern refineRelation_eAllAttributes_reference_EClass(
21429 problem:LogicProblem, interpretation:PartialInterpretation,
21430 relationIterpretation:PartialRelationInterpretation,
21431 from: DefinedElement, to: DefinedElement)
21432{
21433 find interpretation(problem,interpretation);
21434 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21435 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
21436 find mustExist(problem, interpretation, from);
21437 find mustExist(problem, interpretation, to);
21438 find mustInstanceOfEClass_class(problem,interpretation,from);
21439 find mustInstanceOfEAttribute_class(problem,interpretation,to);
21440 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
21441 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
21442}
21443pattern refineRelation_eAllReferences_reference_EClass(
21444 problem:LogicProblem, interpretation:PartialInterpretation,
21445 relationIterpretation:PartialRelationInterpretation,
21446 from: DefinedElement, to: DefinedElement)
21447{
21448 find interpretation(problem,interpretation);
21449 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21450 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
21451 find mustExist(problem, interpretation, from);
21452 find mustExist(problem, interpretation, to);
21453 find mustInstanceOfEClass_class(problem,interpretation,from);
21454 find mustInstanceOfEReference_class(problem,interpretation,to);
21455 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
21456 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
21457}
21458pattern refineRelation_eReferences_reference_EClass(
21459 problem:LogicProblem, interpretation:PartialInterpretation,
21460 relationIterpretation:PartialRelationInterpretation,
21461 from: DefinedElement, to: DefinedElement)
21462{
21463 find interpretation(problem,interpretation);
21464 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21465 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
21466 find mustExist(problem, interpretation, from);
21467 find mustExist(problem, interpretation, to);
21468 find mustInstanceOfEClass_class(problem,interpretation,from);
21469 find mustInstanceOfEReference_class(problem,interpretation,to);
21470 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
21471 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
21472}
21473pattern refineRelation_eAttributes_reference_EClass(
21474 problem:LogicProblem, interpretation:PartialInterpretation,
21475 relationIterpretation:PartialRelationInterpretation,
21476 from: DefinedElement, to: DefinedElement)
21477{
21478 find interpretation(problem,interpretation);
21479 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21480 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
21481 find mustExist(problem, interpretation, from);
21482 find mustExist(problem, interpretation, to);
21483 find mustInstanceOfEClass_class(problem,interpretation,from);
21484 find mustInstanceOfEAttribute_class(problem,interpretation,to);
21485 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
21486 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
21487}
21488pattern refineRelation_eAllContainments_reference_EClass(
21489 problem:LogicProblem, interpretation:PartialInterpretation,
21490 relationIterpretation:PartialRelationInterpretation,
21491 from: DefinedElement, to: DefinedElement)
21492{
21493 find interpretation(problem,interpretation);
21494 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21495 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
21496 find mustExist(problem, interpretation, from);
21497 find mustExist(problem, interpretation, to);
21498 find mustInstanceOfEClass_class(problem,interpretation,from);
21499 find mustInstanceOfEReference_class(problem,interpretation,to);
21500 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
21501 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
21502}
21503pattern refineRelation_eAllOperations_reference_EClass(
21504 problem:LogicProblem, interpretation:PartialInterpretation,
21505 relationIterpretation:PartialRelationInterpretation,
21506 from: DefinedElement, to: DefinedElement)
21507{
21508 find interpretation(problem,interpretation);
21509 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21510 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
21511 find mustExist(problem, interpretation, from);
21512 find mustExist(problem, interpretation, to);
21513 find mustInstanceOfEClass_class(problem,interpretation,from);
21514 find mustInstanceOfEOperation_class(problem,interpretation,to);
21515 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
21516 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
21517}
21518pattern refineRelation_eAllStructuralFeatures_reference_EClass(
21519 problem:LogicProblem, interpretation:PartialInterpretation,
21520 relationIterpretation:PartialRelationInterpretation,
21521 from: DefinedElement, to: DefinedElement)
21522{
21523 find interpretation(problem,interpretation);
21524 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21525 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
21526 find mustExist(problem, interpretation, from);
21527 find mustExist(problem, interpretation, to);
21528 find mustInstanceOfEClass_class(problem,interpretation,from);
21529 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
21530 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
21531 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
21532}
21533pattern refineRelation_eAllSuperTypes_reference_EClass(
21534 problem:LogicProblem, interpretation:PartialInterpretation,
21535 relationIterpretation:PartialRelationInterpretation,
21536 from: DefinedElement, to: DefinedElement)
21537{
21538 find interpretation(problem,interpretation);
21539 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21540 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
21541 find mustExist(problem, interpretation, from);
21542 find mustExist(problem, interpretation, to);
21543 find mustInstanceOfEClass_class(problem,interpretation,from);
21544 find mustInstanceOfEClass_class(problem,interpretation,to);
21545 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
21546 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
21547}
21548pattern refineRelation_eIDAttribute_reference_EClass(
21549 problem:LogicProblem, interpretation:PartialInterpretation,
21550 relationIterpretation:PartialRelationInterpretation,
21551 from: DefinedElement, to: DefinedElement)
21552{
21553 find interpretation(problem,interpretation);
21554 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21555 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
21556 find mustExist(problem, interpretation, from);
21557 find mustExist(problem, interpretation, to);
21558 find mustInstanceOfEClass_class(problem,interpretation,from);
21559 find mustInstanceOfEAttribute_class(problem,interpretation,to);
21560 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
21561 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
21562}
21563pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
21564 problem:LogicProblem, interpretation:PartialInterpretation,
21565 relationIterpretation:PartialRelationInterpretation,
21566 from: DefinedElement, to: DefinedElement)
21567{
21568 find interpretation(problem,interpretation);
21569 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21570 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
21571 find mustExist(problem, interpretation, from);
21572 find mustExist(problem, interpretation, to);
21573 find mustInstanceOfEClass_class(problem,interpretation,from);
21574 find mustInstanceOfEGenericType_class(problem,interpretation,to);
21575 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
21576 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
21577}
21578pattern refineRelation_eExceptions_reference_EOperation(
21579 problem:LogicProblem, interpretation:PartialInterpretation,
21580 relationIterpretation:PartialRelationInterpretation,
21581 from: DefinedElement, to: DefinedElement)
21582{
21583 find interpretation(problem,interpretation);
21584 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21585 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
21586 find mustExist(problem, interpretation, from);
21587 find mustExist(problem, interpretation, to);
21588 find mustInstanceOfEOperation_class(problem,interpretation,from);
21589 find mustInstanceOfEClassifier_class(problem,interpretation,to);
21590 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
21591 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
21592}
21593pattern refineRelation_eOpposite_reference_EReference(
21594 problem:LogicProblem, interpretation:PartialInterpretation,
21595 relationIterpretation:PartialRelationInterpretation,
21596 from: DefinedElement, to: DefinedElement)
21597{
21598 find interpretation(problem,interpretation);
21599 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21600 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
21601 find mustExist(problem, interpretation, from);
21602 find mustExist(problem, interpretation, to);
21603 find mustInstanceOfEReference_class(problem,interpretation,from);
21604 find mustInstanceOfEReference_class(problem,interpretation,to);
21605 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
21606 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
21607}
21608pattern refineRelation_eReferenceType_reference_EReference(
21609 problem:LogicProblem, interpretation:PartialInterpretation,
21610 relationIterpretation:PartialRelationInterpretation,
21611 from: DefinedElement, to: DefinedElement)
21612{
21613 find interpretation(problem,interpretation);
21614 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21615 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
21616 find mustExist(problem, interpretation, from);
21617 find mustExist(problem, interpretation, to);
21618 find mustInstanceOfEReference_class(problem,interpretation,from);
21619 find mustInstanceOfEClass_class(problem,interpretation,to);
21620 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
21621 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
21622}
21623pattern refineRelation_eKeys_reference_EReference(
21624 problem:LogicProblem, interpretation:PartialInterpretation,
21625 relationIterpretation:PartialRelationInterpretation,
21626 from: DefinedElement, to: DefinedElement)
21627{
21628 find interpretation(problem,interpretation);
21629 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21630 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
21631 find mustExist(problem, interpretation, from);
21632 find mustExist(problem, interpretation, to);
21633 find mustInstanceOfEReference_class(problem,interpretation,from);
21634 find mustInstanceOfEAttribute_class(problem,interpretation,to);
21635 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
21636 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
21637}
21638pattern refineRelation_eType_reference_ETypedElement(
21639 problem:LogicProblem, interpretation:PartialInterpretation,
21640 relationIterpretation:PartialRelationInterpretation,
21641 from: DefinedElement, to: DefinedElement)
21642{
21643 find interpretation(problem,interpretation);
21644 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21645 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
21646 find mustExist(problem, interpretation, from);
21647 find mustExist(problem, interpretation, to);
21648 find mustInstanceOfETypedElement_class(problem,interpretation,from);
21649 find mustInstanceOfEClassifier_class(problem,interpretation,to);
21650 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
21651 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
21652}
21653pattern refineRelation_eRawType_reference_EGenericType(
21654 problem:LogicProblem, interpretation:PartialInterpretation,
21655 relationIterpretation:PartialRelationInterpretation,
21656 from: DefinedElement, to: DefinedElement)
21657{
21658 find interpretation(problem,interpretation);
21659 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21660 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
21661 find mustExist(problem, interpretation, from);
21662 find mustExist(problem, interpretation, to);
21663 find mustInstanceOfEGenericType_class(problem,interpretation,from);
21664 find mustInstanceOfEClassifier_class(problem,interpretation,to);
21665 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
21666 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
21667}
21668pattern refineRelation_eTypeParameter_reference_EGenericType(
21669 problem:LogicProblem, interpretation:PartialInterpretation,
21670 relationIterpretation:PartialRelationInterpretation,
21671 from: DefinedElement, to: DefinedElement)
21672{
21673 find interpretation(problem,interpretation);
21674 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21675 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
21676 find mustExist(problem, interpretation, from);
21677 find mustExist(problem, interpretation, to);
21678 find mustInstanceOfEGenericType_class(problem,interpretation,from);
21679 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
21680 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
21681 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
21682}
21683pattern refineRelation_eClassifier_reference_EGenericType(
21684 problem:LogicProblem, interpretation:PartialInterpretation,
21685 relationIterpretation:PartialRelationInterpretation,
21686 from: DefinedElement, to: DefinedElement)
21687{
21688 find interpretation(problem,interpretation);
21689 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21690 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
21691 find mustExist(problem, interpretation, from);
21692 find mustExist(problem, interpretation, to);
21693 find mustInstanceOfEGenericType_class(problem,interpretation,from);
21694 find mustInstanceOfEClassifier_class(problem,interpretation,to);
21695 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
21696 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
21697}
21698pattern refineRelation_iD_attribute_EAttribute(
21699 problem:LogicProblem, interpretation:PartialInterpretation,
21700 relationIterpretation:PartialRelationInterpretation,
21701 from: DefinedElement, to: DefinedElement)
21702{
21703 find interpretation(problem,interpretation);
21704 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21705 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
21706 find mustExist(problem, interpretation, from);
21707 find mustExist(problem, interpretation, to);
21708 find mustInstanceOfEAttribute_class(problem,interpretation,from);
21709 BooleanElement(to);
21710 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
21711 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
21712}
21713pattern refineRelation_source_attribute_EAnnotation(
21714 problem:LogicProblem, interpretation:PartialInterpretation,
21715 relationIterpretation:PartialRelationInterpretation,
21716 from: DefinedElement, to: DefinedElement)
21717{
21718 find interpretation(problem,interpretation);
21719 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21720 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
21721 find mustExist(problem, interpretation, from);
21722 find mustExist(problem, interpretation, to);
21723 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
21724 StringElement(to);
21725 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
21726 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
21727}
21728pattern refineRelation_abstract_attribute_EClass(
21729 problem:LogicProblem, interpretation:PartialInterpretation,
21730 relationIterpretation:PartialRelationInterpretation,
21731 from: DefinedElement, to: DefinedElement)
21732{
21733 find interpretation(problem,interpretation);
21734 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21735 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
21736 find mustExist(problem, interpretation, from);
21737 find mustExist(problem, interpretation, to);
21738 find mustInstanceOfEClass_class(problem,interpretation,from);
21739 BooleanElement(to);
21740 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
21741 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
21742}
21743pattern refineRelation_interface_attribute_EClass(
21744 problem:LogicProblem, interpretation:PartialInterpretation,
21745 relationIterpretation:PartialRelationInterpretation,
21746 from: DefinedElement, to: DefinedElement)
21747{
21748 find interpretation(problem,interpretation);
21749 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21750 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
21751 find mustExist(problem, interpretation, from);
21752 find mustExist(problem, interpretation, to);
21753 find mustInstanceOfEClass_class(problem,interpretation,from);
21754 BooleanElement(to);
21755 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
21756 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
21757}
21758pattern refineRelation_instanceClassName_attribute_EClassifier(
21759 problem:LogicProblem, interpretation:PartialInterpretation,
21760 relationIterpretation:PartialRelationInterpretation,
21761 from: DefinedElement, to: DefinedElement)
21762{
21763 find interpretation(problem,interpretation);
21764 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21765 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
21766 find mustExist(problem, interpretation, from);
21767 find mustExist(problem, interpretation, to);
21768 find mustInstanceOfEClassifier_class(problem,interpretation,from);
21769 StringElement(to);
21770 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
21771 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
21772}
21773pattern refineRelation_instanceTypeName_attribute_EClassifier(
21774 problem:LogicProblem, interpretation:PartialInterpretation,
21775 relationIterpretation:PartialRelationInterpretation,
21776 from: DefinedElement, to: DefinedElement)
21777{
21778 find interpretation(problem,interpretation);
21779 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21780 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
21781 find mustExist(problem, interpretation, from);
21782 find mustExist(problem, interpretation, to);
21783 find mustInstanceOfEClassifier_class(problem,interpretation,from);
21784 StringElement(to);
21785 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
21786 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
21787}
21788pattern refineRelation_serializable_attribute_EDataType(
21789 problem:LogicProblem, interpretation:PartialInterpretation,
21790 relationIterpretation:PartialRelationInterpretation,
21791 from: DefinedElement, to: DefinedElement)
21792{
21793 find interpretation(problem,interpretation);
21794 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21795 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
21796 find mustExist(problem, interpretation, from);
21797 find mustExist(problem, interpretation, to);
21798 find mustInstanceOfEDataType_class(problem,interpretation,from);
21799 BooleanElement(to);
21800 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
21801 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
21802}
21803pattern refineRelation_value_attribute_EEnumLiteral(
21804 problem:LogicProblem, interpretation:PartialInterpretation,
21805 relationIterpretation:PartialRelationInterpretation,
21806 from: DefinedElement, to: DefinedElement)
21807{
21808 find interpretation(problem,interpretation);
21809 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21810 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
21811 find mustExist(problem, interpretation, from);
21812 find mustExist(problem, interpretation, to);
21813 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
21814 IntegerElement(to);
21815 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
21816 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
21817}
21818pattern refineRelation_literal_attribute_EEnumLiteral(
21819 problem:LogicProblem, interpretation:PartialInterpretation,
21820 relationIterpretation:PartialRelationInterpretation,
21821 from: DefinedElement, to: DefinedElement)
21822{
21823 find interpretation(problem,interpretation);
21824 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21825 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
21826 find mustExist(problem, interpretation, from);
21827 find mustExist(problem, interpretation, to);
21828 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
21829 StringElement(to);
21830 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
21831 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
21832}
21833pattern refineRelation_name_attribute_ENamedElement(
21834 problem:LogicProblem, interpretation:PartialInterpretation,
21835 relationIterpretation:PartialRelationInterpretation,
21836 from: DefinedElement, to: DefinedElement)
21837{
21838 find interpretation(problem,interpretation);
21839 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21840 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
21841 find mustExist(problem, interpretation, from);
21842 find mustExist(problem, interpretation, to);
21843 find mustInstanceOfENamedElement_class(problem,interpretation,from);
21844 StringElement(to);
21845 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
21846 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
21847}
21848pattern refineRelation_nsURI_attribute_EPackage(
21849 problem:LogicProblem, interpretation:PartialInterpretation,
21850 relationIterpretation:PartialRelationInterpretation,
21851 from: DefinedElement, to: DefinedElement)
21852{
21853 find interpretation(problem,interpretation);
21854 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21855 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
21856 find mustExist(problem, interpretation, from);
21857 find mustExist(problem, interpretation, to);
21858 find mustInstanceOfEPackage_class(problem,interpretation,from);
21859 StringElement(to);
21860 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
21861 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
21862}
21863pattern refineRelation_nsPrefix_attribute_EPackage(
21864 problem:LogicProblem, interpretation:PartialInterpretation,
21865 relationIterpretation:PartialRelationInterpretation,
21866 from: DefinedElement, to: DefinedElement)
21867{
21868 find interpretation(problem,interpretation);
21869 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21870 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
21871 find mustExist(problem, interpretation, from);
21872 find mustExist(problem, interpretation, to);
21873 find mustInstanceOfEPackage_class(problem,interpretation,from);
21874 StringElement(to);
21875 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
21876 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
21877}
21878pattern refineRelation_containment_attribute_EReference(
21879 problem:LogicProblem, interpretation:PartialInterpretation,
21880 relationIterpretation:PartialRelationInterpretation,
21881 from: DefinedElement, to: DefinedElement)
21882{
21883 find interpretation(problem,interpretation);
21884 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21885 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
21886 find mustExist(problem, interpretation, from);
21887 find mustExist(problem, interpretation, to);
21888 find mustInstanceOfEReference_class(problem,interpretation,from);
21889 BooleanElement(to);
21890 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
21891 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
21892}
21893pattern refineRelation_container_attribute_EReference(
21894 problem:LogicProblem, interpretation:PartialInterpretation,
21895 relationIterpretation:PartialRelationInterpretation,
21896 from: DefinedElement, to: DefinedElement)
21897{
21898 find interpretation(problem,interpretation);
21899 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21900 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
21901 find mustExist(problem, interpretation, from);
21902 find mustExist(problem, interpretation, to);
21903 find mustInstanceOfEReference_class(problem,interpretation,from);
21904 BooleanElement(to);
21905 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
21906 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
21907}
21908pattern refineRelation_resolveProxies_attribute_EReference(
21909 problem:LogicProblem, interpretation:PartialInterpretation,
21910 relationIterpretation:PartialRelationInterpretation,
21911 from: DefinedElement, to: DefinedElement)
21912{
21913 find interpretation(problem,interpretation);
21914 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21915 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
21916 find mustExist(problem, interpretation, from);
21917 find mustExist(problem, interpretation, to);
21918 find mustInstanceOfEReference_class(problem,interpretation,from);
21919 BooleanElement(to);
21920 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
21921 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
21922}
21923pattern refineRelation_changeable_attribute_EStructuralFeature(
21924 problem:LogicProblem, interpretation:PartialInterpretation,
21925 relationIterpretation:PartialRelationInterpretation,
21926 from: DefinedElement, to: DefinedElement)
21927{
21928 find interpretation(problem,interpretation);
21929 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21930 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
21931 find mustExist(problem, interpretation, from);
21932 find mustExist(problem, interpretation, to);
21933 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
21934 BooleanElement(to);
21935 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
21936 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
21937}
21938pattern refineRelation_volatile_attribute_EStructuralFeature(
21939 problem:LogicProblem, interpretation:PartialInterpretation,
21940 relationIterpretation:PartialRelationInterpretation,
21941 from: DefinedElement, to: DefinedElement)
21942{
21943 find interpretation(problem,interpretation);
21944 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21945 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
21946 find mustExist(problem, interpretation, from);
21947 find mustExist(problem, interpretation, to);
21948 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
21949 BooleanElement(to);
21950 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
21951 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
21952}
21953pattern refineRelation_transient_attribute_EStructuralFeature(
21954 problem:LogicProblem, interpretation:PartialInterpretation,
21955 relationIterpretation:PartialRelationInterpretation,
21956 from: DefinedElement, to: DefinedElement)
21957{
21958 find interpretation(problem,interpretation);
21959 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21960 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
21961 find mustExist(problem, interpretation, from);
21962 find mustExist(problem, interpretation, to);
21963 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
21964 BooleanElement(to);
21965 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
21966 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
21967}
21968pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
21969 problem:LogicProblem, interpretation:PartialInterpretation,
21970 relationIterpretation:PartialRelationInterpretation,
21971 from: DefinedElement, to: DefinedElement)
21972{
21973 find interpretation(problem,interpretation);
21974 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21975 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
21976 find mustExist(problem, interpretation, from);
21977 find mustExist(problem, interpretation, to);
21978 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
21979 StringElement(to);
21980 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
21981 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
21982}
21983pattern refineRelation_unsettable_attribute_EStructuralFeature(
21984 problem:LogicProblem, interpretation:PartialInterpretation,
21985 relationIterpretation:PartialRelationInterpretation,
21986 from: DefinedElement, to: DefinedElement)
21987{
21988 find interpretation(problem,interpretation);
21989 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21990 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
21991 find mustExist(problem, interpretation, from);
21992 find mustExist(problem, interpretation, to);
21993 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
21994 BooleanElement(to);
21995 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
21996 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
21997}
21998pattern refineRelation_derived_attribute_EStructuralFeature(
21999 problem:LogicProblem, interpretation:PartialInterpretation,
22000 relationIterpretation:PartialRelationInterpretation,
22001 from: DefinedElement, to: DefinedElement)
22002{
22003 find interpretation(problem,interpretation);
22004 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22005 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
22006 find mustExist(problem, interpretation, from);
22007 find mustExist(problem, interpretation, to);
22008 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
22009 BooleanElement(to);
22010 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
22011 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
22012}
22013pattern refineRelation_ordered_attribute_ETypedElement(
22014 problem:LogicProblem, interpretation:PartialInterpretation,
22015 relationIterpretation:PartialRelationInterpretation,
22016 from: DefinedElement, to: DefinedElement)
22017{
22018 find interpretation(problem,interpretation);
22019 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22020 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
22021 find mustExist(problem, interpretation, from);
22022 find mustExist(problem, interpretation, to);
22023 find mustInstanceOfETypedElement_class(problem,interpretation,from);
22024 BooleanElement(to);
22025 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
22026 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
22027}
22028pattern refineRelation_unique_attribute_ETypedElement(
22029 problem:LogicProblem, interpretation:PartialInterpretation,
22030 relationIterpretation:PartialRelationInterpretation,
22031 from: DefinedElement, to: DefinedElement)
22032{
22033 find interpretation(problem,interpretation);
22034 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22035 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
22036 find mustExist(problem, interpretation, from);
22037 find mustExist(problem, interpretation, to);
22038 find mustInstanceOfETypedElement_class(problem,interpretation,from);
22039 BooleanElement(to);
22040 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
22041 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
22042}
22043pattern refineRelation_lowerBound_attribute_ETypedElement(
22044 problem:LogicProblem, interpretation:PartialInterpretation,
22045 relationIterpretation:PartialRelationInterpretation,
22046 from: DefinedElement, to: DefinedElement)
22047{
22048 find interpretation(problem,interpretation);
22049 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22050 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
22051 find mustExist(problem, interpretation, from);
22052 find mustExist(problem, interpretation, to);
22053 find mustInstanceOfETypedElement_class(problem,interpretation,from);
22054 IntegerElement(to);
22055 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
22056 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
22057}
22058pattern refineRelation_upperBound_attribute_ETypedElement(
22059 problem:LogicProblem, interpretation:PartialInterpretation,
22060 relationIterpretation:PartialRelationInterpretation,
22061 from: DefinedElement, to: DefinedElement)
22062{
22063 find interpretation(problem,interpretation);
22064 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22065 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
22066 find mustExist(problem, interpretation, from);
22067 find mustExist(problem, interpretation, to);
22068 find mustInstanceOfETypedElement_class(problem,interpretation,from);
22069 IntegerElement(to);
22070 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
22071 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
22072}
22073pattern refineRelation_many_attribute_ETypedElement(
22074 problem:LogicProblem, interpretation:PartialInterpretation,
22075 relationIterpretation:PartialRelationInterpretation,
22076 from: DefinedElement, to: DefinedElement)
22077{
22078 find interpretation(problem,interpretation);
22079 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22080 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
22081 find mustExist(problem, interpretation, from);
22082 find mustExist(problem, interpretation, to);
22083 find mustInstanceOfETypedElement_class(problem,interpretation,from);
22084 BooleanElement(to);
22085 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
22086 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
22087}
22088pattern refineRelation_required_attribute_ETypedElement(
22089 problem:LogicProblem, interpretation:PartialInterpretation,
22090 relationIterpretation:PartialRelationInterpretation,
22091 from: DefinedElement, to: DefinedElement)
22092{
22093 find interpretation(problem,interpretation);
22094 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22095 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
22096 find mustExist(problem, interpretation, from);
22097 find mustExist(problem, interpretation, to);
22098 find mustInstanceOfETypedElement_class(problem,interpretation,from);
22099 BooleanElement(to);
22100 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
22101 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
22102}
22103pattern refineRelation_key_attribute_EStringToStringMapEntry(
22104 problem:LogicProblem, interpretation:PartialInterpretation,
22105 relationIterpretation:PartialRelationInterpretation,
22106 from: DefinedElement, to: DefinedElement)
22107{
22108 find interpretation(problem,interpretation);
22109 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22110 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
22111 find mustExist(problem, interpretation, from);
22112 find mustExist(problem, interpretation, to);
22113 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
22114 StringElement(to);
22115 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
22116 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
22117}
22118pattern refineRelation_value_attribute_EStringToStringMapEntry(
22119 problem:LogicProblem, interpretation:PartialInterpretation,
22120 relationIterpretation:PartialRelationInterpretation,
22121 from: DefinedElement, to: DefinedElement)
22122{
22123 find interpretation(problem,interpretation);
22124 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22125 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
22126 find mustExist(problem, interpretation, from);
22127 find mustExist(problem, interpretation, to);
22128 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
22129 StringElement(to);
22130 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
22131 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
22132}
22133import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
22134import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
22135import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
22136
22137//////////
22138// 0. Util
22139//////////
22140private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
22141 PartialInterpretation.problem(interpretation,problem);
22142}
22143
22144/////////////////////////
22145// 0.1 Existence
22146/////////////////////////
22147private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22148 find interpretation(problem,interpretation);
22149 LogicProblem.elements(problem,element);
22150} or {
22151 find interpretation(problem,interpretation);
22152 PartialInterpretation.newElements(interpretation,element);
22153}
22154
22155private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22156 find mustExist(problem,interpretation,element);
22157} or {
22158 find interpretation(problem,interpretation);
22159 neg find elementCloseWorld(element);
22160 PartialInterpretation.openWorldElements(interpretation,element);
22161}
22162
22163private pattern elementCloseWorld(element:DefinedElement) {
22164 PartialInterpretation.openWorldElements(i,element);
22165 PartialInterpretation.maxNewElements(i,0);
22166} or {
22167 Scope.targetTypeInterpretation(scope,interpretation);
22168 PartialTypeInterpratation.elements(interpretation,element);
22169 Scope.maxNewElements(scope,0);
22170}
22171
22172////////////////////////
22173// 0.2 Equivalence
22174////////////////////////
22175pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
22176 find mayExist(problem,interpretation,a);
22177 find mayExist(problem,interpretation,b);
22178 a == b;
22179}
22180
22181////////////////////////
22182// 0.3 Required Patterns by TypeIndexer
22183////////////////////////
22184private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
22185 find interpretation(problem,interpretation);
22186 LogicProblem.types(problem,type);
22187 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22188 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22189}
22190
22191private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
22192 find interpretation(problem,interpretation);
22193 LogicProblem.types(problem,type);
22194 TypeDefinition.elements(type,element);
22195} or {
22196 find interpretation(problem,interpretation);
22197 find typeInterpretation(problem,interpretation,type,typeInterpretation);
22198 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
22199}
22200
22201private pattern isPrimitive(element: PrimitiveElement) {
22202 PrimitiveElement(element);
22203}
22204
22205//////////
22206// 1. Problem-Specific Base Indexers
22207//////////
22208// 1.1 Type Indexers
22209//////////
22210// 1.1.1 primitive Type Indexers
22211//////////
22212
22213//////////
22214// 1.1.2 domain-specific Type Indexers
22215//////////
22216/**
22217 * An element must be an instance of type "EAttribute class".
22218 */
22219private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22220 Type.name(type,"EAttribute class");
22221 find directInstanceOf(problem,interpretation,element,type);
22222}
22223private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22224 find interpretation(problem,interpretation);
22225 PartialInterpretation.scopes(interpretation,scope);
22226 Scope.targetTypeInterpretation(scope,typeInterpretation);
22227 Scope.maxNewElements(scope,0);
22228 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22229 Type.name(type,"EAttribute class");
22230}
22231
22232/**
22233 * An element may be an instance of type "EAttribute class".
22234 */
22235private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22236{
22237 find interpretation(problem,interpretation);
22238 PartialInterpretation.newElements(interpretation,element);
22239 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22240 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22241 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22242 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22243 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22244 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22245 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22246 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22247 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22248 neg find mustInstanceOfEReference_class(problem,interpretation,element);
22249 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22250 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
22251 neg find isPrimitive(element);
22252} or {
22253 find interpretation(problem,interpretation);
22254 PartialInterpretation.openWorldElements(interpretation,element);
22255 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22256 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22257 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22258 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22259 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22260 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22261 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22262 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22263 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22264 neg find mustInstanceOfEReference_class(problem,interpretation,element);
22265 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22266 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
22267 neg find isPrimitive(element);
22268} or
22269{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
22270/**
22271 * An element must be an instance of type "EAnnotation class".
22272 */
22273private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22274 Type.name(type,"EAnnotation class");
22275 find directInstanceOf(problem,interpretation,element,type);
22276}
22277private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22278 find interpretation(problem,interpretation);
22279 PartialInterpretation.scopes(interpretation,scope);
22280 Scope.targetTypeInterpretation(scope,typeInterpretation);
22281 Scope.maxNewElements(scope,0);
22282 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22283 Type.name(type,"EAnnotation class");
22284}
22285
22286/**
22287 * An element may be an instance of type "EAnnotation class".
22288 */
22289private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22290{
22291 find interpretation(problem,interpretation);
22292 PartialInterpretation.newElements(interpretation,element);
22293 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22294 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22295 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22296 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
22297 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
22298 neg find isPrimitive(element);
22299} or {
22300 find interpretation(problem,interpretation);
22301 PartialInterpretation.openWorldElements(interpretation,element);
22302 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22303 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22304 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22305 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
22306 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
22307 neg find isPrimitive(element);
22308} or
22309{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
22310/**
22311 * An element must be an instance of type "EClass class".
22312 */
22313private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22314 Type.name(type,"EClass class");
22315 find directInstanceOf(problem,interpretation,element,type);
22316}
22317private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22318 find interpretation(problem,interpretation);
22319 PartialInterpretation.scopes(interpretation,scope);
22320 Scope.targetTypeInterpretation(scope,typeInterpretation);
22321 Scope.maxNewElements(scope,0);
22322 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22323 Type.name(type,"EClass class");
22324}
22325
22326/**
22327 * An element may be an instance of type "EClass class".
22328 */
22329private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22330{
22331 find interpretation(problem,interpretation);
22332 PartialInterpretation.newElements(interpretation,element);
22333 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22334 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
22335 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22336 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22337 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22338 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22339 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22340 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22341 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22342 neg find scopeDisallowsNewEClass_class(problem, interpretation);
22343 neg find isPrimitive(element);
22344} or {
22345 find interpretation(problem,interpretation);
22346 PartialInterpretation.openWorldElements(interpretation,element);
22347 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22348 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
22349 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22350 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22351 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22352 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22353 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22354 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22355 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22356 neg find scopeDisallowsNewEClass_class(problem, interpretation);
22357 neg find isPrimitive(element);
22358} or
22359{ find mustInstanceOfEClass_class(problem,interpretation,element); }
22360/**
22361 * An element must be an instance of type "EClassifier class".
22362 */
22363private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22364 Type.name(type,"EClassifier class");
22365 find directInstanceOf(problem,interpretation,element,type);
22366}
22367private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22368 find interpretation(problem,interpretation);
22369 PartialInterpretation.scopes(interpretation,scope);
22370 Scope.targetTypeInterpretation(scope,typeInterpretation);
22371 Scope.maxNewElements(scope,0);
22372 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22373 Type.name(type,"EClassifier class");
22374}
22375
22376/**
22377 * An element may be an instance of type "EClassifier class".
22378 */
22379private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22380{
22381 find interpretation(problem,interpretation);
22382 PartialInterpretation.newElements(interpretation,element);
22383 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22384 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
22385 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22386 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22387 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22388 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22389 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22390 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22391 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22392 neg find mustInstanceOfEClass_class(problem,interpretation,element);
22393 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
22394 neg find isPrimitive(element);
22395} or {
22396 find interpretation(problem,interpretation);
22397 PartialInterpretation.openWorldElements(interpretation,element);
22398 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22399 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
22400 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22401 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22402 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22403 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22404 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22405 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22406 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22407 neg find mustInstanceOfEClass_class(problem,interpretation,element);
22408 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
22409 neg find isPrimitive(element);
22410} or
22411{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
22412/**
22413 * An element must be an instance of type "EDataType class".
22414 */
22415private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22416 Type.name(type,"EDataType class");
22417 find directInstanceOf(problem,interpretation,element,type);
22418}
22419private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22420 find interpretation(problem,interpretation);
22421 PartialInterpretation.scopes(interpretation,scope);
22422 Scope.targetTypeInterpretation(scope,typeInterpretation);
22423 Scope.maxNewElements(scope,0);
22424 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22425 Type.name(type,"EDataType class");
22426}
22427
22428/**
22429 * An element may be an instance of type "EDataType class".
22430 */
22431private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22432{
22433 find interpretation(problem,interpretation);
22434 PartialInterpretation.newElements(interpretation,element);
22435 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22436 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22437 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
22438 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22439 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22440 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22441 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22442 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22443 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22444 neg find mustInstanceOfEClass_class(problem,interpretation,element);
22445 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
22446 neg find isPrimitive(element);
22447} or {
22448 find interpretation(problem,interpretation);
22449 PartialInterpretation.openWorldElements(interpretation,element);
22450 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22451 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22452 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
22453 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22454 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22455 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22456 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22457 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22458 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22459 neg find mustInstanceOfEClass_class(problem,interpretation,element);
22460 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
22461 neg find isPrimitive(element);
22462} or
22463{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
22464/**
22465 * An element must be an instance of type "EEnum class".
22466 */
22467private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22468 Type.name(type,"EEnum class");
22469 find directInstanceOf(problem,interpretation,element,type);
22470}
22471private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22472 find interpretation(problem,interpretation);
22473 PartialInterpretation.scopes(interpretation,scope);
22474 Scope.targetTypeInterpretation(scope,typeInterpretation);
22475 Scope.maxNewElements(scope,0);
22476 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22477 Type.name(type,"EEnum class");
22478}
22479
22480/**
22481 * An element may be an instance of type "EEnum class".
22482 */
22483private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22484{
22485 find interpretation(problem,interpretation);
22486 PartialInterpretation.newElements(interpretation,element);
22487 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22488 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22489 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22490 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22491 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22492 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22493 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22494 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22495 neg find mustInstanceOfEClass_class(problem,interpretation,element);
22496 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
22497 neg find isPrimitive(element);
22498} or {
22499 find interpretation(problem,interpretation);
22500 PartialInterpretation.openWorldElements(interpretation,element);
22501 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22502 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22503 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22504 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22505 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22506 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22507 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22508 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22509 neg find mustInstanceOfEClass_class(problem,interpretation,element);
22510 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
22511 neg find isPrimitive(element);
22512} or
22513{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
22514/**
22515 * An element must be an instance of type "EEnumLiteral class".
22516 */
22517private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22518 Type.name(type,"EEnumLiteral class");
22519 find directInstanceOf(problem,interpretation,element,type);
22520}
22521private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22522 find interpretation(problem,interpretation);
22523 PartialInterpretation.scopes(interpretation,scope);
22524 Scope.targetTypeInterpretation(scope,typeInterpretation);
22525 Scope.maxNewElements(scope,0);
22526 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22527 Type.name(type,"EEnumLiteral class");
22528}
22529
22530/**
22531 * An element may be an instance of type "EEnumLiteral class".
22532 */
22533private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22534{
22535 find interpretation(problem,interpretation);
22536 PartialInterpretation.newElements(interpretation,element);
22537 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22538 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22539 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22540 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22541 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22542 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22543 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22544 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22545 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
22546 neg find isPrimitive(element);
22547} or {
22548 find interpretation(problem,interpretation);
22549 PartialInterpretation.openWorldElements(interpretation,element);
22550 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22551 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22552 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22553 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22554 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22555 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
22556 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22557 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22558 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
22559 neg find isPrimitive(element);
22560} or
22561{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
22562/**
22563 * An element must be an instance of type "EModelElement class".
22564 */
22565private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22566 Type.name(type,"EModelElement class");
22567 find directInstanceOf(problem,interpretation,element,type);
22568}
22569private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22570 find interpretation(problem,interpretation);
22571 PartialInterpretation.scopes(interpretation,scope);
22572 Scope.targetTypeInterpretation(scope,typeInterpretation);
22573 Scope.maxNewElements(scope,0);
22574 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22575 Type.name(type,"EModelElement class");
22576}
22577
22578/**
22579 * An element may be an instance of type "EModelElement class".
22580 */
22581private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22582{
22583 find interpretation(problem,interpretation);
22584 PartialInterpretation.newElements(interpretation,element);
22585 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22586 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
22587 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22588 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22589 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
22590 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
22591 neg find isPrimitive(element);
22592} or {
22593 find interpretation(problem,interpretation);
22594 PartialInterpretation.openWorldElements(interpretation,element);
22595 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22596 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
22597 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22598 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22599 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
22600 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
22601 neg find isPrimitive(element);
22602} or
22603{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
22604/**
22605 * An element must be an instance of type "ENamedElement class".
22606 */
22607private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22608 Type.name(type,"ENamedElement class");
22609 find directInstanceOf(problem,interpretation,element,type);
22610}
22611private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22612 find interpretation(problem,interpretation);
22613 PartialInterpretation.scopes(interpretation,scope);
22614 Scope.targetTypeInterpretation(scope,typeInterpretation);
22615 Scope.maxNewElements(scope,0);
22616 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22617 Type.name(type,"ENamedElement class");
22618}
22619
22620/**
22621 * An element may be an instance of type "ENamedElement class".
22622 */
22623private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22624{
22625 find interpretation(problem,interpretation);
22626 PartialInterpretation.newElements(interpretation,element);
22627 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22628 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22629 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
22630 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22631 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22632 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
22633 neg find isPrimitive(element);
22634} or {
22635 find interpretation(problem,interpretation);
22636 PartialInterpretation.openWorldElements(interpretation,element);
22637 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22638 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22639 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
22640 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22641 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22642 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
22643 neg find isPrimitive(element);
22644} or
22645{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
22646/**
22647 * An element must be an instance of type "EObject class".
22648 */
22649private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22650 Type.name(type,"EObject class");
22651 find directInstanceOf(problem,interpretation,element,type);
22652}
22653private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22654 find interpretation(problem,interpretation);
22655 PartialInterpretation.scopes(interpretation,scope);
22656 Scope.targetTypeInterpretation(scope,typeInterpretation);
22657 Scope.maxNewElements(scope,0);
22658 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22659 Type.name(type,"EObject class");
22660}
22661
22662/**
22663 * An element may be an instance of type "EObject class".
22664 */
22665private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22666{
22667 find interpretation(problem,interpretation);
22668 PartialInterpretation.newElements(interpretation,element);
22669 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
22670 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22671 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22672 neg find scopeDisallowsNewEObject_class(problem, interpretation);
22673 neg find isPrimitive(element);
22674} or {
22675 find interpretation(problem,interpretation);
22676 PartialInterpretation.openWorldElements(interpretation,element);
22677 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
22678 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22679 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22680 neg find scopeDisallowsNewEObject_class(problem, interpretation);
22681 neg find isPrimitive(element);
22682} or
22683{ find mustInstanceOfEObject_class(problem,interpretation,element); }
22684/**
22685 * An element must be an instance of type "EOperation class".
22686 */
22687private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22688 Type.name(type,"EOperation class");
22689 find directInstanceOf(problem,interpretation,element,type);
22690}
22691private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22692 find interpretation(problem,interpretation);
22693 PartialInterpretation.scopes(interpretation,scope);
22694 Scope.targetTypeInterpretation(scope,typeInterpretation);
22695 Scope.maxNewElements(scope,0);
22696 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22697 Type.name(type,"EOperation class");
22698}
22699
22700/**
22701 * An element may be an instance of type "EOperation class".
22702 */
22703private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22704{
22705 find interpretation(problem,interpretation);
22706 PartialInterpretation.newElements(interpretation,element);
22707 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22708 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22709 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22710 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
22711 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22712 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22713 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22714 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22715 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22716 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22717 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
22718 neg find isPrimitive(element);
22719} or {
22720 find interpretation(problem,interpretation);
22721 PartialInterpretation.openWorldElements(interpretation,element);
22722 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22723 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22724 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22725 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
22726 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22727 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22728 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22729 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22730 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22731 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22732 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
22733 neg find isPrimitive(element);
22734} or
22735{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
22736/**
22737 * An element must be an instance of type "EPackage class".
22738 */
22739private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22740 Type.name(type,"EPackage class");
22741 find directInstanceOf(problem,interpretation,element,type);
22742}
22743private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22744 find interpretation(problem,interpretation);
22745 PartialInterpretation.scopes(interpretation,scope);
22746 Scope.targetTypeInterpretation(scope,typeInterpretation);
22747 Scope.maxNewElements(scope,0);
22748 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22749 Type.name(type,"EPackage class");
22750}
22751
22752/**
22753 * An element may be an instance of type "EPackage class".
22754 */
22755private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22756{
22757 find interpretation(problem,interpretation);
22758 PartialInterpretation.newElements(interpretation,element);
22759 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22760 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
22761 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22762 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22763 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
22764 neg find isPrimitive(element);
22765} or {
22766 find interpretation(problem,interpretation);
22767 PartialInterpretation.openWorldElements(interpretation,element);
22768 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22769 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
22770 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22771 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22772 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
22773 neg find isPrimitive(element);
22774} or
22775{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
22776/**
22777 * An element must be an instance of type "EParameter class".
22778 */
22779private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22780 Type.name(type,"EParameter class");
22781 find directInstanceOf(problem,interpretation,element,type);
22782}
22783private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22784 find interpretation(problem,interpretation);
22785 PartialInterpretation.scopes(interpretation,scope);
22786 Scope.targetTypeInterpretation(scope,typeInterpretation);
22787 Scope.maxNewElements(scope,0);
22788 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22789 Type.name(type,"EParameter class");
22790}
22791
22792/**
22793 * An element may be an instance of type "EParameter class".
22794 */
22795private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22796{
22797 find interpretation(problem,interpretation);
22798 PartialInterpretation.newElements(interpretation,element);
22799 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22800 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22801 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22802 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
22803 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22804 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22805 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22806 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22807 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22808 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22809 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
22810 neg find isPrimitive(element);
22811} or {
22812 find interpretation(problem,interpretation);
22813 PartialInterpretation.openWorldElements(interpretation,element);
22814 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22815 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22816 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22817 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
22818 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22819 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22820 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22821 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22822 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22823 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22824 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
22825 neg find isPrimitive(element);
22826} or
22827{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
22828/**
22829 * An element must be an instance of type "EReference class".
22830 */
22831private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22832 Type.name(type,"EReference class");
22833 find directInstanceOf(problem,interpretation,element,type);
22834}
22835private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22836 find interpretation(problem,interpretation);
22837 PartialInterpretation.scopes(interpretation,scope);
22838 Scope.targetTypeInterpretation(scope,typeInterpretation);
22839 Scope.maxNewElements(scope,0);
22840 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22841 Type.name(type,"EReference class");
22842}
22843
22844/**
22845 * An element may be an instance of type "EReference class".
22846 */
22847private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22848{
22849 find interpretation(problem,interpretation);
22850 PartialInterpretation.newElements(interpretation,element);
22851 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22852 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
22853 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22854 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22855 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22856 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22857 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22858 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22859 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22860 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22861 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22862 neg find scopeDisallowsNewEReference_class(problem, interpretation);
22863 neg find isPrimitive(element);
22864} or {
22865 find interpretation(problem,interpretation);
22866 PartialInterpretation.openWorldElements(interpretation,element);
22867 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22868 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
22869 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22870 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22871 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22872 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22873 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22874 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22875 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22876 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22877 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22878 neg find scopeDisallowsNewEReference_class(problem, interpretation);
22879 neg find isPrimitive(element);
22880} or
22881{ find mustInstanceOfEReference_class(problem,interpretation,element); }
22882/**
22883 * An element must be an instance of type "EStructuralFeature class".
22884 */
22885private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22886 Type.name(type,"EStructuralFeature class");
22887 find directInstanceOf(problem,interpretation,element,type);
22888}
22889private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22890 find interpretation(problem,interpretation);
22891 PartialInterpretation.scopes(interpretation,scope);
22892 Scope.targetTypeInterpretation(scope,typeInterpretation);
22893 Scope.maxNewElements(scope,0);
22894 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22895 Type.name(type,"EStructuralFeature class");
22896}
22897
22898/**
22899 * An element may be an instance of type "EStructuralFeature class".
22900 */
22901private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22902{
22903 find interpretation(problem,interpretation);
22904 PartialInterpretation.newElements(interpretation,element);
22905 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22906 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
22907 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22908 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22909 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22910 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22911 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22912 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22913 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22914 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22915 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22916 neg find mustInstanceOfEReference_class(problem,interpretation,element);
22917 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
22918 neg find isPrimitive(element);
22919} or {
22920 find interpretation(problem,interpretation);
22921 PartialInterpretation.openWorldElements(interpretation,element);
22922 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22923 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
22924 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22925 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22926 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22927 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22928 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22929 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22930 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22931 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22932 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22933 neg find mustInstanceOfEReference_class(problem,interpretation,element);
22934 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
22935 neg find isPrimitive(element);
22936} or
22937{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
22938/**
22939 * An element must be an instance of type "ETypedElement class".
22940 */
22941private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22942 Type.name(type,"ETypedElement class");
22943 find directInstanceOf(problem,interpretation,element,type);
22944}
22945private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22946 find interpretation(problem,interpretation);
22947 PartialInterpretation.scopes(interpretation,scope);
22948 Scope.targetTypeInterpretation(scope,typeInterpretation);
22949 Scope.maxNewElements(scope,0);
22950 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22951 Type.name(type,"ETypedElement class");
22952}
22953
22954/**
22955 * An element may be an instance of type "ETypedElement class".
22956 */
22957private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22958{
22959 find interpretation(problem,interpretation);
22960 PartialInterpretation.newElements(interpretation,element);
22961 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22962 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22963 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22964 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22965 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
22966 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22967 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22968 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22969 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22970 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22971 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22972 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
22973 neg find isPrimitive(element);
22974} or {
22975 find interpretation(problem,interpretation);
22976 PartialInterpretation.openWorldElements(interpretation,element);
22977 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
22978 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
22979 neg find mustInstanceOfEObject_class(problem,interpretation,element);
22980 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
22981 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
22982 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
22983 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
22984 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
22985 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
22986 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
22987 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
22988 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
22989 neg find isPrimitive(element);
22990} or
22991{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
22992/**
22993 * An element must be an instance of type "EStringToStringMapEntry class".
22994 */
22995private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22996 Type.name(type,"EStringToStringMapEntry class");
22997 find directInstanceOf(problem,interpretation,element,type);
22998}
22999private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
23000 find interpretation(problem,interpretation);
23001 PartialInterpretation.scopes(interpretation,scope);
23002 Scope.targetTypeInterpretation(scope,typeInterpretation);
23003 Scope.maxNewElements(scope,0);
23004 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23005 Type.name(type,"EStringToStringMapEntry class");
23006}
23007
23008/**
23009 * An element may be an instance of type "EStringToStringMapEntry class".
23010 */
23011private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23012{
23013 find interpretation(problem,interpretation);
23014 PartialInterpretation.newElements(interpretation,element);
23015 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
23016 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23017 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23018 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
23019 neg find isPrimitive(element);
23020} or {
23021 find interpretation(problem,interpretation);
23022 PartialInterpretation.openWorldElements(interpretation,element);
23023 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
23024 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23025 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23026 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
23027 neg find isPrimitive(element);
23028} or
23029{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
23030/**
23031 * An element must be an instance of type "EGenericType class".
23032 */
23033private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23034 Type.name(type,"EGenericType class");
23035 find directInstanceOf(problem,interpretation,element,type);
23036}
23037private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
23038 find interpretation(problem,interpretation);
23039 PartialInterpretation.scopes(interpretation,scope);
23040 Scope.targetTypeInterpretation(scope,typeInterpretation);
23041 Scope.maxNewElements(scope,0);
23042 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23043 Type.name(type,"EGenericType class");
23044}
23045
23046/**
23047 * An element may be an instance of type "EGenericType class".
23048 */
23049private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23050{
23051 find interpretation(problem,interpretation);
23052 PartialInterpretation.newElements(interpretation,element);
23053 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
23054 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23055 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23056 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
23057 neg find isPrimitive(element);
23058} or {
23059 find interpretation(problem,interpretation);
23060 PartialInterpretation.openWorldElements(interpretation,element);
23061 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
23062 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23063 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23064 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
23065 neg find isPrimitive(element);
23066} or
23067{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
23068/**
23069 * An element must be an instance of type "ETypeParameter class".
23070 */
23071private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23072 Type.name(type,"ETypeParameter class");
23073 find directInstanceOf(problem,interpretation,element,type);
23074}
23075private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
23076 find interpretation(problem,interpretation);
23077 PartialInterpretation.scopes(interpretation,scope);
23078 Scope.targetTypeInterpretation(scope,typeInterpretation);
23079 Scope.maxNewElements(scope,0);
23080 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23081 Type.name(type,"ETypeParameter class");
23082}
23083
23084/**
23085 * An element may be an instance of type "ETypeParameter class".
23086 */
23087private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23088{
23089 find interpretation(problem,interpretation);
23090 PartialInterpretation.newElements(interpretation,element);
23091 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
23092 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23093 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23094 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
23095 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23096 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
23097 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
23098 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
23099 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
23100 neg find isPrimitive(element);
23101} or {
23102 find interpretation(problem,interpretation);
23103 PartialInterpretation.openWorldElements(interpretation,element);
23104 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
23105 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23106 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23107 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
23108 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23109 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
23110 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
23111 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
23112 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
23113 neg find isPrimitive(element);
23114} or
23115{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
23116/**
23117 * An element must be an instance of type "EModelElement class DefinedPart".
23118 */
23119private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23120 Type.name(type,"EModelElement class DefinedPart");
23121 find directInstanceOf(problem,interpretation,element,type);
23122}
23123private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
23124 find interpretation(problem,interpretation);
23125 PartialInterpretation.scopes(interpretation,scope);
23126 Scope.targetTypeInterpretation(scope,typeInterpretation);
23127 Scope.maxNewElements(scope,0);
23128 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23129 Type.name(type,"EModelElement class DefinedPart");
23130}
23131
23132/**
23133 * An element may be an instance of type "EModelElement class DefinedPart".
23134 */
23135private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23136{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
23137/**
23138 * An element must be an instance of type "EModelElement class UndefinedPart".
23139 */
23140private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23141 Type.name(type,"EModelElement class UndefinedPart");
23142 find directInstanceOf(problem,interpretation,element,type);
23143}
23144private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
23145 find interpretation(problem,interpretation);
23146 PartialInterpretation.scopes(interpretation,scope);
23147 Scope.targetTypeInterpretation(scope,typeInterpretation);
23148 Scope.maxNewElements(scope,0);
23149 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23150 Type.name(type,"EModelElement class UndefinedPart");
23151}
23152
23153/**
23154 * An element may be an instance of type "EModelElement class UndefinedPart".
23155 */
23156private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23157{
23158 find interpretation(problem,interpretation);
23159 PartialInterpretation.newElements(interpretation,element);
23160 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23161 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23162 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
23163 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23164 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
23165 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
23166 neg find isPrimitive(element);
23167} or {
23168 find interpretation(problem,interpretation);
23169 PartialInterpretation.openWorldElements(interpretation,element);
23170 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23171 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23172 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
23173 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23174 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
23175 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
23176 neg find isPrimitive(element);
23177} or
23178{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
23179/**
23180 * An element must be an instance of type "ENamedElement class DefinedPart".
23181 */
23182private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23183 Type.name(type,"ENamedElement class DefinedPart");
23184 find directInstanceOf(problem,interpretation,element,type);
23185}
23186private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
23187 find interpretation(problem,interpretation);
23188 PartialInterpretation.scopes(interpretation,scope);
23189 Scope.targetTypeInterpretation(scope,typeInterpretation);
23190 Scope.maxNewElements(scope,0);
23191 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23192 Type.name(type,"ENamedElement class DefinedPart");
23193}
23194
23195/**
23196 * An element may be an instance of type "ENamedElement class DefinedPart".
23197 */
23198private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23199{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
23200/**
23201 * An element must be an instance of type "ENamedElement class UndefinedPart".
23202 */
23203private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23204 Type.name(type,"ENamedElement class UndefinedPart");
23205 find directInstanceOf(problem,interpretation,element,type);
23206}
23207private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
23208 find interpretation(problem,interpretation);
23209 PartialInterpretation.scopes(interpretation,scope);
23210 Scope.targetTypeInterpretation(scope,typeInterpretation);
23211 Scope.maxNewElements(scope,0);
23212 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23213 Type.name(type,"ENamedElement class UndefinedPart");
23214}
23215
23216/**
23217 * An element may be an instance of type "ENamedElement class UndefinedPart".
23218 */
23219private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23220{
23221 find interpretation(problem,interpretation);
23222 PartialInterpretation.newElements(interpretation,element);
23223 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
23224 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23225 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23226 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
23227 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23228 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
23229 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
23230 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
23231 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
23232 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
23233 neg find isPrimitive(element);
23234} or {
23235 find interpretation(problem,interpretation);
23236 PartialInterpretation.openWorldElements(interpretation,element);
23237 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
23238 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23239 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23240 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
23241 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23242 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
23243 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
23244 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
23245 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
23246 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
23247 neg find isPrimitive(element);
23248} or
23249{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
23250/**
23251 * An element must be an instance of type "EPackage class DefinedPart".
23252 */
23253private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23254 Type.name(type,"EPackage class DefinedPart");
23255 find directInstanceOf(problem,interpretation,element,type);
23256}
23257private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
23258 find interpretation(problem,interpretation);
23259 PartialInterpretation.scopes(interpretation,scope);
23260 Scope.targetTypeInterpretation(scope,typeInterpretation);
23261 Scope.maxNewElements(scope,0);
23262 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23263 Type.name(type,"EPackage class DefinedPart");
23264}
23265
23266/**
23267 * An element may be an instance of type "EPackage class DefinedPart".
23268 */
23269private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23270{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
23271/**
23272 * An element must be an instance of type "EPackage class UndefinedPart".
23273 */
23274private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23275 Type.name(type,"EPackage class UndefinedPart");
23276 find directInstanceOf(problem,interpretation,element,type);
23277}
23278private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
23279 find interpretation(problem,interpretation);
23280 PartialInterpretation.scopes(interpretation,scope);
23281 Scope.targetTypeInterpretation(scope,typeInterpretation);
23282 Scope.maxNewElements(scope,0);
23283 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23284 Type.name(type,"EPackage class UndefinedPart");
23285}
23286
23287/**
23288 * An element may be an instance of type "EPackage class UndefinedPart".
23289 */
23290private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23291{
23292 find interpretation(problem,interpretation);
23293 PartialInterpretation.newElements(interpretation,element);
23294 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23295 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23296 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23297 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
23298 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
23299 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
23300 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
23301 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
23302 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
23303 neg find isPrimitive(element);
23304} or {
23305 find interpretation(problem,interpretation);
23306 PartialInterpretation.openWorldElements(interpretation,element);
23307 neg find mustInstanceOfEObject_class(problem,interpretation,element);
23308 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
23309 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
23310 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
23311 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
23312 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
23313 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
23314 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
23315 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
23316 neg find isPrimitive(element);
23317} or
23318{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
23319
23320//////////
23321// 1.2 Relation Declaration Indexers
23322//////////
23323/**
23324 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
23325 */
23326private pattern mustInRelationeAttributeType_reference_EAttribute(
23327 problem:LogicProblem, interpretation:PartialInterpretation,
23328 source: DefinedElement, target:DefinedElement)
23329{
23330 find interpretation(problem,interpretation);
23331 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23332 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
23333 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23334 BinaryElementRelationLink.param1(link,source);
23335 BinaryElementRelationLink.param2(link,target);
23336}
23337/**
23338 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
23339 */
23340private pattern mayInRelationeAttributeType_reference_EAttribute(
23341 problem:LogicProblem, interpretation:PartialInterpretation,
23342 source: DefinedElement, target:DefinedElement)
23343{
23344 find interpretation(problem,interpretation);
23345 // The two endpoint of the link have to exist
23346 find mayExist(problem, interpretation, source);
23347 find mayExist(problem, interpretation, target);
23348 // Type consistency
23349 find mayInstanceOfEAttribute_class(problem,interpretation,source);
23350 find mayInstanceOfEDataType_class(problem,interpretation,target);
23351 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23352 // the upper bound of the multiplicity should be considered.
23353 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
23354 check(numberOfExistingReferences < 1);
23355} or {
23356 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
23357}
23358/**
23359 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
23360 */
23361private pattern mustInRelationdetails_reference_EAnnotation(
23362 problem:LogicProblem, interpretation:PartialInterpretation,
23363 source: DefinedElement, target:DefinedElement)
23364{
23365 find interpretation(problem,interpretation);
23366 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23367 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
23368 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23369 BinaryElementRelationLink.param1(link,source);
23370 BinaryElementRelationLink.param2(link,target);
23371}
23372/**
23373 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
23374 */
23375private pattern mayInRelationdetails_reference_EAnnotation(
23376 problem:LogicProblem, interpretation:PartialInterpretation,
23377 source: DefinedElement, target:DefinedElement)
23378{
23379 find interpretation(problem,interpretation);
23380 // The two endpoint of the link have to exist
23381 find mayExist(problem, interpretation, source);
23382 find mayExist(problem, interpretation, target);
23383 // Type consistency
23384 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
23385 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
23386 // The reference is containment, then a new reference cannot be create if:
23387 // 1. Multiple parents
23388 neg find mustContains4(problem,interpretation,_,target);
23389 // 2. Circle in the containment hierarchy
23390 neg find mustTransitiveContains(source,target);
23391} or {
23392 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
23393}
23394/**
23395 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
23396 */
23397private pattern mustInRelationeModelElement_reference_EAnnotation(
23398 problem:LogicProblem, interpretation:PartialInterpretation,
23399 source: DefinedElement, target:DefinedElement)
23400{
23401 find interpretation(problem,interpretation);
23402 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23403 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
23404 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23405 BinaryElementRelationLink.param1(link,source);
23406 BinaryElementRelationLink.param2(link,target);
23407}
23408/**
23409 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
23410 */
23411private pattern mayInRelationeModelElement_reference_EAnnotation(
23412 problem:LogicProblem, interpretation:PartialInterpretation,
23413 source: DefinedElement, target:DefinedElement)
23414{
23415 find interpretation(problem,interpretation);
23416 // The two endpoint of the link have to exist
23417 find mayExist(problem, interpretation, source);
23418 find mayExist(problem, interpretation, target);
23419 // Type consistency
23420 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
23421 find mayInstanceOfEModelElement_class(problem,interpretation,target);
23422 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23423 // the upper bound of the multiplicity should be considered.
23424 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
23425 check(numberOfExistingReferences < 1);
23426 // The eOpposite of the reference is containment, then a referene cannot be created if
23427 // 1. Multiple parents
23428 neg find mustContains4(problem,interpretation,source,_);
23429 // 2. Circle in the containment hierarchy
23430 neg find mustTransitiveContains(source,target);
23431} or {
23432 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
23433}
23434/**
23435 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
23436 */
23437private pattern mustInRelationcontents_reference_EAnnotation(
23438 problem:LogicProblem, interpretation:PartialInterpretation,
23439 source: DefinedElement, target:DefinedElement)
23440{
23441 find interpretation(problem,interpretation);
23442 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23443 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
23444 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23445 BinaryElementRelationLink.param1(link,source);
23446 BinaryElementRelationLink.param2(link,target);
23447}
23448/**
23449 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
23450 */
23451private pattern mayInRelationcontents_reference_EAnnotation(
23452 problem:LogicProblem, interpretation:PartialInterpretation,
23453 source: DefinedElement, target:DefinedElement)
23454{
23455 find interpretation(problem,interpretation);
23456 // The two endpoint of the link have to exist
23457 find mayExist(problem, interpretation, source);
23458 find mayExist(problem, interpretation, target);
23459 // Type consistency
23460 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
23461 find mayInstanceOfEObject_class(problem,interpretation,target);
23462 // The reference is containment, then a new reference cannot be create if:
23463 // 1. Multiple parents
23464 neg find mustContains4(problem,interpretation,_,target);
23465 // 2. Circle in the containment hierarchy
23466 neg find mustTransitiveContains(source,target);
23467} or {
23468 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
23469}
23470/**
23471 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
23472 */
23473private pattern mustInRelationreferences_reference_EAnnotation(
23474 problem:LogicProblem, interpretation:PartialInterpretation,
23475 source: DefinedElement, target:DefinedElement)
23476{
23477 find interpretation(problem,interpretation);
23478 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23479 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
23480 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23481 BinaryElementRelationLink.param1(link,source);
23482 BinaryElementRelationLink.param2(link,target);
23483}
23484/**
23485 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
23486 */
23487private pattern mayInRelationreferences_reference_EAnnotation(
23488 problem:LogicProblem, interpretation:PartialInterpretation,
23489 source: DefinedElement, target:DefinedElement)
23490{
23491 find interpretation(problem,interpretation);
23492 // The two endpoint of the link have to exist
23493 find mayExist(problem, interpretation, source);
23494 find mayExist(problem, interpretation, target);
23495 // Type consistency
23496 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
23497 find mayInstanceOfEObject_class(problem,interpretation,target);
23498} or {
23499 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
23500}
23501/**
23502 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
23503 */
23504private pattern mustInRelationeSuperTypes_reference_EClass(
23505 problem:LogicProblem, interpretation:PartialInterpretation,
23506 source: DefinedElement, target:DefinedElement)
23507{
23508 find interpretation(problem,interpretation);
23509 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23510 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
23511 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23512 BinaryElementRelationLink.param1(link,source);
23513 BinaryElementRelationLink.param2(link,target);
23514}
23515/**
23516 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
23517 */
23518private pattern mayInRelationeSuperTypes_reference_EClass(
23519 problem:LogicProblem, interpretation:PartialInterpretation,
23520 source: DefinedElement, target:DefinedElement)
23521{
23522 find interpretation(problem,interpretation);
23523 // The two endpoint of the link have to exist
23524 find mayExist(problem, interpretation, source);
23525 find mayExist(problem, interpretation, target);
23526 // Type consistency
23527 find mayInstanceOfEClass_class(problem,interpretation,source);
23528 find mayInstanceOfEClass_class(problem,interpretation,target);
23529} or {
23530 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
23531}
23532/**
23533 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
23534 */
23535private pattern mustInRelationeOperations_reference_EClass(
23536 problem:LogicProblem, interpretation:PartialInterpretation,
23537 source: DefinedElement, target:DefinedElement)
23538{
23539 find interpretation(problem,interpretation);
23540 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23541 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
23542 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23543 BinaryElementRelationLink.param1(link,source);
23544 BinaryElementRelationLink.param2(link,target);
23545}
23546/**
23547 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
23548 */
23549private pattern mayInRelationeOperations_reference_EClass(
23550 problem:LogicProblem, interpretation:PartialInterpretation,
23551 source: DefinedElement, target:DefinedElement)
23552{
23553 find interpretation(problem,interpretation);
23554 // The two endpoint of the link have to exist
23555 find mayExist(problem, interpretation, source);
23556 find mayExist(problem, interpretation, target);
23557 // Type consistency
23558 find mayInstanceOfEClass_class(problem,interpretation,source);
23559 find mayInstanceOfEOperation_class(problem,interpretation,target);
23560 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23561 // the upper bound of the opposite reference multiplicity should be considered.
23562 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
23563 check(numberOfExistingOppositeReferences < 1);
23564 // The reference is containment, then a new reference cannot be create if:
23565 // 1. Multiple parents
23566 neg find mustContains4(problem,interpretation,_,target);
23567 // 2. Circle in the containment hierarchy
23568 neg find mustTransitiveContains(source,target);
23569} or {
23570 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
23571}
23572/**
23573 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
23574 */
23575private pattern mustInRelationeAllAttributes_reference_EClass(
23576 problem:LogicProblem, interpretation:PartialInterpretation,
23577 source: DefinedElement, target:DefinedElement)
23578{
23579 find interpretation(problem,interpretation);
23580 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23581 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
23582 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23583 BinaryElementRelationLink.param1(link,source);
23584 BinaryElementRelationLink.param2(link,target);
23585}
23586/**
23587 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
23588 */
23589private pattern mayInRelationeAllAttributes_reference_EClass(
23590 problem:LogicProblem, interpretation:PartialInterpretation,
23591 source: DefinedElement, target:DefinedElement)
23592{
23593 find interpretation(problem,interpretation);
23594 // The two endpoint of the link have to exist
23595 find mayExist(problem, interpretation, source);
23596 find mayExist(problem, interpretation, target);
23597 // Type consistency
23598 find mayInstanceOfEClass_class(problem,interpretation,source);
23599 find mayInstanceOfEAttribute_class(problem,interpretation,target);
23600} or {
23601 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
23602}
23603/**
23604 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
23605 */
23606private pattern mustInRelationeAllReferences_reference_EClass(
23607 problem:LogicProblem, interpretation:PartialInterpretation,
23608 source: DefinedElement, target:DefinedElement)
23609{
23610 find interpretation(problem,interpretation);
23611 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23612 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
23613 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23614 BinaryElementRelationLink.param1(link,source);
23615 BinaryElementRelationLink.param2(link,target);
23616}
23617/**
23618 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
23619 */
23620private pattern mayInRelationeAllReferences_reference_EClass(
23621 problem:LogicProblem, interpretation:PartialInterpretation,
23622 source: DefinedElement, target:DefinedElement)
23623{
23624 find interpretation(problem,interpretation);
23625 // The two endpoint of the link have to exist
23626 find mayExist(problem, interpretation, source);
23627 find mayExist(problem, interpretation, target);
23628 // Type consistency
23629 find mayInstanceOfEClass_class(problem,interpretation,source);
23630 find mayInstanceOfEReference_class(problem,interpretation,target);
23631} or {
23632 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
23633}
23634/**
23635 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
23636 */
23637private pattern mustInRelationeReferences_reference_EClass(
23638 problem:LogicProblem, interpretation:PartialInterpretation,
23639 source: DefinedElement, target:DefinedElement)
23640{
23641 find interpretation(problem,interpretation);
23642 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23643 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
23644 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23645 BinaryElementRelationLink.param1(link,source);
23646 BinaryElementRelationLink.param2(link,target);
23647}
23648/**
23649 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
23650 */
23651private pattern mayInRelationeReferences_reference_EClass(
23652 problem:LogicProblem, interpretation:PartialInterpretation,
23653 source: DefinedElement, target:DefinedElement)
23654{
23655 find interpretation(problem,interpretation);
23656 // The two endpoint of the link have to exist
23657 find mayExist(problem, interpretation, source);
23658 find mayExist(problem, interpretation, target);
23659 // Type consistency
23660 find mayInstanceOfEClass_class(problem,interpretation,source);
23661 find mayInstanceOfEReference_class(problem,interpretation,target);
23662} or {
23663 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
23664}
23665/**
23666 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
23667 */
23668private pattern mustInRelationeAttributes_reference_EClass(
23669 problem:LogicProblem, interpretation:PartialInterpretation,
23670 source: DefinedElement, target:DefinedElement)
23671{
23672 find interpretation(problem,interpretation);
23673 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23674 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
23675 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23676 BinaryElementRelationLink.param1(link,source);
23677 BinaryElementRelationLink.param2(link,target);
23678}
23679/**
23680 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
23681 */
23682private pattern mayInRelationeAttributes_reference_EClass(
23683 problem:LogicProblem, interpretation:PartialInterpretation,
23684 source: DefinedElement, target:DefinedElement)
23685{
23686 find interpretation(problem,interpretation);
23687 // The two endpoint of the link have to exist
23688 find mayExist(problem, interpretation, source);
23689 find mayExist(problem, interpretation, target);
23690 // Type consistency
23691 find mayInstanceOfEClass_class(problem,interpretation,source);
23692 find mayInstanceOfEAttribute_class(problem,interpretation,target);
23693} or {
23694 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
23695}
23696/**
23697 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
23698 */
23699private pattern mustInRelationeAllContainments_reference_EClass(
23700 problem:LogicProblem, interpretation:PartialInterpretation,
23701 source: DefinedElement, target:DefinedElement)
23702{
23703 find interpretation(problem,interpretation);
23704 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23705 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
23706 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23707 BinaryElementRelationLink.param1(link,source);
23708 BinaryElementRelationLink.param2(link,target);
23709}
23710/**
23711 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
23712 */
23713private pattern mayInRelationeAllContainments_reference_EClass(
23714 problem:LogicProblem, interpretation:PartialInterpretation,
23715 source: DefinedElement, target:DefinedElement)
23716{
23717 find interpretation(problem,interpretation);
23718 // The two endpoint of the link have to exist
23719 find mayExist(problem, interpretation, source);
23720 find mayExist(problem, interpretation, target);
23721 // Type consistency
23722 find mayInstanceOfEClass_class(problem,interpretation,source);
23723 find mayInstanceOfEReference_class(problem,interpretation,target);
23724} or {
23725 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
23726}
23727/**
23728 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
23729 */
23730private pattern mustInRelationeAllOperations_reference_EClass(
23731 problem:LogicProblem, interpretation:PartialInterpretation,
23732 source: DefinedElement, target:DefinedElement)
23733{
23734 find interpretation(problem,interpretation);
23735 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23736 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
23737 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23738 BinaryElementRelationLink.param1(link,source);
23739 BinaryElementRelationLink.param2(link,target);
23740}
23741/**
23742 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
23743 */
23744private pattern mayInRelationeAllOperations_reference_EClass(
23745 problem:LogicProblem, interpretation:PartialInterpretation,
23746 source: DefinedElement, target:DefinedElement)
23747{
23748 find interpretation(problem,interpretation);
23749 // The two endpoint of the link have to exist
23750 find mayExist(problem, interpretation, source);
23751 find mayExist(problem, interpretation, target);
23752 // Type consistency
23753 find mayInstanceOfEClass_class(problem,interpretation,source);
23754 find mayInstanceOfEOperation_class(problem,interpretation,target);
23755} or {
23756 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
23757}
23758/**
23759 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
23760 */
23761private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
23762 problem:LogicProblem, interpretation:PartialInterpretation,
23763 source: DefinedElement, target:DefinedElement)
23764{
23765 find interpretation(problem,interpretation);
23766 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23767 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
23768 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23769 BinaryElementRelationLink.param1(link,source);
23770 BinaryElementRelationLink.param2(link,target);
23771}
23772/**
23773 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
23774 */
23775private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
23776 problem:LogicProblem, interpretation:PartialInterpretation,
23777 source: DefinedElement, target:DefinedElement)
23778{
23779 find interpretation(problem,interpretation);
23780 // The two endpoint of the link have to exist
23781 find mayExist(problem, interpretation, source);
23782 find mayExist(problem, interpretation, target);
23783 // Type consistency
23784 find mayInstanceOfEClass_class(problem,interpretation,source);
23785 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
23786} or {
23787 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
23788}
23789/**
23790 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
23791 */
23792private pattern mustInRelationeAllSuperTypes_reference_EClass(
23793 problem:LogicProblem, interpretation:PartialInterpretation,
23794 source: DefinedElement, target:DefinedElement)
23795{
23796 find interpretation(problem,interpretation);
23797 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23798 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
23799 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23800 BinaryElementRelationLink.param1(link,source);
23801 BinaryElementRelationLink.param2(link,target);
23802}
23803/**
23804 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
23805 */
23806private pattern mayInRelationeAllSuperTypes_reference_EClass(
23807 problem:LogicProblem, interpretation:PartialInterpretation,
23808 source: DefinedElement, target:DefinedElement)
23809{
23810 find interpretation(problem,interpretation);
23811 // The two endpoint of the link have to exist
23812 find mayExist(problem, interpretation, source);
23813 find mayExist(problem, interpretation, target);
23814 // Type consistency
23815 find mayInstanceOfEClass_class(problem,interpretation,source);
23816 find mayInstanceOfEClass_class(problem,interpretation,target);
23817} or {
23818 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
23819}
23820/**
23821 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
23822 */
23823private pattern mustInRelationeIDAttribute_reference_EClass(
23824 problem:LogicProblem, interpretation:PartialInterpretation,
23825 source: DefinedElement, target:DefinedElement)
23826{
23827 find interpretation(problem,interpretation);
23828 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23829 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
23830 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23831 BinaryElementRelationLink.param1(link,source);
23832 BinaryElementRelationLink.param2(link,target);
23833}
23834/**
23835 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
23836 */
23837private pattern mayInRelationeIDAttribute_reference_EClass(
23838 problem:LogicProblem, interpretation:PartialInterpretation,
23839 source: DefinedElement, target:DefinedElement)
23840{
23841 find interpretation(problem,interpretation);
23842 // The two endpoint of the link have to exist
23843 find mayExist(problem, interpretation, source);
23844 find mayExist(problem, interpretation, target);
23845 // Type consistency
23846 find mayInstanceOfEClass_class(problem,interpretation,source);
23847 find mayInstanceOfEAttribute_class(problem,interpretation,target);
23848 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23849 // the upper bound of the multiplicity should be considered.
23850 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
23851 check(numberOfExistingReferences < 1);
23852} or {
23853 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
23854}
23855/**
23856 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
23857 */
23858private pattern mustInRelationeStructuralFeatures_reference_EClass(
23859 problem:LogicProblem, interpretation:PartialInterpretation,
23860 source: DefinedElement, target:DefinedElement)
23861{
23862 find interpretation(problem,interpretation);
23863 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23864 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
23865 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23866 BinaryElementRelationLink.param1(link,source);
23867 BinaryElementRelationLink.param2(link,target);
23868}
23869/**
23870 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
23871 */
23872private pattern mayInRelationeStructuralFeatures_reference_EClass(
23873 problem:LogicProblem, interpretation:PartialInterpretation,
23874 source: DefinedElement, target:DefinedElement)
23875{
23876 find interpretation(problem,interpretation);
23877 // The two endpoint of the link have to exist
23878 find mayExist(problem, interpretation, source);
23879 find mayExist(problem, interpretation, target);
23880 // Type consistency
23881 find mayInstanceOfEClass_class(problem,interpretation,source);
23882 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
23883 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23884 // the upper bound of the opposite reference multiplicity should be considered.
23885 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
23886 check(numberOfExistingOppositeReferences < 1);
23887 // The reference is containment, then a new reference cannot be create if:
23888 // 1. Multiple parents
23889 neg find mustContains4(problem,interpretation,_,target);
23890 // 2. Circle in the containment hierarchy
23891 neg find mustTransitiveContains(source,target);
23892} or {
23893 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
23894}
23895/**
23896 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
23897 */
23898private pattern mustInRelationeGenericSuperTypes_reference_EClass(
23899 problem:LogicProblem, interpretation:PartialInterpretation,
23900 source: DefinedElement, target:DefinedElement)
23901{
23902 find interpretation(problem,interpretation);
23903 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23904 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
23905 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23906 BinaryElementRelationLink.param1(link,source);
23907 BinaryElementRelationLink.param2(link,target);
23908}
23909/**
23910 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
23911 */
23912private pattern mayInRelationeGenericSuperTypes_reference_EClass(
23913 problem:LogicProblem, interpretation:PartialInterpretation,
23914 source: DefinedElement, target:DefinedElement)
23915{
23916 find interpretation(problem,interpretation);
23917 // The two endpoint of the link have to exist
23918 find mayExist(problem, interpretation, source);
23919 find mayExist(problem, interpretation, target);
23920 // Type consistency
23921 find mayInstanceOfEClass_class(problem,interpretation,source);
23922 find mayInstanceOfEGenericType_class(problem,interpretation,target);
23923 // The reference is containment, then a new reference cannot be create if:
23924 // 1. Multiple parents
23925 neg find mustContains4(problem,interpretation,_,target);
23926 // 2. Circle in the containment hierarchy
23927 neg find mustTransitiveContains(source,target);
23928} or {
23929 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
23930}
23931/**
23932 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
23933 */
23934private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
23935 problem:LogicProblem, interpretation:PartialInterpretation,
23936 source: DefinedElement, target:DefinedElement)
23937{
23938 find interpretation(problem,interpretation);
23939 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23940 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
23941 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23942 BinaryElementRelationLink.param1(link,source);
23943 BinaryElementRelationLink.param2(link,target);
23944}
23945/**
23946 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
23947 */
23948private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
23949 problem:LogicProblem, interpretation:PartialInterpretation,
23950 source: DefinedElement, target:DefinedElement)
23951{
23952 find interpretation(problem,interpretation);
23953 // The two endpoint of the link have to exist
23954 find mayExist(problem, interpretation, source);
23955 find mayExist(problem, interpretation, target);
23956 // Type consistency
23957 find mayInstanceOfEClass_class(problem,interpretation,source);
23958 find mayInstanceOfEGenericType_class(problem,interpretation,target);
23959} or {
23960 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
23961}
23962/**
23963 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
23964 */
23965private pattern mustInRelationePackage_reference_EClassifier(
23966 problem:LogicProblem, interpretation:PartialInterpretation,
23967 source: DefinedElement, target:DefinedElement)
23968{
23969 find interpretation(problem,interpretation);
23970 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23971 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
23972 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23973 BinaryElementRelationLink.param1(link,source);
23974 BinaryElementRelationLink.param2(link,target);
23975}
23976/**
23977 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
23978 */
23979private pattern mayInRelationePackage_reference_EClassifier(
23980 problem:LogicProblem, interpretation:PartialInterpretation,
23981 source: DefinedElement, target:DefinedElement)
23982{
23983 find interpretation(problem,interpretation);
23984 // The two endpoint of the link have to exist
23985 find mayExist(problem, interpretation, source);
23986 find mayExist(problem, interpretation, target);
23987 // Type consistency
23988 find mayInstanceOfEClassifier_class(problem,interpretation,source);
23989 find mayInstanceOfEPackage_class(problem,interpretation,target);
23990 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23991 // the upper bound of the multiplicity should be considered.
23992 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
23993 check(numberOfExistingReferences < 1);
23994 // The eOpposite of the reference is containment, then a referene cannot be created if
23995 // 1. Multiple parents
23996 neg find mustContains4(problem,interpretation,source,_);
23997 // 2. Circle in the containment hierarchy
23998 neg find mustTransitiveContains(source,target);
23999} or {
24000 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
24001}
24002/**
24003 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
24004 */
24005private pattern mustInRelationeTypeParameters_reference_EClassifier(
24006 problem:LogicProblem, interpretation:PartialInterpretation,
24007 source: DefinedElement, target:DefinedElement)
24008{
24009 find interpretation(problem,interpretation);
24010 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24011 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
24012 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24013 BinaryElementRelationLink.param1(link,source);
24014 BinaryElementRelationLink.param2(link,target);
24015}
24016/**
24017 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
24018 */
24019private pattern mayInRelationeTypeParameters_reference_EClassifier(
24020 problem:LogicProblem, interpretation:PartialInterpretation,
24021 source: DefinedElement, target:DefinedElement)
24022{
24023 find interpretation(problem,interpretation);
24024 // The two endpoint of the link have to exist
24025 find mayExist(problem, interpretation, source);
24026 find mayExist(problem, interpretation, target);
24027 // Type consistency
24028 find mayInstanceOfEClassifier_class(problem,interpretation,source);
24029 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
24030 // The reference is containment, then a new reference cannot be create if:
24031 // 1. Multiple parents
24032 neg find mustContains4(problem,interpretation,_,target);
24033 // 2. Circle in the containment hierarchy
24034 neg find mustTransitiveContains(source,target);
24035} or {
24036 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
24037}
24038/**
24039 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
24040 */
24041private pattern mustInRelationeLiterals_reference_EEnum(
24042 problem:LogicProblem, interpretation:PartialInterpretation,
24043 source: DefinedElement, target:DefinedElement)
24044{
24045 find interpretation(problem,interpretation);
24046 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24047 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
24048 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24049 BinaryElementRelationLink.param1(link,source);
24050 BinaryElementRelationLink.param2(link,target);
24051}
24052/**
24053 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
24054 */
24055private pattern mayInRelationeLiterals_reference_EEnum(
24056 problem:LogicProblem, interpretation:PartialInterpretation,
24057 source: DefinedElement, target:DefinedElement)
24058{
24059 find interpretation(problem,interpretation);
24060 // The two endpoint of the link have to exist
24061 find mayExist(problem, interpretation, source);
24062 find mayExist(problem, interpretation, target);
24063 // Type consistency
24064 find mayInstanceOfEEnum_class(problem,interpretation,source);
24065 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
24066 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
24067 // the upper bound of the opposite reference multiplicity should be considered.
24068 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
24069 check(numberOfExistingOppositeReferences < 1);
24070 // The reference is containment, then a new reference cannot be create if:
24071 // 1. Multiple parents
24072 neg find mustContains4(problem,interpretation,_,target);
24073 // 2. Circle in the containment hierarchy
24074 neg find mustTransitiveContains(source,target);
24075} or {
24076 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
24077}
24078/**
24079 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
24080 */
24081private pattern mustInRelationeEnum_reference_EEnumLiteral(
24082 problem:LogicProblem, interpretation:PartialInterpretation,
24083 source: DefinedElement, target:DefinedElement)
24084{
24085 find interpretation(problem,interpretation);
24086 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24087 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
24088 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24089 BinaryElementRelationLink.param1(link,source);
24090 BinaryElementRelationLink.param2(link,target);
24091}
24092/**
24093 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
24094 */
24095private pattern mayInRelationeEnum_reference_EEnumLiteral(
24096 problem:LogicProblem, interpretation:PartialInterpretation,
24097 source: DefinedElement, target:DefinedElement)
24098{
24099 find interpretation(problem,interpretation);
24100 // The two endpoint of the link have to exist
24101 find mayExist(problem, interpretation, source);
24102 find mayExist(problem, interpretation, target);
24103 // Type consistency
24104 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
24105 find mayInstanceOfEEnum_class(problem,interpretation,target);
24106 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24107 // the upper bound of the multiplicity should be considered.
24108 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
24109 check(numberOfExistingReferences < 1);
24110 // The eOpposite of the reference is containment, then a referene cannot be created if
24111 // 1. Multiple parents
24112 neg find mustContains4(problem,interpretation,source,_);
24113 // 2. Circle in the containment hierarchy
24114 neg find mustTransitiveContains(source,target);
24115} or {
24116 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
24117}
24118/**
24119 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
24120 */
24121private pattern mustInRelationeAnnotations_reference_EModelElement(
24122 problem:LogicProblem, interpretation:PartialInterpretation,
24123 source: DefinedElement, target:DefinedElement)
24124{
24125 find interpretation(problem,interpretation);
24126 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24127 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
24128 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24129 BinaryElementRelationLink.param1(link,source);
24130 BinaryElementRelationLink.param2(link,target);
24131}
24132/**
24133 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
24134 */
24135private pattern mayInRelationeAnnotations_reference_EModelElement(
24136 problem:LogicProblem, interpretation:PartialInterpretation,
24137 source: DefinedElement, target:DefinedElement)
24138{
24139 find interpretation(problem,interpretation);
24140 // The two endpoint of the link have to exist
24141 find mayExist(problem, interpretation, source);
24142 find mayExist(problem, interpretation, target);
24143 // Type consistency
24144 find mayInstanceOfEModelElement_class(problem,interpretation,source);
24145 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
24146 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
24147 // the upper bound of the opposite reference multiplicity should be considered.
24148 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
24149 check(numberOfExistingOppositeReferences < 1);
24150 // The reference is containment, then a new reference cannot be create if:
24151 // 1. Multiple parents
24152 neg find mustContains4(problem,interpretation,_,target);
24153 // 2. Circle in the containment hierarchy
24154 neg find mustTransitiveContains(source,target);
24155} or {
24156 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
24157}
24158/**
24159 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
24160 */
24161private pattern mustInRelationeContainingClass_reference_EOperation(
24162 problem:LogicProblem, interpretation:PartialInterpretation,
24163 source: DefinedElement, target:DefinedElement)
24164{
24165 find interpretation(problem,interpretation);
24166 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24167 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
24168 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24169 BinaryElementRelationLink.param1(link,source);
24170 BinaryElementRelationLink.param2(link,target);
24171}
24172/**
24173 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
24174 */
24175private pattern mayInRelationeContainingClass_reference_EOperation(
24176 problem:LogicProblem, interpretation:PartialInterpretation,
24177 source: DefinedElement, target:DefinedElement)
24178{
24179 find interpretation(problem,interpretation);
24180 // The two endpoint of the link have to exist
24181 find mayExist(problem, interpretation, source);
24182 find mayExist(problem, interpretation, target);
24183 // Type consistency
24184 find mayInstanceOfEOperation_class(problem,interpretation,source);
24185 find mayInstanceOfEClass_class(problem,interpretation,target);
24186 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24187 // the upper bound of the multiplicity should be considered.
24188 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
24189 check(numberOfExistingReferences < 1);
24190 // The eOpposite of the reference is containment, then a referene cannot be created if
24191 // 1. Multiple parents
24192 neg find mustContains4(problem,interpretation,source,_);
24193 // 2. Circle in the containment hierarchy
24194 neg find mustTransitiveContains(source,target);
24195} or {
24196 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
24197}
24198/**
24199 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
24200 */
24201private pattern mustInRelationeTypeParameters_reference_EOperation(
24202 problem:LogicProblem, interpretation:PartialInterpretation,
24203 source: DefinedElement, target:DefinedElement)
24204{
24205 find interpretation(problem,interpretation);
24206 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24207 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
24208 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24209 BinaryElementRelationLink.param1(link,source);
24210 BinaryElementRelationLink.param2(link,target);
24211}
24212/**
24213 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
24214 */
24215private pattern mayInRelationeTypeParameters_reference_EOperation(
24216 problem:LogicProblem, interpretation:PartialInterpretation,
24217 source: DefinedElement, target:DefinedElement)
24218{
24219 find interpretation(problem,interpretation);
24220 // The two endpoint of the link have to exist
24221 find mayExist(problem, interpretation, source);
24222 find mayExist(problem, interpretation, target);
24223 // Type consistency
24224 find mayInstanceOfEOperation_class(problem,interpretation,source);
24225 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
24226 // The reference is containment, then a new reference cannot be create if:
24227 // 1. Multiple parents
24228 neg find mustContains4(problem,interpretation,_,target);
24229 // 2. Circle in the containment hierarchy
24230 neg find mustTransitiveContains(source,target);
24231} or {
24232 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
24233}
24234/**
24235 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
24236 */
24237private pattern mustInRelationeParameters_reference_EOperation(
24238 problem:LogicProblem, interpretation:PartialInterpretation,
24239 source: DefinedElement, target:DefinedElement)
24240{
24241 find interpretation(problem,interpretation);
24242 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24243 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
24244 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24245 BinaryElementRelationLink.param1(link,source);
24246 BinaryElementRelationLink.param2(link,target);
24247}
24248/**
24249 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
24250 */
24251private pattern mayInRelationeParameters_reference_EOperation(
24252 problem:LogicProblem, interpretation:PartialInterpretation,
24253 source: DefinedElement, target:DefinedElement)
24254{
24255 find interpretation(problem,interpretation);
24256 // The two endpoint of the link have to exist
24257 find mayExist(problem, interpretation, source);
24258 find mayExist(problem, interpretation, target);
24259 // Type consistency
24260 find mayInstanceOfEOperation_class(problem,interpretation,source);
24261 find mayInstanceOfEParameter_class(problem,interpretation,target);
24262 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
24263 // the upper bound of the opposite reference multiplicity should be considered.
24264 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
24265 check(numberOfExistingOppositeReferences < 1);
24266 // The reference is containment, then a new reference cannot be create if:
24267 // 1. Multiple parents
24268 neg find mustContains4(problem,interpretation,_,target);
24269 // 2. Circle in the containment hierarchy
24270 neg find mustTransitiveContains(source,target);
24271} or {
24272 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
24273}
24274/**
24275 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
24276 */
24277private pattern mustInRelationeExceptions_reference_EOperation(
24278 problem:LogicProblem, interpretation:PartialInterpretation,
24279 source: DefinedElement, target:DefinedElement)
24280{
24281 find interpretation(problem,interpretation);
24282 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24283 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
24284 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24285 BinaryElementRelationLink.param1(link,source);
24286 BinaryElementRelationLink.param2(link,target);
24287}
24288/**
24289 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
24290 */
24291private pattern mayInRelationeExceptions_reference_EOperation(
24292 problem:LogicProblem, interpretation:PartialInterpretation,
24293 source: DefinedElement, target:DefinedElement)
24294{
24295 find interpretation(problem,interpretation);
24296 // The two endpoint of the link have to exist
24297 find mayExist(problem, interpretation, source);
24298 find mayExist(problem, interpretation, target);
24299 // Type consistency
24300 find mayInstanceOfEOperation_class(problem,interpretation,source);
24301 find mayInstanceOfEClassifier_class(problem,interpretation,target);
24302} or {
24303 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
24304}
24305/**
24306 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
24307 */
24308private pattern mustInRelationeGenericExceptions_reference_EOperation(
24309 problem:LogicProblem, interpretation:PartialInterpretation,
24310 source: DefinedElement, target:DefinedElement)
24311{
24312 find interpretation(problem,interpretation);
24313 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24314 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
24315 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24316 BinaryElementRelationLink.param1(link,source);
24317 BinaryElementRelationLink.param2(link,target);
24318}
24319/**
24320 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
24321 */
24322private pattern mayInRelationeGenericExceptions_reference_EOperation(
24323 problem:LogicProblem, interpretation:PartialInterpretation,
24324 source: DefinedElement, target:DefinedElement)
24325{
24326 find interpretation(problem,interpretation);
24327 // The two endpoint of the link have to exist
24328 find mayExist(problem, interpretation, source);
24329 find mayExist(problem, interpretation, target);
24330 // Type consistency
24331 find mayInstanceOfEOperation_class(problem,interpretation,source);
24332 find mayInstanceOfEGenericType_class(problem,interpretation,target);
24333 // The reference is containment, then a new reference cannot be create if:
24334 // 1. Multiple parents
24335 neg find mustContains4(problem,interpretation,_,target);
24336 // 2. Circle in the containment hierarchy
24337 neg find mustTransitiveContains(source,target);
24338} or {
24339 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
24340}
24341/**
24342 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
24343 */
24344private pattern mustInRelationeClassifiers_reference_EPackage(
24345 problem:LogicProblem, interpretation:PartialInterpretation,
24346 source: DefinedElement, target:DefinedElement)
24347{
24348 find interpretation(problem,interpretation);
24349 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24350 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
24351 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24352 BinaryElementRelationLink.param1(link,source);
24353 BinaryElementRelationLink.param2(link,target);
24354}
24355/**
24356 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
24357 */
24358private pattern mayInRelationeClassifiers_reference_EPackage(
24359 problem:LogicProblem, interpretation:PartialInterpretation,
24360 source: DefinedElement, target:DefinedElement)
24361{
24362 find interpretation(problem,interpretation);
24363 // The two endpoint of the link have to exist
24364 find mayExist(problem, interpretation, source);
24365 find mayExist(problem, interpretation, target);
24366 // Type consistency
24367 find mayInstanceOfEPackage_class(problem,interpretation,source);
24368 find mayInstanceOfEClassifier_class(problem,interpretation,target);
24369 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
24370 // the upper bound of the opposite reference multiplicity should be considered.
24371 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
24372 check(numberOfExistingOppositeReferences < 1);
24373 // The reference is containment, then a new reference cannot be create if:
24374 // 1. Multiple parents
24375 neg find mustContains4(problem,interpretation,_,target);
24376 // 2. Circle in the containment hierarchy
24377 neg find mustTransitiveContains(source,target);
24378} or {
24379 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
24380}
24381/**
24382 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
24383 */
24384private pattern mustInRelationeSubpackages_reference_EPackage(
24385 problem:LogicProblem, interpretation:PartialInterpretation,
24386 source: DefinedElement, target:DefinedElement)
24387{
24388 find interpretation(problem,interpretation);
24389 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24390 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
24391 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24392 BinaryElementRelationLink.param1(link,source);
24393 BinaryElementRelationLink.param2(link,target);
24394}
24395/**
24396 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
24397 */
24398private pattern mayInRelationeSubpackages_reference_EPackage(
24399 problem:LogicProblem, interpretation:PartialInterpretation,
24400 source: DefinedElement, target:DefinedElement)
24401{
24402 find interpretation(problem,interpretation);
24403 // The two endpoint of the link have to exist
24404 find mayExist(problem, interpretation, source);
24405 find mayExist(problem, interpretation, target);
24406 // Type consistency
24407 find mayInstanceOfEPackage_class(problem,interpretation,source);
24408 find mayInstanceOfEPackage_class(problem,interpretation,target);
24409 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
24410 // the upper bound of the opposite reference multiplicity should be considered.
24411 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
24412 check(numberOfExistingOppositeReferences < 1);
24413 // The reference is containment, then a new reference cannot be create if:
24414 // 1. Multiple parents
24415 neg find mustContains4(problem,interpretation,_,target);
24416 // 2. Circle in the containment hierarchy
24417 neg find mustTransitiveContains(source,target);
24418} or {
24419 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
24420}
24421/**
24422 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
24423 */
24424private pattern mustInRelationeSuperPackage_reference_EPackage(
24425 problem:LogicProblem, interpretation:PartialInterpretation,
24426 source: DefinedElement, target:DefinedElement)
24427{
24428 find interpretation(problem,interpretation);
24429 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24430 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
24431 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24432 BinaryElementRelationLink.param1(link,source);
24433 BinaryElementRelationLink.param2(link,target);
24434}
24435/**
24436 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
24437 */
24438private pattern mayInRelationeSuperPackage_reference_EPackage(
24439 problem:LogicProblem, interpretation:PartialInterpretation,
24440 source: DefinedElement, target:DefinedElement)
24441{
24442 find interpretation(problem,interpretation);
24443 // The two endpoint of the link have to exist
24444 find mayExist(problem, interpretation, source);
24445 find mayExist(problem, interpretation, target);
24446 // Type consistency
24447 find mayInstanceOfEPackage_class(problem,interpretation,source);
24448 find mayInstanceOfEPackage_class(problem,interpretation,target);
24449 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24450 // the upper bound of the multiplicity should be considered.
24451 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
24452 check(numberOfExistingReferences < 1);
24453 // The eOpposite of the reference is containment, then a referene cannot be created if
24454 // 1. Multiple parents
24455 neg find mustContains4(problem,interpretation,source,_);
24456 // 2. Circle in the containment hierarchy
24457 neg find mustTransitiveContains(source,target);
24458} or {
24459 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
24460}
24461/**
24462 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
24463 */
24464private pattern mustInRelationeOperation_reference_EParameter(
24465 problem:LogicProblem, interpretation:PartialInterpretation,
24466 source: DefinedElement, target:DefinedElement)
24467{
24468 find interpretation(problem,interpretation);
24469 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24470 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
24471 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24472 BinaryElementRelationLink.param1(link,source);
24473 BinaryElementRelationLink.param2(link,target);
24474}
24475/**
24476 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
24477 */
24478private pattern mayInRelationeOperation_reference_EParameter(
24479 problem:LogicProblem, interpretation:PartialInterpretation,
24480 source: DefinedElement, target:DefinedElement)
24481{
24482 find interpretation(problem,interpretation);
24483 // The two endpoint of the link have to exist
24484 find mayExist(problem, interpretation, source);
24485 find mayExist(problem, interpretation, target);
24486 // Type consistency
24487 find mayInstanceOfEParameter_class(problem,interpretation,source);
24488 find mayInstanceOfEOperation_class(problem,interpretation,target);
24489 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24490 // the upper bound of the multiplicity should be considered.
24491 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
24492 check(numberOfExistingReferences < 1);
24493 // The eOpposite of the reference is containment, then a referene cannot be created if
24494 // 1. Multiple parents
24495 neg find mustContains4(problem,interpretation,source,_);
24496 // 2. Circle in the containment hierarchy
24497 neg find mustTransitiveContains(source,target);
24498} or {
24499 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
24500}
24501/**
24502 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
24503 */
24504private pattern mustInRelationeOpposite_reference_EReference(
24505 problem:LogicProblem, interpretation:PartialInterpretation,
24506 source: DefinedElement, target:DefinedElement)
24507{
24508 find interpretation(problem,interpretation);
24509 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24510 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
24511 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24512 BinaryElementRelationLink.param1(link,source);
24513 BinaryElementRelationLink.param2(link,target);
24514}
24515/**
24516 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
24517 */
24518private pattern mayInRelationeOpposite_reference_EReference(
24519 problem:LogicProblem, interpretation:PartialInterpretation,
24520 source: DefinedElement, target:DefinedElement)
24521{
24522 find interpretation(problem,interpretation);
24523 // The two endpoint of the link have to exist
24524 find mayExist(problem, interpretation, source);
24525 find mayExist(problem, interpretation, target);
24526 // Type consistency
24527 find mayInstanceOfEReference_class(problem,interpretation,source);
24528 find mayInstanceOfEReference_class(problem,interpretation,target);
24529 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24530 // the upper bound of the multiplicity should be considered.
24531 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
24532 check(numberOfExistingReferences < 1);
24533} or {
24534 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
24535}
24536/**
24537 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
24538 */
24539private pattern mustInRelationeReferenceType_reference_EReference(
24540 problem:LogicProblem, interpretation:PartialInterpretation,
24541 source: DefinedElement, target:DefinedElement)
24542{
24543 find interpretation(problem,interpretation);
24544 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24545 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
24546 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24547 BinaryElementRelationLink.param1(link,source);
24548 BinaryElementRelationLink.param2(link,target);
24549}
24550/**
24551 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
24552 */
24553private pattern mayInRelationeReferenceType_reference_EReference(
24554 problem:LogicProblem, interpretation:PartialInterpretation,
24555 source: DefinedElement, target:DefinedElement)
24556{
24557 find interpretation(problem,interpretation);
24558 // The two endpoint of the link have to exist
24559 find mayExist(problem, interpretation, source);
24560 find mayExist(problem, interpretation, target);
24561 // Type consistency
24562 find mayInstanceOfEReference_class(problem,interpretation,source);
24563 find mayInstanceOfEClass_class(problem,interpretation,target);
24564 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24565 // the upper bound of the multiplicity should be considered.
24566 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
24567 check(numberOfExistingReferences < 1);
24568} or {
24569 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
24570}
24571/**
24572 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
24573 */
24574private pattern mustInRelationeKeys_reference_EReference(
24575 problem:LogicProblem, interpretation:PartialInterpretation,
24576 source: DefinedElement, target:DefinedElement)
24577{
24578 find interpretation(problem,interpretation);
24579 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24580 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
24581 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24582 BinaryElementRelationLink.param1(link,source);
24583 BinaryElementRelationLink.param2(link,target);
24584}
24585/**
24586 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
24587 */
24588private pattern mayInRelationeKeys_reference_EReference(
24589 problem:LogicProblem, interpretation:PartialInterpretation,
24590 source: DefinedElement, target:DefinedElement)
24591{
24592 find interpretation(problem,interpretation);
24593 // The two endpoint of the link have to exist
24594 find mayExist(problem, interpretation, source);
24595 find mayExist(problem, interpretation, target);
24596 // Type consistency
24597 find mayInstanceOfEReference_class(problem,interpretation,source);
24598 find mayInstanceOfEAttribute_class(problem,interpretation,target);
24599} or {
24600 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
24601}
24602/**
24603 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
24604 */
24605private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
24606 problem:LogicProblem, interpretation:PartialInterpretation,
24607 source: DefinedElement, target:DefinedElement)
24608{
24609 find interpretation(problem,interpretation);
24610 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24611 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
24612 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24613 BinaryElementRelationLink.param1(link,source);
24614 BinaryElementRelationLink.param2(link,target);
24615}
24616/**
24617 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
24618 */
24619private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
24620 problem:LogicProblem, interpretation:PartialInterpretation,
24621 source: DefinedElement, target:DefinedElement)
24622{
24623 find interpretation(problem,interpretation);
24624 // The two endpoint of the link have to exist
24625 find mayExist(problem, interpretation, source);
24626 find mayExist(problem, interpretation, target);
24627 // Type consistency
24628 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
24629 find mayInstanceOfEClass_class(problem,interpretation,target);
24630 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24631 // the upper bound of the multiplicity should be considered.
24632 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
24633 check(numberOfExistingReferences < 1);
24634 // The eOpposite of the reference is containment, then a referene cannot be created if
24635 // 1. Multiple parents
24636 neg find mustContains4(problem,interpretation,source,_);
24637 // 2. Circle in the containment hierarchy
24638 neg find mustTransitiveContains(source,target);
24639} or {
24640 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
24641}
24642/**
24643 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
24644 */
24645private pattern mustInRelationeType_reference_ETypedElement(
24646 problem:LogicProblem, interpretation:PartialInterpretation,
24647 source: DefinedElement, target:DefinedElement)
24648{
24649 find interpretation(problem,interpretation);
24650 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24651 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
24652 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24653 BinaryElementRelationLink.param1(link,source);
24654 BinaryElementRelationLink.param2(link,target);
24655}
24656/**
24657 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
24658 */
24659private pattern mayInRelationeType_reference_ETypedElement(
24660 problem:LogicProblem, interpretation:PartialInterpretation,
24661 source: DefinedElement, target:DefinedElement)
24662{
24663 find interpretation(problem,interpretation);
24664 // The two endpoint of the link have to exist
24665 find mayExist(problem, interpretation, source);
24666 find mayExist(problem, interpretation, target);
24667 // Type consistency
24668 find mayInstanceOfETypedElement_class(problem,interpretation,source);
24669 find mayInstanceOfEClassifier_class(problem,interpretation,target);
24670 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24671 // the upper bound of the multiplicity should be considered.
24672 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
24673 check(numberOfExistingReferences < 1);
24674} or {
24675 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
24676}
24677/**
24678 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
24679 */
24680private pattern mustInRelationeGenericType_reference_ETypedElement(
24681 problem:LogicProblem, interpretation:PartialInterpretation,
24682 source: DefinedElement, target:DefinedElement)
24683{
24684 find interpretation(problem,interpretation);
24685 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24686 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
24687 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24688 BinaryElementRelationLink.param1(link,source);
24689 BinaryElementRelationLink.param2(link,target);
24690}
24691/**
24692 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
24693 */
24694private pattern mayInRelationeGenericType_reference_ETypedElement(
24695 problem:LogicProblem, interpretation:PartialInterpretation,
24696 source: DefinedElement, target:DefinedElement)
24697{
24698 find interpretation(problem,interpretation);
24699 // The two endpoint of the link have to exist
24700 find mayExist(problem, interpretation, source);
24701 find mayExist(problem, interpretation, target);
24702 // Type consistency
24703 find mayInstanceOfETypedElement_class(problem,interpretation,source);
24704 find mayInstanceOfEGenericType_class(problem,interpretation,target);
24705 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24706 // the upper bound of the multiplicity should be considered.
24707 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
24708 check(numberOfExistingReferences < 1);
24709 // The reference is containment, then a new reference cannot be create if:
24710 // 1. Multiple parents
24711 neg find mustContains4(problem,interpretation,_,target);
24712 // 2. Circle in the containment hierarchy
24713 neg find mustTransitiveContains(source,target);
24714} or {
24715 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
24716}
24717/**
24718 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
24719 */
24720private pattern mustInRelationeUpperBound_reference_EGenericType(
24721 problem:LogicProblem, interpretation:PartialInterpretation,
24722 source: DefinedElement, target:DefinedElement)
24723{
24724 find interpretation(problem,interpretation);
24725 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24726 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
24727 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24728 BinaryElementRelationLink.param1(link,source);
24729 BinaryElementRelationLink.param2(link,target);
24730}
24731/**
24732 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
24733 */
24734private pattern mayInRelationeUpperBound_reference_EGenericType(
24735 problem:LogicProblem, interpretation:PartialInterpretation,
24736 source: DefinedElement, target:DefinedElement)
24737{
24738 find interpretation(problem,interpretation);
24739 // The two endpoint of the link have to exist
24740 find mayExist(problem, interpretation, source);
24741 find mayExist(problem, interpretation, target);
24742 // Type consistency
24743 find mayInstanceOfEGenericType_class(problem,interpretation,source);
24744 find mayInstanceOfEGenericType_class(problem,interpretation,target);
24745 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24746 // the upper bound of the multiplicity should be considered.
24747 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
24748 check(numberOfExistingReferences < 1);
24749 // The reference is containment, then a new reference cannot be create if:
24750 // 1. Multiple parents
24751 neg find mustContains4(problem,interpretation,_,target);
24752 // 2. Circle in the containment hierarchy
24753 neg find mustTransitiveContains(source,target);
24754} or {
24755 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
24756}
24757/**
24758 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
24759 */
24760private pattern mustInRelationeTypeArguments_reference_EGenericType(
24761 problem:LogicProblem, interpretation:PartialInterpretation,
24762 source: DefinedElement, target:DefinedElement)
24763{
24764 find interpretation(problem,interpretation);
24765 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24766 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
24767 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24768 BinaryElementRelationLink.param1(link,source);
24769 BinaryElementRelationLink.param2(link,target);
24770}
24771/**
24772 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
24773 */
24774private pattern mayInRelationeTypeArguments_reference_EGenericType(
24775 problem:LogicProblem, interpretation:PartialInterpretation,
24776 source: DefinedElement, target:DefinedElement)
24777{
24778 find interpretation(problem,interpretation);
24779 // The two endpoint of the link have to exist
24780 find mayExist(problem, interpretation, source);
24781 find mayExist(problem, interpretation, target);
24782 // Type consistency
24783 find mayInstanceOfEGenericType_class(problem,interpretation,source);
24784 find mayInstanceOfEGenericType_class(problem,interpretation,target);
24785 // The reference is containment, then a new reference cannot be create if:
24786 // 1. Multiple parents
24787 neg find mustContains4(problem,interpretation,_,target);
24788 // 2. Circle in the containment hierarchy
24789 neg find mustTransitiveContains(source,target);
24790} or {
24791 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
24792}
24793/**
24794 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
24795 */
24796private pattern mustInRelationeRawType_reference_EGenericType(
24797 problem:LogicProblem, interpretation:PartialInterpretation,
24798 source: DefinedElement, target:DefinedElement)
24799{
24800 find interpretation(problem,interpretation);
24801 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24802 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
24803 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24804 BinaryElementRelationLink.param1(link,source);
24805 BinaryElementRelationLink.param2(link,target);
24806}
24807/**
24808 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
24809 */
24810private pattern mayInRelationeRawType_reference_EGenericType(
24811 problem:LogicProblem, interpretation:PartialInterpretation,
24812 source: DefinedElement, target:DefinedElement)
24813{
24814 find interpretation(problem,interpretation);
24815 // The two endpoint of the link have to exist
24816 find mayExist(problem, interpretation, source);
24817 find mayExist(problem, interpretation, target);
24818 // Type consistency
24819 find mayInstanceOfEGenericType_class(problem,interpretation,source);
24820 find mayInstanceOfEClassifier_class(problem,interpretation,target);
24821 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24822 // the upper bound of the multiplicity should be considered.
24823 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
24824 check(numberOfExistingReferences < 1);
24825} or {
24826 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
24827}
24828/**
24829 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
24830 */
24831private pattern mustInRelationeLowerBound_reference_EGenericType(
24832 problem:LogicProblem, interpretation:PartialInterpretation,
24833 source: DefinedElement, target:DefinedElement)
24834{
24835 find interpretation(problem,interpretation);
24836 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24837 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
24838 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24839 BinaryElementRelationLink.param1(link,source);
24840 BinaryElementRelationLink.param2(link,target);
24841}
24842/**
24843 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
24844 */
24845private pattern mayInRelationeLowerBound_reference_EGenericType(
24846 problem:LogicProblem, interpretation:PartialInterpretation,
24847 source: DefinedElement, target:DefinedElement)
24848{
24849 find interpretation(problem,interpretation);
24850 // The two endpoint of the link have to exist
24851 find mayExist(problem, interpretation, source);
24852 find mayExist(problem, interpretation, target);
24853 // Type consistency
24854 find mayInstanceOfEGenericType_class(problem,interpretation,source);
24855 find mayInstanceOfEGenericType_class(problem,interpretation,target);
24856 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24857 // the upper bound of the multiplicity should be considered.
24858 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
24859 check(numberOfExistingReferences < 1);
24860 // The reference is containment, then a new reference cannot be create if:
24861 // 1. Multiple parents
24862 neg find mustContains4(problem,interpretation,_,target);
24863 // 2. Circle in the containment hierarchy
24864 neg find mustTransitiveContains(source,target);
24865} or {
24866 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
24867}
24868/**
24869 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
24870 */
24871private pattern mustInRelationeTypeParameter_reference_EGenericType(
24872 problem:LogicProblem, interpretation:PartialInterpretation,
24873 source: DefinedElement, target:DefinedElement)
24874{
24875 find interpretation(problem,interpretation);
24876 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24877 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
24878 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24879 BinaryElementRelationLink.param1(link,source);
24880 BinaryElementRelationLink.param2(link,target);
24881}
24882/**
24883 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
24884 */
24885private pattern mayInRelationeTypeParameter_reference_EGenericType(
24886 problem:LogicProblem, interpretation:PartialInterpretation,
24887 source: DefinedElement, target:DefinedElement)
24888{
24889 find interpretation(problem,interpretation);
24890 // The two endpoint of the link have to exist
24891 find mayExist(problem, interpretation, source);
24892 find mayExist(problem, interpretation, target);
24893 // Type consistency
24894 find mayInstanceOfEGenericType_class(problem,interpretation,source);
24895 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
24896 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24897 // the upper bound of the multiplicity should be considered.
24898 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
24899 check(numberOfExistingReferences < 1);
24900} or {
24901 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
24902}
24903/**
24904 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
24905 */
24906private pattern mustInRelationeClassifier_reference_EGenericType(
24907 problem:LogicProblem, interpretation:PartialInterpretation,
24908 source: DefinedElement, target:DefinedElement)
24909{
24910 find interpretation(problem,interpretation);
24911 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24912 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
24913 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24914 BinaryElementRelationLink.param1(link,source);
24915 BinaryElementRelationLink.param2(link,target);
24916}
24917/**
24918 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
24919 */
24920private pattern mayInRelationeClassifier_reference_EGenericType(
24921 problem:LogicProblem, interpretation:PartialInterpretation,
24922 source: DefinedElement, target:DefinedElement)
24923{
24924 find interpretation(problem,interpretation);
24925 // The two endpoint of the link have to exist
24926 find mayExist(problem, interpretation, source);
24927 find mayExist(problem, interpretation, target);
24928 // Type consistency
24929 find mayInstanceOfEGenericType_class(problem,interpretation,source);
24930 find mayInstanceOfEClassifier_class(problem,interpretation,target);
24931 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
24932 // the upper bound of the multiplicity should be considered.
24933 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
24934 check(numberOfExistingReferences < 1);
24935} or {
24936 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
24937}
24938/**
24939 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
24940 */
24941private pattern mustInRelationeBounds_reference_ETypeParameter(
24942 problem:LogicProblem, interpretation:PartialInterpretation,
24943 source: DefinedElement, target:DefinedElement)
24944{
24945 find interpretation(problem,interpretation);
24946 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24947 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
24948 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24949 BinaryElementRelationLink.param1(link,source);
24950 BinaryElementRelationLink.param2(link,target);
24951}
24952/**
24953 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
24954 */
24955private pattern mayInRelationeBounds_reference_ETypeParameter(
24956 problem:LogicProblem, interpretation:PartialInterpretation,
24957 source: DefinedElement, target:DefinedElement)
24958{
24959 find interpretation(problem,interpretation);
24960 // The two endpoint of the link have to exist
24961 find mayExist(problem, interpretation, source);
24962 find mayExist(problem, interpretation, target);
24963 // Type consistency
24964 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
24965 find mayInstanceOfEGenericType_class(problem,interpretation,target);
24966 // The reference is containment, then a new reference cannot be create if:
24967 // 1. Multiple parents
24968 neg find mustContains4(problem,interpretation,_,target);
24969 // 2. Circle in the containment hierarchy
24970 neg find mustTransitiveContains(source,target);
24971} or {
24972 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
24973}
24974/**
24975 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
24976 */
24977private pattern mustInRelationiD_attribute_EAttribute(
24978 problem:LogicProblem, interpretation:PartialInterpretation,
24979 source: DefinedElement, target:DefinedElement)
24980{
24981 find interpretation(problem,interpretation);
24982 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24983 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
24984 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
24985 BinaryElementRelationLink.param1(link,source);
24986 BinaryElementRelationLink.param2(link,target);
24987}
24988/**
24989 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
24990 */
24991private pattern mayInRelationiD_attribute_EAttribute(
24992 problem:LogicProblem, interpretation:PartialInterpretation,
24993 source: DefinedElement, target:DefinedElement)
24994{
24995 find interpretation(problem,interpretation);
24996 // The two endpoint of the link have to exist
24997 find mayExist(problem, interpretation, source);
24998 find mayExist(problem, interpretation, target);
24999 // Type consistency
25000 find mayInstanceOfEAttribute_class(problem,interpretation,source);
25001 BooleanElement(target);
25002 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25003 // the upper bound of the multiplicity should be considered.
25004 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
25005 check(numberOfExistingReferences < 1);
25006} or {
25007 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
25008}
25009/**
25010 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
25011 */
25012private pattern mustInRelationsource_attribute_EAnnotation(
25013 problem:LogicProblem, interpretation:PartialInterpretation,
25014 source: DefinedElement, target:DefinedElement)
25015{
25016 find interpretation(problem,interpretation);
25017 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25018 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
25019 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25020 BinaryElementRelationLink.param1(link,source);
25021 BinaryElementRelationLink.param2(link,target);
25022}
25023/**
25024 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
25025 */
25026private pattern mayInRelationsource_attribute_EAnnotation(
25027 problem:LogicProblem, interpretation:PartialInterpretation,
25028 source: DefinedElement, target:DefinedElement)
25029{
25030 find interpretation(problem,interpretation);
25031 // The two endpoint of the link have to exist
25032 find mayExist(problem, interpretation, source);
25033 find mayExist(problem, interpretation, target);
25034 // Type consistency
25035 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
25036 StringElement(target);
25037 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25038 // the upper bound of the multiplicity should be considered.
25039 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
25040 check(numberOfExistingReferences < 1);
25041} or {
25042 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
25043}
25044/**
25045 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
25046 */
25047private pattern mustInRelationabstract_attribute_EClass(
25048 problem:LogicProblem, interpretation:PartialInterpretation,
25049 source: DefinedElement, target:DefinedElement)
25050{
25051 find interpretation(problem,interpretation);
25052 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25053 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
25054 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25055 BinaryElementRelationLink.param1(link,source);
25056 BinaryElementRelationLink.param2(link,target);
25057}
25058/**
25059 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
25060 */
25061private pattern mayInRelationabstract_attribute_EClass(
25062 problem:LogicProblem, interpretation:PartialInterpretation,
25063 source: DefinedElement, target:DefinedElement)
25064{
25065 find interpretation(problem,interpretation);
25066 // The two endpoint of the link have to exist
25067 find mayExist(problem, interpretation, source);
25068 find mayExist(problem, interpretation, target);
25069 // Type consistency
25070 find mayInstanceOfEClass_class(problem,interpretation,source);
25071 BooleanElement(target);
25072 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25073 // the upper bound of the multiplicity should be considered.
25074 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
25075 check(numberOfExistingReferences < 1);
25076} or {
25077 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
25078}
25079/**
25080 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
25081 */
25082private pattern mustInRelationinterface_attribute_EClass(
25083 problem:LogicProblem, interpretation:PartialInterpretation,
25084 source: DefinedElement, target:DefinedElement)
25085{
25086 find interpretation(problem,interpretation);
25087 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25088 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
25089 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25090 BinaryElementRelationLink.param1(link,source);
25091 BinaryElementRelationLink.param2(link,target);
25092}
25093/**
25094 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
25095 */
25096private pattern mayInRelationinterface_attribute_EClass(
25097 problem:LogicProblem, interpretation:PartialInterpretation,
25098 source: DefinedElement, target:DefinedElement)
25099{
25100 find interpretation(problem,interpretation);
25101 // The two endpoint of the link have to exist
25102 find mayExist(problem, interpretation, source);
25103 find mayExist(problem, interpretation, target);
25104 // Type consistency
25105 find mayInstanceOfEClass_class(problem,interpretation,source);
25106 BooleanElement(target);
25107 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25108 // the upper bound of the multiplicity should be considered.
25109 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
25110 check(numberOfExistingReferences < 1);
25111} or {
25112 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
25113}
25114/**
25115 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
25116 */
25117private pattern mustInRelationinstanceClassName_attribute_EClassifier(
25118 problem:LogicProblem, interpretation:PartialInterpretation,
25119 source: DefinedElement, target:DefinedElement)
25120{
25121 find interpretation(problem,interpretation);
25122 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25123 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
25124 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25125 BinaryElementRelationLink.param1(link,source);
25126 BinaryElementRelationLink.param2(link,target);
25127}
25128/**
25129 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
25130 */
25131private pattern mayInRelationinstanceClassName_attribute_EClassifier(
25132 problem:LogicProblem, interpretation:PartialInterpretation,
25133 source: DefinedElement, target:DefinedElement)
25134{
25135 find interpretation(problem,interpretation);
25136 // The two endpoint of the link have to exist
25137 find mayExist(problem, interpretation, source);
25138 find mayExist(problem, interpretation, target);
25139 // Type consistency
25140 find mayInstanceOfEClassifier_class(problem,interpretation,source);
25141 StringElement(target);
25142 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25143 // the upper bound of the multiplicity should be considered.
25144 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
25145 check(numberOfExistingReferences < 1);
25146} or {
25147 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
25148}
25149/**
25150 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
25151 */
25152private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
25153 problem:LogicProblem, interpretation:PartialInterpretation,
25154 source: DefinedElement, target:DefinedElement)
25155{
25156 find interpretation(problem,interpretation);
25157 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25158 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
25159 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25160 BinaryElementRelationLink.param1(link,source);
25161 BinaryElementRelationLink.param2(link,target);
25162}
25163/**
25164 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
25165 */
25166private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
25167 problem:LogicProblem, interpretation:PartialInterpretation,
25168 source: DefinedElement, target:DefinedElement)
25169{
25170 find interpretation(problem,interpretation);
25171 // The two endpoint of the link have to exist
25172 find mayExist(problem, interpretation, source);
25173 find mayExist(problem, interpretation, target);
25174 // Type consistency
25175 find mayInstanceOfEClassifier_class(problem,interpretation,source);
25176 StringElement(target);
25177 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25178 // the upper bound of the multiplicity should be considered.
25179 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
25180 check(numberOfExistingReferences < 1);
25181} or {
25182 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
25183}
25184/**
25185 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
25186 */
25187private pattern mustInRelationserializable_attribute_EDataType(
25188 problem:LogicProblem, interpretation:PartialInterpretation,
25189 source: DefinedElement, target:DefinedElement)
25190{
25191 find interpretation(problem,interpretation);
25192 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25193 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
25194 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25195 BinaryElementRelationLink.param1(link,source);
25196 BinaryElementRelationLink.param2(link,target);
25197}
25198/**
25199 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
25200 */
25201private pattern mayInRelationserializable_attribute_EDataType(
25202 problem:LogicProblem, interpretation:PartialInterpretation,
25203 source: DefinedElement, target:DefinedElement)
25204{
25205 find interpretation(problem,interpretation);
25206 // The two endpoint of the link have to exist
25207 find mayExist(problem, interpretation, source);
25208 find mayExist(problem, interpretation, target);
25209 // Type consistency
25210 find mayInstanceOfEDataType_class(problem,interpretation,source);
25211 BooleanElement(target);
25212 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25213 // the upper bound of the multiplicity should be considered.
25214 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
25215 check(numberOfExistingReferences < 1);
25216} or {
25217 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
25218}
25219/**
25220 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
25221 */
25222private pattern mustInRelationvalue_attribute_EEnumLiteral(
25223 problem:LogicProblem, interpretation:PartialInterpretation,
25224 source: DefinedElement, target:DefinedElement)
25225{
25226 find interpretation(problem,interpretation);
25227 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25228 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
25229 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25230 BinaryElementRelationLink.param1(link,source);
25231 BinaryElementRelationLink.param2(link,target);
25232}
25233/**
25234 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
25235 */
25236private pattern mayInRelationvalue_attribute_EEnumLiteral(
25237 problem:LogicProblem, interpretation:PartialInterpretation,
25238 source: DefinedElement, target:DefinedElement)
25239{
25240 find interpretation(problem,interpretation);
25241 // The two endpoint of the link have to exist
25242 find mayExist(problem, interpretation, source);
25243 find mayExist(problem, interpretation, target);
25244 // Type consistency
25245 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
25246 IntegerElement(target);
25247 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25248 // the upper bound of the multiplicity should be considered.
25249 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
25250 check(numberOfExistingReferences < 1);
25251} or {
25252 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
25253}
25254/**
25255 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
25256 */
25257private pattern mustInRelationliteral_attribute_EEnumLiteral(
25258 problem:LogicProblem, interpretation:PartialInterpretation,
25259 source: DefinedElement, target:DefinedElement)
25260{
25261 find interpretation(problem,interpretation);
25262 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25263 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
25264 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25265 BinaryElementRelationLink.param1(link,source);
25266 BinaryElementRelationLink.param2(link,target);
25267}
25268/**
25269 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
25270 */
25271private pattern mayInRelationliteral_attribute_EEnumLiteral(
25272 problem:LogicProblem, interpretation:PartialInterpretation,
25273 source: DefinedElement, target:DefinedElement)
25274{
25275 find interpretation(problem,interpretation);
25276 // The two endpoint of the link have to exist
25277 find mayExist(problem, interpretation, source);
25278 find mayExist(problem, interpretation, target);
25279 // Type consistency
25280 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
25281 StringElement(target);
25282 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25283 // the upper bound of the multiplicity should be considered.
25284 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
25285 check(numberOfExistingReferences < 1);
25286} or {
25287 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
25288}
25289/**
25290 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
25291 */
25292private pattern mustInRelationname_attribute_ENamedElement(
25293 problem:LogicProblem, interpretation:PartialInterpretation,
25294 source: DefinedElement, target:DefinedElement)
25295{
25296 find interpretation(problem,interpretation);
25297 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25298 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
25299 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25300 BinaryElementRelationLink.param1(link,source);
25301 BinaryElementRelationLink.param2(link,target);
25302}
25303/**
25304 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
25305 */
25306private pattern mayInRelationname_attribute_ENamedElement(
25307 problem:LogicProblem, interpretation:PartialInterpretation,
25308 source: DefinedElement, target:DefinedElement)
25309{
25310 find interpretation(problem,interpretation);
25311 // The two endpoint of the link have to exist
25312 find mayExist(problem, interpretation, source);
25313 find mayExist(problem, interpretation, target);
25314 // Type consistency
25315 find mayInstanceOfENamedElement_class(problem,interpretation,source);
25316 StringElement(target);
25317 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25318 // the upper bound of the multiplicity should be considered.
25319 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
25320 check(numberOfExistingReferences < 1);
25321} or {
25322 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
25323}
25324/**
25325 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
25326 */
25327private pattern mustInRelationnsURI_attribute_EPackage(
25328 problem:LogicProblem, interpretation:PartialInterpretation,
25329 source: DefinedElement, target:DefinedElement)
25330{
25331 find interpretation(problem,interpretation);
25332 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25333 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
25334 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25335 BinaryElementRelationLink.param1(link,source);
25336 BinaryElementRelationLink.param2(link,target);
25337}
25338/**
25339 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
25340 */
25341private pattern mayInRelationnsURI_attribute_EPackage(
25342 problem:LogicProblem, interpretation:PartialInterpretation,
25343 source: DefinedElement, target:DefinedElement)
25344{
25345 find interpretation(problem,interpretation);
25346 // The two endpoint of the link have to exist
25347 find mayExist(problem, interpretation, source);
25348 find mayExist(problem, interpretation, target);
25349 // Type consistency
25350 find mayInstanceOfEPackage_class(problem,interpretation,source);
25351 StringElement(target);
25352 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25353 // the upper bound of the multiplicity should be considered.
25354 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
25355 check(numberOfExistingReferences < 1);
25356} or {
25357 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
25358}
25359/**
25360 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
25361 */
25362private pattern mustInRelationnsPrefix_attribute_EPackage(
25363 problem:LogicProblem, interpretation:PartialInterpretation,
25364 source: DefinedElement, target:DefinedElement)
25365{
25366 find interpretation(problem,interpretation);
25367 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25368 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
25369 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25370 BinaryElementRelationLink.param1(link,source);
25371 BinaryElementRelationLink.param2(link,target);
25372}
25373/**
25374 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
25375 */
25376private pattern mayInRelationnsPrefix_attribute_EPackage(
25377 problem:LogicProblem, interpretation:PartialInterpretation,
25378 source: DefinedElement, target:DefinedElement)
25379{
25380 find interpretation(problem,interpretation);
25381 // The two endpoint of the link have to exist
25382 find mayExist(problem, interpretation, source);
25383 find mayExist(problem, interpretation, target);
25384 // Type consistency
25385 find mayInstanceOfEPackage_class(problem,interpretation,source);
25386 StringElement(target);
25387 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25388 // the upper bound of the multiplicity should be considered.
25389 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
25390 check(numberOfExistingReferences < 1);
25391} or {
25392 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
25393}
25394/**
25395 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
25396 */
25397private pattern mustInRelationcontainment_attribute_EReference(
25398 problem:LogicProblem, interpretation:PartialInterpretation,
25399 source: DefinedElement, target:DefinedElement)
25400{
25401 find interpretation(problem,interpretation);
25402 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25403 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
25404 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25405 BinaryElementRelationLink.param1(link,source);
25406 BinaryElementRelationLink.param2(link,target);
25407}
25408/**
25409 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
25410 */
25411private pattern mayInRelationcontainment_attribute_EReference(
25412 problem:LogicProblem, interpretation:PartialInterpretation,
25413 source: DefinedElement, target:DefinedElement)
25414{
25415 find interpretation(problem,interpretation);
25416 // The two endpoint of the link have to exist
25417 find mayExist(problem, interpretation, source);
25418 find mayExist(problem, interpretation, target);
25419 // Type consistency
25420 find mayInstanceOfEReference_class(problem,interpretation,source);
25421 BooleanElement(target);
25422 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25423 // the upper bound of the multiplicity should be considered.
25424 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
25425 check(numberOfExistingReferences < 1);
25426} or {
25427 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
25428}
25429/**
25430 * Matcher for detecting tuples t where []container attribute EReference(source,target)
25431 */
25432private pattern mustInRelationcontainer_attribute_EReference(
25433 problem:LogicProblem, interpretation:PartialInterpretation,
25434 source: DefinedElement, target:DefinedElement)
25435{
25436 find interpretation(problem,interpretation);
25437 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25438 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
25439 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25440 BinaryElementRelationLink.param1(link,source);
25441 BinaryElementRelationLink.param2(link,target);
25442}
25443/**
25444 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
25445 */
25446private pattern mayInRelationcontainer_attribute_EReference(
25447 problem:LogicProblem, interpretation:PartialInterpretation,
25448 source: DefinedElement, target:DefinedElement)
25449{
25450 find interpretation(problem,interpretation);
25451 // The two endpoint of the link have to exist
25452 find mayExist(problem, interpretation, source);
25453 find mayExist(problem, interpretation, target);
25454 // Type consistency
25455 find mayInstanceOfEReference_class(problem,interpretation,source);
25456 BooleanElement(target);
25457 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25458 // the upper bound of the multiplicity should be considered.
25459 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
25460 check(numberOfExistingReferences < 1);
25461} or {
25462 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
25463}
25464/**
25465 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
25466 */
25467private pattern mustInRelationresolveProxies_attribute_EReference(
25468 problem:LogicProblem, interpretation:PartialInterpretation,
25469 source: DefinedElement, target:DefinedElement)
25470{
25471 find interpretation(problem,interpretation);
25472 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25473 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
25474 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25475 BinaryElementRelationLink.param1(link,source);
25476 BinaryElementRelationLink.param2(link,target);
25477}
25478/**
25479 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
25480 */
25481private pattern mayInRelationresolveProxies_attribute_EReference(
25482 problem:LogicProblem, interpretation:PartialInterpretation,
25483 source: DefinedElement, target:DefinedElement)
25484{
25485 find interpretation(problem,interpretation);
25486 // The two endpoint of the link have to exist
25487 find mayExist(problem, interpretation, source);
25488 find mayExist(problem, interpretation, target);
25489 // Type consistency
25490 find mayInstanceOfEReference_class(problem,interpretation,source);
25491 BooleanElement(target);
25492 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25493 // the upper bound of the multiplicity should be considered.
25494 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
25495 check(numberOfExistingReferences < 1);
25496} or {
25497 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
25498}
25499/**
25500 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
25501 */
25502private pattern mustInRelationchangeable_attribute_EStructuralFeature(
25503 problem:LogicProblem, interpretation:PartialInterpretation,
25504 source: DefinedElement, target:DefinedElement)
25505{
25506 find interpretation(problem,interpretation);
25507 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25508 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
25509 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25510 BinaryElementRelationLink.param1(link,source);
25511 BinaryElementRelationLink.param2(link,target);
25512}
25513/**
25514 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
25515 */
25516private pattern mayInRelationchangeable_attribute_EStructuralFeature(
25517 problem:LogicProblem, interpretation:PartialInterpretation,
25518 source: DefinedElement, target:DefinedElement)
25519{
25520 find interpretation(problem,interpretation);
25521 // The two endpoint of the link have to exist
25522 find mayExist(problem, interpretation, source);
25523 find mayExist(problem, interpretation, target);
25524 // Type consistency
25525 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
25526 BooleanElement(target);
25527 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25528 // the upper bound of the multiplicity should be considered.
25529 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
25530 check(numberOfExistingReferences < 1);
25531} or {
25532 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
25533}
25534/**
25535 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
25536 */
25537private pattern mustInRelationvolatile_attribute_EStructuralFeature(
25538 problem:LogicProblem, interpretation:PartialInterpretation,
25539 source: DefinedElement, target:DefinedElement)
25540{
25541 find interpretation(problem,interpretation);
25542 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25543 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
25544 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25545 BinaryElementRelationLink.param1(link,source);
25546 BinaryElementRelationLink.param2(link,target);
25547}
25548/**
25549 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
25550 */
25551private pattern mayInRelationvolatile_attribute_EStructuralFeature(
25552 problem:LogicProblem, interpretation:PartialInterpretation,
25553 source: DefinedElement, target:DefinedElement)
25554{
25555 find interpretation(problem,interpretation);
25556 // The two endpoint of the link have to exist
25557 find mayExist(problem, interpretation, source);
25558 find mayExist(problem, interpretation, target);
25559 // Type consistency
25560 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
25561 BooleanElement(target);
25562 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25563 // the upper bound of the multiplicity should be considered.
25564 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
25565 check(numberOfExistingReferences < 1);
25566} or {
25567 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
25568}
25569/**
25570 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
25571 */
25572private pattern mustInRelationtransient_attribute_EStructuralFeature(
25573 problem:LogicProblem, interpretation:PartialInterpretation,
25574 source: DefinedElement, target:DefinedElement)
25575{
25576 find interpretation(problem,interpretation);
25577 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25578 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
25579 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25580 BinaryElementRelationLink.param1(link,source);
25581 BinaryElementRelationLink.param2(link,target);
25582}
25583/**
25584 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
25585 */
25586private pattern mayInRelationtransient_attribute_EStructuralFeature(
25587 problem:LogicProblem, interpretation:PartialInterpretation,
25588 source: DefinedElement, target:DefinedElement)
25589{
25590 find interpretation(problem,interpretation);
25591 // The two endpoint of the link have to exist
25592 find mayExist(problem, interpretation, source);
25593 find mayExist(problem, interpretation, target);
25594 // Type consistency
25595 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
25596 BooleanElement(target);
25597 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25598 // the upper bound of the multiplicity should be considered.
25599 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
25600 check(numberOfExistingReferences < 1);
25601} or {
25602 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
25603}
25604/**
25605 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
25606 */
25607private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
25608 problem:LogicProblem, interpretation:PartialInterpretation,
25609 source: DefinedElement, target:DefinedElement)
25610{
25611 find interpretation(problem,interpretation);
25612 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25613 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
25614 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25615 BinaryElementRelationLink.param1(link,source);
25616 BinaryElementRelationLink.param2(link,target);
25617}
25618/**
25619 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
25620 */
25621private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
25622 problem:LogicProblem, interpretation:PartialInterpretation,
25623 source: DefinedElement, target:DefinedElement)
25624{
25625 find interpretation(problem,interpretation);
25626 // The two endpoint of the link have to exist
25627 find mayExist(problem, interpretation, source);
25628 find mayExist(problem, interpretation, target);
25629 // Type consistency
25630 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
25631 StringElement(target);
25632 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25633 // the upper bound of the multiplicity should be considered.
25634 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
25635 check(numberOfExistingReferences < 1);
25636} or {
25637 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
25638}
25639/**
25640 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
25641 */
25642private pattern mustInRelationunsettable_attribute_EStructuralFeature(
25643 problem:LogicProblem, interpretation:PartialInterpretation,
25644 source: DefinedElement, target:DefinedElement)
25645{
25646 find interpretation(problem,interpretation);
25647 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25648 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
25649 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25650 BinaryElementRelationLink.param1(link,source);
25651 BinaryElementRelationLink.param2(link,target);
25652}
25653/**
25654 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
25655 */
25656private pattern mayInRelationunsettable_attribute_EStructuralFeature(
25657 problem:LogicProblem, interpretation:PartialInterpretation,
25658 source: DefinedElement, target:DefinedElement)
25659{
25660 find interpretation(problem,interpretation);
25661 // The two endpoint of the link have to exist
25662 find mayExist(problem, interpretation, source);
25663 find mayExist(problem, interpretation, target);
25664 // Type consistency
25665 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
25666 BooleanElement(target);
25667 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25668 // the upper bound of the multiplicity should be considered.
25669 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
25670 check(numberOfExistingReferences < 1);
25671} or {
25672 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
25673}
25674/**
25675 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
25676 */
25677private pattern mustInRelationderived_attribute_EStructuralFeature(
25678 problem:LogicProblem, interpretation:PartialInterpretation,
25679 source: DefinedElement, target:DefinedElement)
25680{
25681 find interpretation(problem,interpretation);
25682 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25683 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
25684 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25685 BinaryElementRelationLink.param1(link,source);
25686 BinaryElementRelationLink.param2(link,target);
25687}
25688/**
25689 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
25690 */
25691private pattern mayInRelationderived_attribute_EStructuralFeature(
25692 problem:LogicProblem, interpretation:PartialInterpretation,
25693 source: DefinedElement, target:DefinedElement)
25694{
25695 find interpretation(problem,interpretation);
25696 // The two endpoint of the link have to exist
25697 find mayExist(problem, interpretation, source);
25698 find mayExist(problem, interpretation, target);
25699 // Type consistency
25700 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
25701 BooleanElement(target);
25702 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25703 // the upper bound of the multiplicity should be considered.
25704 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
25705 check(numberOfExistingReferences < 1);
25706} or {
25707 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
25708}
25709/**
25710 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
25711 */
25712private pattern mustInRelationordered_attribute_ETypedElement(
25713 problem:LogicProblem, interpretation:PartialInterpretation,
25714 source: DefinedElement, target:DefinedElement)
25715{
25716 find interpretation(problem,interpretation);
25717 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25718 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
25719 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25720 BinaryElementRelationLink.param1(link,source);
25721 BinaryElementRelationLink.param2(link,target);
25722}
25723/**
25724 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
25725 */
25726private pattern mayInRelationordered_attribute_ETypedElement(
25727 problem:LogicProblem, interpretation:PartialInterpretation,
25728 source: DefinedElement, target:DefinedElement)
25729{
25730 find interpretation(problem,interpretation);
25731 // The two endpoint of the link have to exist
25732 find mayExist(problem, interpretation, source);
25733 find mayExist(problem, interpretation, target);
25734 // Type consistency
25735 find mayInstanceOfETypedElement_class(problem,interpretation,source);
25736 BooleanElement(target);
25737 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25738 // the upper bound of the multiplicity should be considered.
25739 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
25740 check(numberOfExistingReferences < 1);
25741} or {
25742 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
25743}
25744/**
25745 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
25746 */
25747private pattern mustInRelationunique_attribute_ETypedElement(
25748 problem:LogicProblem, interpretation:PartialInterpretation,
25749 source: DefinedElement, target:DefinedElement)
25750{
25751 find interpretation(problem,interpretation);
25752 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25753 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
25754 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25755 BinaryElementRelationLink.param1(link,source);
25756 BinaryElementRelationLink.param2(link,target);
25757}
25758/**
25759 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
25760 */
25761private pattern mayInRelationunique_attribute_ETypedElement(
25762 problem:LogicProblem, interpretation:PartialInterpretation,
25763 source: DefinedElement, target:DefinedElement)
25764{
25765 find interpretation(problem,interpretation);
25766 // The two endpoint of the link have to exist
25767 find mayExist(problem, interpretation, source);
25768 find mayExist(problem, interpretation, target);
25769 // Type consistency
25770 find mayInstanceOfETypedElement_class(problem,interpretation,source);
25771 BooleanElement(target);
25772 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25773 // the upper bound of the multiplicity should be considered.
25774 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
25775 check(numberOfExistingReferences < 1);
25776} or {
25777 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
25778}
25779/**
25780 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
25781 */
25782private pattern mustInRelationlowerBound_attribute_ETypedElement(
25783 problem:LogicProblem, interpretation:PartialInterpretation,
25784 source: DefinedElement, target:DefinedElement)
25785{
25786 find interpretation(problem,interpretation);
25787 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25788 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
25789 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25790 BinaryElementRelationLink.param1(link,source);
25791 BinaryElementRelationLink.param2(link,target);
25792}
25793/**
25794 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
25795 */
25796private pattern mayInRelationlowerBound_attribute_ETypedElement(
25797 problem:LogicProblem, interpretation:PartialInterpretation,
25798 source: DefinedElement, target:DefinedElement)
25799{
25800 find interpretation(problem,interpretation);
25801 // The two endpoint of the link have to exist
25802 find mayExist(problem, interpretation, source);
25803 find mayExist(problem, interpretation, target);
25804 // Type consistency
25805 find mayInstanceOfETypedElement_class(problem,interpretation,source);
25806 IntegerElement(target);
25807 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25808 // the upper bound of the multiplicity should be considered.
25809 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
25810 check(numberOfExistingReferences < 1);
25811} or {
25812 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
25813}
25814/**
25815 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
25816 */
25817private pattern mustInRelationupperBound_attribute_ETypedElement(
25818 problem:LogicProblem, interpretation:PartialInterpretation,
25819 source: DefinedElement, target:DefinedElement)
25820{
25821 find interpretation(problem,interpretation);
25822 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25823 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
25824 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25825 BinaryElementRelationLink.param1(link,source);
25826 BinaryElementRelationLink.param2(link,target);
25827}
25828/**
25829 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
25830 */
25831private pattern mayInRelationupperBound_attribute_ETypedElement(
25832 problem:LogicProblem, interpretation:PartialInterpretation,
25833 source: DefinedElement, target:DefinedElement)
25834{
25835 find interpretation(problem,interpretation);
25836 // The two endpoint of the link have to exist
25837 find mayExist(problem, interpretation, source);
25838 find mayExist(problem, interpretation, target);
25839 // Type consistency
25840 find mayInstanceOfETypedElement_class(problem,interpretation,source);
25841 IntegerElement(target);
25842 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25843 // the upper bound of the multiplicity should be considered.
25844 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
25845 check(numberOfExistingReferences < 1);
25846} or {
25847 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
25848}
25849/**
25850 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
25851 */
25852private pattern mustInRelationmany_attribute_ETypedElement(
25853 problem:LogicProblem, interpretation:PartialInterpretation,
25854 source: DefinedElement, target:DefinedElement)
25855{
25856 find interpretation(problem,interpretation);
25857 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25858 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
25859 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25860 BinaryElementRelationLink.param1(link,source);
25861 BinaryElementRelationLink.param2(link,target);
25862}
25863/**
25864 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
25865 */
25866private pattern mayInRelationmany_attribute_ETypedElement(
25867 problem:LogicProblem, interpretation:PartialInterpretation,
25868 source: DefinedElement, target:DefinedElement)
25869{
25870 find interpretation(problem,interpretation);
25871 // The two endpoint of the link have to exist
25872 find mayExist(problem, interpretation, source);
25873 find mayExist(problem, interpretation, target);
25874 // Type consistency
25875 find mayInstanceOfETypedElement_class(problem,interpretation,source);
25876 BooleanElement(target);
25877 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25878 // the upper bound of the multiplicity should be considered.
25879 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
25880 check(numberOfExistingReferences < 1);
25881} or {
25882 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
25883}
25884/**
25885 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
25886 */
25887private pattern mustInRelationrequired_attribute_ETypedElement(
25888 problem:LogicProblem, interpretation:PartialInterpretation,
25889 source: DefinedElement, target:DefinedElement)
25890{
25891 find interpretation(problem,interpretation);
25892 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25893 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
25894 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25895 BinaryElementRelationLink.param1(link,source);
25896 BinaryElementRelationLink.param2(link,target);
25897}
25898/**
25899 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
25900 */
25901private pattern mayInRelationrequired_attribute_ETypedElement(
25902 problem:LogicProblem, interpretation:PartialInterpretation,
25903 source: DefinedElement, target:DefinedElement)
25904{
25905 find interpretation(problem,interpretation);
25906 // The two endpoint of the link have to exist
25907 find mayExist(problem, interpretation, source);
25908 find mayExist(problem, interpretation, target);
25909 // Type consistency
25910 find mayInstanceOfETypedElement_class(problem,interpretation,source);
25911 BooleanElement(target);
25912 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25913 // the upper bound of the multiplicity should be considered.
25914 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
25915 check(numberOfExistingReferences < 1);
25916} or {
25917 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
25918}
25919/**
25920 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
25921 */
25922private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
25923 problem:LogicProblem, interpretation:PartialInterpretation,
25924 source: DefinedElement, target:DefinedElement)
25925{
25926 find interpretation(problem,interpretation);
25927 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25928 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
25929 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25930 BinaryElementRelationLink.param1(link,source);
25931 BinaryElementRelationLink.param2(link,target);
25932}
25933/**
25934 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
25935 */
25936private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
25937 problem:LogicProblem, interpretation:PartialInterpretation,
25938 source: DefinedElement, target:DefinedElement)
25939{
25940 find interpretation(problem,interpretation);
25941 // The two endpoint of the link have to exist
25942 find mayExist(problem, interpretation, source);
25943 find mayExist(problem, interpretation, target);
25944 // Type consistency
25945 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
25946 StringElement(target);
25947 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25948 // the upper bound of the multiplicity should be considered.
25949 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
25950 check(numberOfExistingReferences < 1);
25951} or {
25952 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
25953}
25954/**
25955 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
25956 */
25957private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
25958 problem:LogicProblem, interpretation:PartialInterpretation,
25959 source: DefinedElement, target:DefinedElement)
25960{
25961 find interpretation(problem,interpretation);
25962 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25963 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
25964 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25965 BinaryElementRelationLink.param1(link,source);
25966 BinaryElementRelationLink.param2(link,target);
25967}
25968/**
25969 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
25970 */
25971private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
25972 problem:LogicProblem, interpretation:PartialInterpretation,
25973 source: DefinedElement, target:DefinedElement)
25974{
25975 find interpretation(problem,interpretation);
25976 // The two endpoint of the link have to exist
25977 find mayExist(problem, interpretation, source);
25978 find mayExist(problem, interpretation, target);
25979 // Type consistency
25980 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
25981 StringElement(target);
25982 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25983 // the upper bound of the multiplicity should be considered.
25984 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
25985 check(numberOfExistingReferences < 1);
25986} or {
25987 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
25988}
25989
25990//////////
25991// 1.3 Relation Definition Indexers
25992//////////
25993
25994//////////
25995// 1.4 Containment Indexer
25996//////////
25997private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
25998 find mustContains4(_,_,source,target);
25999}
26000
26001private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
26002 source: DefinedElement, target: DefinedElement)
26003 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
26004
26005 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
26006
26007 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
26008
26009 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
26010
26011 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
26012
26013 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
26014
26015 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
26016
26017 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
26018
26019 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
26020
26021 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
26022
26023 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
26024
26025 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
26026
26027 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
26028
26029 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
26030
26031 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
26032
26033 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
26034
26035 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
26036
26037 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
26038
26039private pattern mustTransitiveContains(source,target) {
26040 find mustContains2+(source,target);
26041}
26042
26043//////////
26044// 2. Invalidation Indexers
26045//////////
26046// 2.1 Invalidated by WF Queries
26047//////////
26048
26049//////////
26050// 3. Unfinishedness Indexers
26051//////////
26052// 3.1 Unfinishedness Measured by Multiplicity
26053//////////
26054pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
26055 find interpretation(problem,interpretation);
26056 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26057 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
26058 find mustInstanceOfEAttribute_class(problem,interpretation,object);
26059 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
26060 check(numberOfExistingReferences < 1);
26061 missingMultiplicity == eval(1-numberOfExistingReferences);
26062}
26063pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
26064 find interpretation(problem,interpretation);
26065 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26066 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
26067 find mustInstanceOfEReference_class(problem,interpretation,object);
26068 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
26069 check(numberOfExistingReferences < 1);
26070 missingMultiplicity == eval(1-numberOfExistingReferences);
26071}
26072pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
26073 find interpretation(problem,interpretation);
26074 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26075 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
26076 find mustInstanceOfEGenericType_class(problem,interpretation,object);
26077 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
26078 check(numberOfExistingReferences < 1);
26079 missingMultiplicity == eval(1-numberOfExistingReferences);
26080}
26081
26082//////////
26083// 3.2 Unfinishedness Measured by WF Queries
26084//////////
26085
26086//////////
26087// 4. Refinement Indexers
26088//////////
26089// 4.1 Object constructors
26090//////////
26091private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
26092{
26093 find interpretation(problem,interpretation);
26094 find mustInstanceOfEParameter_class(problem,interpretation,root);
26095 find mustExist(problem, interpretation, root);
26096}or{
26097 find interpretation(problem,interpretation);
26098 find mustInstanceOfEEnum_class(problem,interpretation,root);
26099 find mustExist(problem, interpretation, root);
26100}or{
26101 find interpretation(problem,interpretation);
26102 find mustInstanceOfEReference_class(problem,interpretation,root);
26103 find mustExist(problem, interpretation, root);
26104}or{
26105 find interpretation(problem,interpretation);
26106 find mustInstanceOfEAttribute_class(problem,interpretation,root);
26107 find mustExist(problem, interpretation, root);
26108}or{
26109 find interpretation(problem,interpretation);
26110 find mustInstanceOfEOperation_class(problem,interpretation,root);
26111 find mustExist(problem, interpretation, root);
26112}or{
26113 find interpretation(problem,interpretation);
26114 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
26115 find mustExist(problem, interpretation, root);
26116}or{
26117 find interpretation(problem,interpretation);
26118 find mustInstanceOfENamedElement_class(problem,interpretation,root);
26119 find mustExist(problem, interpretation, root);
26120}or{
26121 find interpretation(problem,interpretation);
26122 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
26123 find mustExist(problem, interpretation, root);
26124}or{
26125 find interpretation(problem,interpretation);
26126 find mustInstanceOfEClass_class(problem,interpretation,root);
26127 find mustExist(problem, interpretation, root);
26128}or{
26129 find interpretation(problem,interpretation);
26130 find mustInstanceOfEGenericType_class(problem,interpretation,root);
26131 find mustExist(problem, interpretation, root);
26132}or{
26133 find interpretation(problem,interpretation);
26134 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
26135 find mustExist(problem, interpretation, root);
26136}or{
26137 find interpretation(problem,interpretation);
26138 find mustInstanceOfEModelElement_class(problem,interpretation,root);
26139 find mustExist(problem, interpretation, root);
26140}or{
26141 find interpretation(problem,interpretation);
26142 find mustInstanceOfETypedElement_class(problem,interpretation,root);
26143 find mustExist(problem, interpretation, root);
26144}or{
26145 find interpretation(problem,interpretation);
26146 find mustInstanceOfEPackage_class(problem,interpretation,root);
26147 find mustExist(problem, interpretation, root);
26148}or{
26149 find interpretation(problem,interpretation);
26150 find mustInstanceOfEDataType_class(problem,interpretation,root);
26151 find mustExist(problem, interpretation, root);
26152}or{
26153 find interpretation(problem,interpretation);
26154 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
26155 find mustExist(problem, interpretation, root);
26156}or{
26157 find interpretation(problem,interpretation);
26158 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
26159 find mustExist(problem, interpretation, root);
26160}or{
26161 find interpretation(problem,interpretation);
26162 find mustInstanceOfEClassifier_class(problem,interpretation,root);
26163 find mustExist(problem, interpretation, root);
26164}or{
26165 find interpretation(problem,interpretation);
26166 find mustInstanceOfEObject_class(problem,interpretation,root);
26167 find mustExist(problem, interpretation, root);
26168}or{
26169 find interpretation(problem,interpretation);
26170 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
26171 find mustExist(problem, interpretation, root);
26172}or{
26173 find interpretation(problem,interpretation);
26174 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
26175 find mustExist(problem, interpretation, root);
26176}or{
26177 find interpretation(problem,interpretation);
26178 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
26179 find mustExist(problem, interpretation, root);
26180}or{
26181 find interpretation(problem,interpretation);
26182 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
26183 find mustExist(problem, interpretation, root);
26184}or{
26185 find interpretation(problem,interpretation);
26186 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
26187 find mustExist(problem, interpretation, root);
26188}or{
26189 find interpretation(problem,interpretation);
26190 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
26191 find mustExist(problem, interpretation, root);
26192}
26193pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
26194 problem:LogicProblem, interpretation:PartialInterpretation,
26195 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26196 container:DefinedElement)
26197{
26198 find interpretation(problem,interpretation);
26199 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26200 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
26201 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26202 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
26203 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26204 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
26205 find mustInstanceOfEPackage_class(problem,interpretation,container);
26206 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
26207 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
26208 find mustExist(problem, interpretation, container);
26209 neg find mustExist(problem, interpretation, newObject);
26210}
26211pattern createObject_EPackage_class_UndefinedPart(
26212 problem:LogicProblem, interpretation:PartialInterpretation,
26213 typeInterpretation:PartialComplexTypeInterpretation)
26214{
26215 find interpretation(problem,interpretation);
26216 neg find hasElementInContainment(problem,interpretation);
26217 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26218 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
26219 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
26220 find mayExist(problem, interpretation, newObject);
26221 neg find mustExist(problem, interpretation, newObject);
26222}
26223pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
26224 problem:LogicProblem, interpretation:PartialInterpretation,
26225 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26226 container:DefinedElement)
26227{
26228 find interpretation(problem,interpretation);
26229 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26230 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
26231 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26232 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
26233 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26234 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
26235 find mustInstanceOfEOperation_class(problem,interpretation,container);
26236 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
26237 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
26238 find mustExist(problem, interpretation, container);
26239 neg find mustExist(problem, interpretation, newObject);
26240}
26241pattern createObject_EParameter_class(
26242 problem:LogicProblem, interpretation:PartialInterpretation,
26243 typeInterpretation:PartialComplexTypeInterpretation)
26244{
26245 find interpretation(problem,interpretation);
26246 neg find hasElementInContainment(problem,interpretation);
26247 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26248 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
26249 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
26250 find mayExist(problem, interpretation, newObject);
26251 neg find mustExist(problem, interpretation, newObject);
26252}
26253pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
26254 problem:LogicProblem, interpretation:PartialInterpretation,
26255 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26256 container:DefinedElement)
26257{
26258 find interpretation(problem,interpretation);
26259 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26260 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
26261 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26262 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
26263 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26264 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
26265 find mustInstanceOfEPackage_class(problem,interpretation,container);
26266 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
26267 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
26268 find mustExist(problem, interpretation, container);
26269 neg find mustExist(problem, interpretation, newObject);
26270}
26271pattern createObject_EEnum_class(
26272 problem:LogicProblem, interpretation:PartialInterpretation,
26273 typeInterpretation:PartialComplexTypeInterpretation)
26274{
26275 find interpretation(problem,interpretation);
26276 neg find hasElementInContainment(problem,interpretation);
26277 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26278 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
26279 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
26280 find mayExist(problem, interpretation, newObject);
26281 neg find mustExist(problem, interpretation, newObject);
26282}
26283pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
26284 problem:LogicProblem, interpretation:PartialInterpretation,
26285 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26286 container:DefinedElement)
26287{
26288 find interpretation(problem,interpretation);
26289 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26290 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
26291 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26292 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
26293 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26294 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
26295 find mustInstanceOfEModelElement_class(problem,interpretation,container);
26296 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
26297 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
26298 find mustExist(problem, interpretation, container);
26299 neg find mustExist(problem, interpretation, newObject);
26300}
26301pattern createObject_EAnnotation_class(
26302 problem:LogicProblem, interpretation:PartialInterpretation,
26303 typeInterpretation:PartialComplexTypeInterpretation)
26304{
26305 find interpretation(problem,interpretation);
26306 neg find hasElementInContainment(problem,interpretation);
26307 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26308 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
26309 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
26310 find mayExist(problem, interpretation, newObject);
26311 neg find mustExist(problem, interpretation, newObject);
26312}
26313pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
26314 problem:LogicProblem, interpretation:PartialInterpretation,
26315 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26316 container:DefinedElement)
26317{
26318 find interpretation(problem,interpretation);
26319 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26320 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
26321 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26322 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
26323 find mustInstanceOfEClass_class(problem,interpretation,container);
26324 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
26325 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
26326 find mustExist(problem, interpretation, container);
26327 neg find mustExist(problem, interpretation, newObject);
26328}
26329pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
26330 problem:LogicProblem, interpretation:PartialInterpretation,
26331 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26332 container:DefinedElement)
26333{
26334 find interpretation(problem,interpretation);
26335 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26336 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
26337 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26338 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
26339 find mustInstanceOfEOperation_class(problem,interpretation,container);
26340 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
26341 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
26342 find mustExist(problem, interpretation, container);
26343 neg find mustExist(problem, interpretation, newObject);
26344}
26345pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
26346 problem:LogicProblem, interpretation:PartialInterpretation,
26347 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26348 container:DefinedElement)
26349{
26350 find interpretation(problem,interpretation);
26351 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26352 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
26353 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26354 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
26355 find mustInstanceOfETypedElement_class(problem,interpretation,container);
26356 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
26357 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
26358 find mustExist(problem, interpretation, container);
26359 neg find mustExist(problem, interpretation, newObject);
26360}
26361pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
26362 problem:LogicProblem, interpretation:PartialInterpretation,
26363 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26364 container:DefinedElement)
26365{
26366 find interpretation(problem,interpretation);
26367 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26368 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
26369 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26370 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
26371 find mustInstanceOfEGenericType_class(problem,interpretation,container);
26372 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
26373 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
26374 find mustExist(problem, interpretation, container);
26375 neg find mustExist(problem, interpretation, newObject);
26376}
26377pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
26378 problem:LogicProblem, interpretation:PartialInterpretation,
26379 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26380 container:DefinedElement)
26381{
26382 find interpretation(problem,interpretation);
26383 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26384 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
26385 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26386 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
26387 find mustInstanceOfEGenericType_class(problem,interpretation,container);
26388 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
26389 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
26390 find mustExist(problem, interpretation, container);
26391 neg find mustExist(problem, interpretation, newObject);
26392}
26393pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
26394 problem:LogicProblem, interpretation:PartialInterpretation,
26395 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26396 container:DefinedElement)
26397{
26398 find interpretation(problem,interpretation);
26399 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26400 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
26401 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26402 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
26403 find mustInstanceOfEGenericType_class(problem,interpretation,container);
26404 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
26405 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
26406 find mustExist(problem, interpretation, container);
26407 neg find mustExist(problem, interpretation, newObject);
26408}
26409pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
26410 problem:LogicProblem, interpretation:PartialInterpretation,
26411 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26412 container:DefinedElement)
26413{
26414 find interpretation(problem,interpretation);
26415 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26416 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
26417 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26418 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
26419 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
26420 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
26421 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
26422 find mustExist(problem, interpretation, container);
26423 neg find mustExist(problem, interpretation, newObject);
26424}
26425pattern createObject_EGenericType_class(
26426 problem:LogicProblem, interpretation:PartialInterpretation,
26427 typeInterpretation:PartialComplexTypeInterpretation)
26428{
26429 find interpretation(problem,interpretation);
26430 neg find hasElementInContainment(problem,interpretation);
26431 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26432 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
26433 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
26434 find mayExist(problem, interpretation, newObject);
26435 neg find mustExist(problem, interpretation, newObject);
26436}
26437pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
26438 problem:LogicProblem, interpretation:PartialInterpretation,
26439 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26440 container:DefinedElement)
26441{
26442 find interpretation(problem,interpretation);
26443 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26444 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
26445 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26446 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
26447 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26448 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
26449 find mustInstanceOfEClass_class(problem,interpretation,container);
26450 find mayInstanceOfEReference_class(problem,interpretation,newObject);
26451 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
26452 find mustExist(problem, interpretation, container);
26453 neg find mustExist(problem, interpretation, newObject);
26454}
26455pattern createObject_EReference_class(
26456 problem:LogicProblem, interpretation:PartialInterpretation,
26457 typeInterpretation:PartialComplexTypeInterpretation)
26458{
26459 find interpretation(problem,interpretation);
26460 neg find hasElementInContainment(problem,interpretation);
26461 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26462 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
26463 find mayInstanceOfEReference_class(problem,interpretation,newObject);
26464 find mayExist(problem, interpretation, newObject);
26465 neg find mustExist(problem, interpretation, newObject);
26466}
26467pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
26468 problem:LogicProblem, interpretation:PartialInterpretation,
26469 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26470 container:DefinedElement)
26471{
26472 find interpretation(problem,interpretation);
26473 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26474 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
26475 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26476 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
26477 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26478 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
26479 find mustInstanceOfEClass_class(problem,interpretation,container);
26480 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
26481 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
26482 find mustExist(problem, interpretation, container);
26483 neg find mustExist(problem, interpretation, newObject);
26484}
26485pattern createObject_EAttribute_class(
26486 problem:LogicProblem, interpretation:PartialInterpretation,
26487 typeInterpretation:PartialComplexTypeInterpretation)
26488{
26489 find interpretation(problem,interpretation);
26490 neg find hasElementInContainment(problem,interpretation);
26491 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26492 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
26493 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
26494 find mayExist(problem, interpretation, newObject);
26495 neg find mustExist(problem, interpretation, newObject);
26496}
26497pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
26498 problem:LogicProblem, interpretation:PartialInterpretation,
26499 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26500 container:DefinedElement)
26501{
26502 find interpretation(problem,interpretation);
26503 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26504 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
26505 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26506 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
26507 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26508 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
26509 find mustInstanceOfEPackage_class(problem,interpretation,container);
26510 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
26511 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
26512 find mustExist(problem, interpretation, container);
26513 neg find mustExist(problem, interpretation, newObject);
26514}
26515pattern createObject_EDataType_class(
26516 problem:LogicProblem, interpretation:PartialInterpretation,
26517 typeInterpretation:PartialComplexTypeInterpretation)
26518{
26519 find interpretation(problem,interpretation);
26520 neg find hasElementInContainment(problem,interpretation);
26521 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26522 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
26523 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
26524 find mayExist(problem, interpretation, newObject);
26525 neg find mustExist(problem, interpretation, newObject);
26526}
26527pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
26528 problem:LogicProblem, interpretation:PartialInterpretation,
26529 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26530 container:DefinedElement)
26531{
26532 find interpretation(problem,interpretation);
26533 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26534 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
26535 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26536 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
26537 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26538 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
26539 find mustInstanceOfEClass_class(problem,interpretation,container);
26540 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
26541 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
26542 find mustExist(problem, interpretation, container);
26543 neg find mustExist(problem, interpretation, newObject);
26544}
26545pattern createObject_EOperation_class(
26546 problem:LogicProblem, interpretation:PartialInterpretation,
26547 typeInterpretation:PartialComplexTypeInterpretation)
26548{
26549 find interpretation(problem,interpretation);
26550 neg find hasElementInContainment(problem,interpretation);
26551 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26552 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
26553 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
26554 find mayExist(problem, interpretation, newObject);
26555 neg find mustExist(problem, interpretation, newObject);
26556}
26557pattern createObject_EObject_class_by_contents_reference_EAnnotation(
26558 problem:LogicProblem, interpretation:PartialInterpretation,
26559 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26560 container:DefinedElement)
26561{
26562 find interpretation(problem,interpretation);
26563 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26564 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
26565 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26566 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
26567 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
26568 find mayInstanceOfEObject_class(problem,interpretation,newObject);
26569 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
26570 find mustExist(problem, interpretation, container);
26571 neg find mustExist(problem, interpretation, newObject);
26572}
26573pattern createObject_EObject_class(
26574 problem:LogicProblem, interpretation:PartialInterpretation,
26575 typeInterpretation:PartialComplexTypeInterpretation)
26576{
26577 find interpretation(problem,interpretation);
26578 neg find hasElementInContainment(problem,interpretation);
26579 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26580 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
26581 find mayInstanceOfEObject_class(problem,interpretation,newObject);
26582 find mayExist(problem, interpretation, newObject);
26583 neg find mustExist(problem, interpretation, newObject);
26584}
26585pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
26586 problem:LogicProblem, interpretation:PartialInterpretation,
26587 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26588 container:DefinedElement)
26589{
26590 find interpretation(problem,interpretation);
26591 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26592 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
26593 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26594 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
26595 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
26596 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
26597 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
26598 find mustExist(problem, interpretation, container);
26599 neg find mustExist(problem, interpretation, newObject);
26600}
26601pattern createObject_EStringToStringMapEntry_class(
26602 problem:LogicProblem, interpretation:PartialInterpretation,
26603 typeInterpretation:PartialComplexTypeInterpretation)
26604{
26605 find interpretation(problem,interpretation);
26606 neg find hasElementInContainment(problem,interpretation);
26607 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26608 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
26609 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
26610 find mayExist(problem, interpretation, newObject);
26611 neg find mustExist(problem, interpretation, newObject);
26612}
26613pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
26614 problem:LogicProblem, interpretation:PartialInterpretation,
26615 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26616 container:DefinedElement)
26617{
26618 find interpretation(problem,interpretation);
26619 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26620 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
26621 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26622 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
26623 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26624 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
26625 find mustInstanceOfEEnum_class(problem,interpretation,container);
26626 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
26627 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
26628 find mustExist(problem, interpretation, container);
26629 neg find mustExist(problem, interpretation, newObject);
26630}
26631pattern createObject_EEnumLiteral_class(
26632 problem:LogicProblem, interpretation:PartialInterpretation,
26633 typeInterpretation:PartialComplexTypeInterpretation)
26634{
26635 find interpretation(problem,interpretation);
26636 neg find hasElementInContainment(problem,interpretation);
26637 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26638 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
26639 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
26640 find mayExist(problem, interpretation, newObject);
26641 neg find mustExist(problem, interpretation, newObject);
26642}
26643pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
26644 problem:LogicProblem, interpretation:PartialInterpretation,
26645 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26646 container:DefinedElement)
26647{
26648 find interpretation(problem,interpretation);
26649 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26650 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
26651 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26652 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
26653 find mustInstanceOfEClassifier_class(problem,interpretation,container);
26654 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
26655 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
26656 find mustExist(problem, interpretation, container);
26657 neg find mustExist(problem, interpretation, newObject);
26658}
26659pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
26660 problem:LogicProblem, interpretation:PartialInterpretation,
26661 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26662 container:DefinedElement)
26663{
26664 find interpretation(problem,interpretation);
26665 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26666 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
26667 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26668 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
26669 find mustInstanceOfEOperation_class(problem,interpretation,container);
26670 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
26671 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
26672 find mustExist(problem, interpretation, container);
26673 neg find mustExist(problem, interpretation, newObject);
26674}
26675pattern createObject_ETypeParameter_class(
26676 problem:LogicProblem, interpretation:PartialInterpretation,
26677 typeInterpretation:PartialComplexTypeInterpretation)
26678{
26679 find interpretation(problem,interpretation);
26680 neg find hasElementInContainment(problem,interpretation);
26681 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26682 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
26683 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
26684 find mayExist(problem, interpretation, newObject);
26685 neg find mustExist(problem, interpretation, newObject);
26686}
26687pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
26688 problem:LogicProblem, interpretation:PartialInterpretation,
26689 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26690 container:DefinedElement)
26691{
26692 find interpretation(problem,interpretation);
26693 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26694 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
26695 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26696 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
26697 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26698 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
26699 find mustInstanceOfEPackage_class(problem,interpretation,container);
26700 find mayInstanceOfEClass_class(problem,interpretation,newObject);
26701 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
26702 find mustExist(problem, interpretation, container);
26703 neg find mustExist(problem, interpretation, newObject);
26704}
26705pattern createObject_EClass_class(
26706 problem:LogicProblem, interpretation:PartialInterpretation,
26707 typeInterpretation:PartialComplexTypeInterpretation)
26708{
26709 find interpretation(problem,interpretation);
26710 neg find hasElementInContainment(problem,interpretation);
26711 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26712 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
26713 find mayInstanceOfEClass_class(problem,interpretation,newObject);
26714 find mayExist(problem, interpretation, newObject);
26715 neg find mustExist(problem, interpretation, newObject);
26716}
26717
26718//////////
26719// 4.2 Type refinement
26720//////////
26721pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26722 find interpretation(problem,interpretation);
26723 PartialInterpretation.newElements(interpretation,element);
26724 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
26725 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
26726 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26727 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26728 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26729 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26730 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26731 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26732 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26733 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26734}
26735pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26736 find interpretation(problem,interpretation);
26737 PartialInterpretation.newElements(interpretation,element);
26738 find mayInstanceOfEParameter_class(problem,interpretation,element);
26739 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26740 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26741 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26742 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
26743 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26744 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26745 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26746 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26747 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26748 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26749 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26750}
26751pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26752 find interpretation(problem,interpretation);
26753 PartialInterpretation.newElements(interpretation,element);
26754 find mayInstanceOfEEnum_class(problem,interpretation,element);
26755 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26756 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26757 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
26758 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26759 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26760 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26761 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26762 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26763 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26764 neg find mustInstanceOfEClass_class(problem,interpretation,element);
26765}
26766pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26767 find interpretation(problem,interpretation);
26768 PartialInterpretation.newElements(interpretation,element);
26769 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
26770 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26771 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26772 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26773 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26774 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
26775}
26776pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26777 find interpretation(problem,interpretation);
26778 PartialInterpretation.newElements(interpretation,element);
26779 find mayInstanceOfEGenericType_class(problem,interpretation,element);
26780 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
26781 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26782 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26783 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26784}
26785pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26786 find interpretation(problem,interpretation);
26787 PartialInterpretation.newElements(interpretation,element);
26788 find mayInstanceOfEReference_class(problem,interpretation,element);
26789 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26790 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
26791 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26792 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26793 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26794 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26795 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26796 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26797 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26798 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26799 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26800 neg find mustInstanceOfEReference_class(problem,interpretation,element);
26801}
26802pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26803 find interpretation(problem,interpretation);
26804 PartialInterpretation.newElements(interpretation,element);
26805 find mayInstanceOfEAttribute_class(problem,interpretation,element);
26806 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26807 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
26808 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26809 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26810 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26811 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26812 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26813 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26814 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26815 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26816 neg find mustInstanceOfEReference_class(problem,interpretation,element);
26817 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26818}
26819pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26820 find interpretation(problem,interpretation);
26821 PartialInterpretation.newElements(interpretation,element);
26822 find mayInstanceOfEDataType_class(problem,interpretation,element);
26823 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26824 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
26825 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26826 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
26827 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26828 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26829 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26830 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26831 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26832 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26833 neg find mustInstanceOfEClass_class(problem,interpretation,element);
26834}
26835pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26836 find interpretation(problem,interpretation);
26837 PartialInterpretation.newElements(interpretation,element);
26838 find mayInstanceOfEOperation_class(problem,interpretation,element);
26839 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26840 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26841 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26842 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26843 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
26844 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26845 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26846 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26847 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26848 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26849 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26850}
26851pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26852 find interpretation(problem,interpretation);
26853 PartialInterpretation.newElements(interpretation,element);
26854 find mayInstanceOfEObject_class(problem,interpretation,element);
26855 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
26856 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26857 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26858 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26859}
26860pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26861 find interpretation(problem,interpretation);
26862 PartialInterpretation.newElements(interpretation,element);
26863 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26864 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
26865 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26866 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26867 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26868}
26869pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26870 find interpretation(problem,interpretation);
26871 PartialInterpretation.newElements(interpretation,element);
26872 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
26873 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26874 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26875 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26876 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26877 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26878 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26879 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26880 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26881 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26882}
26883pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26884 find interpretation(problem,interpretation);
26885 PartialInterpretation.newElements(interpretation,element);
26886 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
26887 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26888 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26889 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26890 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26891 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26892 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26893 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26894 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26895 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26896}
26897pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26898 find interpretation(problem,interpretation);
26899 PartialInterpretation.newElements(interpretation,element);
26900 find mayInstanceOfEClass_class(problem,interpretation,element);
26901 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26902 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
26903 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26904 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26905 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26906 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26907 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26908 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26909 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26910 neg find mustInstanceOfEClass_class(problem,interpretation,element);
26911}
26912
26913//////////
26914// 4.3 Relation refinement
26915//////////
26916pattern refineRelation_eAttributeType_reference_EAttribute(
26917 problem:LogicProblem, interpretation:PartialInterpretation,
26918 relationIterpretation:PartialRelationInterpretation,
26919 from: DefinedElement, to: DefinedElement)
26920{
26921 find interpretation(problem,interpretation);
26922 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26923 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
26924 find mustExist(problem, interpretation, from);
26925 find mustExist(problem, interpretation, to);
26926 find mustInstanceOfEAttribute_class(problem,interpretation,from);
26927 find mustInstanceOfEDataType_class(problem,interpretation,to);
26928 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
26929 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
26930}
26931pattern refineRelation_references_reference_EAnnotation(
26932 problem:LogicProblem, interpretation:PartialInterpretation,
26933 relationIterpretation:PartialRelationInterpretation,
26934 from: DefinedElement, to: DefinedElement)
26935{
26936 find interpretation(problem,interpretation);
26937 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26938 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
26939 find mustExist(problem, interpretation, from);
26940 find mustExist(problem, interpretation, to);
26941 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
26942 find mustInstanceOfEObject_class(problem,interpretation,to);
26943 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
26944 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
26945}
26946pattern refineRelation_eSuperTypes_reference_EClass(
26947 problem:LogicProblem, interpretation:PartialInterpretation,
26948 relationIterpretation:PartialRelationInterpretation,
26949 from: DefinedElement, to: DefinedElement)
26950{
26951 find interpretation(problem,interpretation);
26952 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26953 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
26954 find mustExist(problem, interpretation, from);
26955 find mustExist(problem, interpretation, to);
26956 find mustInstanceOfEClass_class(problem,interpretation,from);
26957 find mustInstanceOfEClass_class(problem,interpretation,to);
26958 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
26959 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
26960}
26961pattern refineRelation_eAllAttributes_reference_EClass(
26962 problem:LogicProblem, interpretation:PartialInterpretation,
26963 relationIterpretation:PartialRelationInterpretation,
26964 from: DefinedElement, to: DefinedElement)
26965{
26966 find interpretation(problem,interpretation);
26967 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26968 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
26969 find mustExist(problem, interpretation, from);
26970 find mustExist(problem, interpretation, to);
26971 find mustInstanceOfEClass_class(problem,interpretation,from);
26972 find mustInstanceOfEAttribute_class(problem,interpretation,to);
26973 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
26974 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
26975}
26976pattern refineRelation_eAllReferences_reference_EClass(
26977 problem:LogicProblem, interpretation:PartialInterpretation,
26978 relationIterpretation:PartialRelationInterpretation,
26979 from: DefinedElement, to: DefinedElement)
26980{
26981 find interpretation(problem,interpretation);
26982 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26983 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
26984 find mustExist(problem, interpretation, from);
26985 find mustExist(problem, interpretation, to);
26986 find mustInstanceOfEClass_class(problem,interpretation,from);
26987 find mustInstanceOfEReference_class(problem,interpretation,to);
26988 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
26989 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
26990}
26991pattern refineRelation_eReferences_reference_EClass(
26992 problem:LogicProblem, interpretation:PartialInterpretation,
26993 relationIterpretation:PartialRelationInterpretation,
26994 from: DefinedElement, to: DefinedElement)
26995{
26996 find interpretation(problem,interpretation);
26997 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26998 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
26999 find mustExist(problem, interpretation, from);
27000 find mustExist(problem, interpretation, to);
27001 find mustInstanceOfEClass_class(problem,interpretation,from);
27002 find mustInstanceOfEReference_class(problem,interpretation,to);
27003 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
27004 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
27005}
27006pattern refineRelation_eAttributes_reference_EClass(
27007 problem:LogicProblem, interpretation:PartialInterpretation,
27008 relationIterpretation:PartialRelationInterpretation,
27009 from: DefinedElement, to: DefinedElement)
27010{
27011 find interpretation(problem,interpretation);
27012 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27013 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
27014 find mustExist(problem, interpretation, from);
27015 find mustExist(problem, interpretation, to);
27016 find mustInstanceOfEClass_class(problem,interpretation,from);
27017 find mustInstanceOfEAttribute_class(problem,interpretation,to);
27018 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
27019 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
27020}
27021pattern refineRelation_eAllContainments_reference_EClass(
27022 problem:LogicProblem, interpretation:PartialInterpretation,
27023 relationIterpretation:PartialRelationInterpretation,
27024 from: DefinedElement, to: DefinedElement)
27025{
27026 find interpretation(problem,interpretation);
27027 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27028 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
27029 find mustExist(problem, interpretation, from);
27030 find mustExist(problem, interpretation, to);
27031 find mustInstanceOfEClass_class(problem,interpretation,from);
27032 find mustInstanceOfEReference_class(problem,interpretation,to);
27033 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
27034 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
27035}
27036pattern refineRelation_eAllOperations_reference_EClass(
27037 problem:LogicProblem, interpretation:PartialInterpretation,
27038 relationIterpretation:PartialRelationInterpretation,
27039 from: DefinedElement, to: DefinedElement)
27040{
27041 find interpretation(problem,interpretation);
27042 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27043 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
27044 find mustExist(problem, interpretation, from);
27045 find mustExist(problem, interpretation, to);
27046 find mustInstanceOfEClass_class(problem,interpretation,from);
27047 find mustInstanceOfEOperation_class(problem,interpretation,to);
27048 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
27049 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
27050}
27051pattern refineRelation_eAllStructuralFeatures_reference_EClass(
27052 problem:LogicProblem, interpretation:PartialInterpretation,
27053 relationIterpretation:PartialRelationInterpretation,
27054 from: DefinedElement, to: DefinedElement)
27055{
27056 find interpretation(problem,interpretation);
27057 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27058 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
27059 find mustExist(problem, interpretation, from);
27060 find mustExist(problem, interpretation, to);
27061 find mustInstanceOfEClass_class(problem,interpretation,from);
27062 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
27063 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
27064 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
27065}
27066pattern refineRelation_eAllSuperTypes_reference_EClass(
27067 problem:LogicProblem, interpretation:PartialInterpretation,
27068 relationIterpretation:PartialRelationInterpretation,
27069 from: DefinedElement, to: DefinedElement)
27070{
27071 find interpretation(problem,interpretation);
27072 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27073 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
27074 find mustExist(problem, interpretation, from);
27075 find mustExist(problem, interpretation, to);
27076 find mustInstanceOfEClass_class(problem,interpretation,from);
27077 find mustInstanceOfEClass_class(problem,interpretation,to);
27078 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
27079 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
27080}
27081pattern refineRelation_eIDAttribute_reference_EClass(
27082 problem:LogicProblem, interpretation:PartialInterpretation,
27083 relationIterpretation:PartialRelationInterpretation,
27084 from: DefinedElement, to: DefinedElement)
27085{
27086 find interpretation(problem,interpretation);
27087 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27088 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
27089 find mustExist(problem, interpretation, from);
27090 find mustExist(problem, interpretation, to);
27091 find mustInstanceOfEClass_class(problem,interpretation,from);
27092 find mustInstanceOfEAttribute_class(problem,interpretation,to);
27093 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
27094 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
27095}
27096pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
27097 problem:LogicProblem, interpretation:PartialInterpretation,
27098 relationIterpretation:PartialRelationInterpretation,
27099 from: DefinedElement, to: DefinedElement)
27100{
27101 find interpretation(problem,interpretation);
27102 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27103 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
27104 find mustExist(problem, interpretation, from);
27105 find mustExist(problem, interpretation, to);
27106 find mustInstanceOfEClass_class(problem,interpretation,from);
27107 find mustInstanceOfEGenericType_class(problem,interpretation,to);
27108 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
27109 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
27110}
27111pattern refineRelation_eExceptions_reference_EOperation(
27112 problem:LogicProblem, interpretation:PartialInterpretation,
27113 relationIterpretation:PartialRelationInterpretation,
27114 from: DefinedElement, to: DefinedElement)
27115{
27116 find interpretation(problem,interpretation);
27117 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27118 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
27119 find mustExist(problem, interpretation, from);
27120 find mustExist(problem, interpretation, to);
27121 find mustInstanceOfEOperation_class(problem,interpretation,from);
27122 find mustInstanceOfEClassifier_class(problem,interpretation,to);
27123 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
27124 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
27125}
27126pattern refineRelation_eOpposite_reference_EReference(
27127 problem:LogicProblem, interpretation:PartialInterpretation,
27128 relationIterpretation:PartialRelationInterpretation,
27129 from: DefinedElement, to: DefinedElement)
27130{
27131 find interpretation(problem,interpretation);
27132 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27133 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
27134 find mustExist(problem, interpretation, from);
27135 find mustExist(problem, interpretation, to);
27136 find mustInstanceOfEReference_class(problem,interpretation,from);
27137 find mustInstanceOfEReference_class(problem,interpretation,to);
27138 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
27139 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
27140}
27141pattern refineRelation_eReferenceType_reference_EReference(
27142 problem:LogicProblem, interpretation:PartialInterpretation,
27143 relationIterpretation:PartialRelationInterpretation,
27144 from: DefinedElement, to: DefinedElement)
27145{
27146 find interpretation(problem,interpretation);
27147 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27148 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
27149 find mustExist(problem, interpretation, from);
27150 find mustExist(problem, interpretation, to);
27151 find mustInstanceOfEReference_class(problem,interpretation,from);
27152 find mustInstanceOfEClass_class(problem,interpretation,to);
27153 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
27154 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
27155}
27156pattern refineRelation_eKeys_reference_EReference(
27157 problem:LogicProblem, interpretation:PartialInterpretation,
27158 relationIterpretation:PartialRelationInterpretation,
27159 from: DefinedElement, to: DefinedElement)
27160{
27161 find interpretation(problem,interpretation);
27162 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27163 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
27164 find mustExist(problem, interpretation, from);
27165 find mustExist(problem, interpretation, to);
27166 find mustInstanceOfEReference_class(problem,interpretation,from);
27167 find mustInstanceOfEAttribute_class(problem,interpretation,to);
27168 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
27169 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
27170}
27171pattern refineRelation_eType_reference_ETypedElement(
27172 problem:LogicProblem, interpretation:PartialInterpretation,
27173 relationIterpretation:PartialRelationInterpretation,
27174 from: DefinedElement, to: DefinedElement)
27175{
27176 find interpretation(problem,interpretation);
27177 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27178 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
27179 find mustExist(problem, interpretation, from);
27180 find mustExist(problem, interpretation, to);
27181 find mustInstanceOfETypedElement_class(problem,interpretation,from);
27182 find mustInstanceOfEClassifier_class(problem,interpretation,to);
27183 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
27184 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
27185}
27186pattern refineRelation_eRawType_reference_EGenericType(
27187 problem:LogicProblem, interpretation:PartialInterpretation,
27188 relationIterpretation:PartialRelationInterpretation,
27189 from: DefinedElement, to: DefinedElement)
27190{
27191 find interpretation(problem,interpretation);
27192 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27193 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
27194 find mustExist(problem, interpretation, from);
27195 find mustExist(problem, interpretation, to);
27196 find mustInstanceOfEGenericType_class(problem,interpretation,from);
27197 find mustInstanceOfEClassifier_class(problem,interpretation,to);
27198 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
27199 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
27200}
27201pattern refineRelation_eTypeParameter_reference_EGenericType(
27202 problem:LogicProblem, interpretation:PartialInterpretation,
27203 relationIterpretation:PartialRelationInterpretation,
27204 from: DefinedElement, to: DefinedElement)
27205{
27206 find interpretation(problem,interpretation);
27207 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27208 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
27209 find mustExist(problem, interpretation, from);
27210 find mustExist(problem, interpretation, to);
27211 find mustInstanceOfEGenericType_class(problem,interpretation,from);
27212 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
27213 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
27214 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
27215}
27216pattern refineRelation_eClassifier_reference_EGenericType(
27217 problem:LogicProblem, interpretation:PartialInterpretation,
27218 relationIterpretation:PartialRelationInterpretation,
27219 from: DefinedElement, to: DefinedElement)
27220{
27221 find interpretation(problem,interpretation);
27222 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27223 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
27224 find mustExist(problem, interpretation, from);
27225 find mustExist(problem, interpretation, to);
27226 find mustInstanceOfEGenericType_class(problem,interpretation,from);
27227 find mustInstanceOfEClassifier_class(problem,interpretation,to);
27228 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
27229 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
27230}
27231pattern refineRelation_iD_attribute_EAttribute(
27232 problem:LogicProblem, interpretation:PartialInterpretation,
27233 relationIterpretation:PartialRelationInterpretation,
27234 from: DefinedElement, to: DefinedElement)
27235{
27236 find interpretation(problem,interpretation);
27237 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27238 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
27239 find mustExist(problem, interpretation, from);
27240 find mustExist(problem, interpretation, to);
27241 find mustInstanceOfEAttribute_class(problem,interpretation,from);
27242 BooleanElement(to);
27243 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
27244 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
27245}
27246pattern refineRelation_source_attribute_EAnnotation(
27247 problem:LogicProblem, interpretation:PartialInterpretation,
27248 relationIterpretation:PartialRelationInterpretation,
27249 from: DefinedElement, to: DefinedElement)
27250{
27251 find interpretation(problem,interpretation);
27252 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27253 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
27254 find mustExist(problem, interpretation, from);
27255 find mustExist(problem, interpretation, to);
27256 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
27257 StringElement(to);
27258 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
27259 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
27260}
27261pattern refineRelation_abstract_attribute_EClass(
27262 problem:LogicProblem, interpretation:PartialInterpretation,
27263 relationIterpretation:PartialRelationInterpretation,
27264 from: DefinedElement, to: DefinedElement)
27265{
27266 find interpretation(problem,interpretation);
27267 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27268 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
27269 find mustExist(problem, interpretation, from);
27270 find mustExist(problem, interpretation, to);
27271 find mustInstanceOfEClass_class(problem,interpretation,from);
27272 BooleanElement(to);
27273 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
27274 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
27275}
27276pattern refineRelation_interface_attribute_EClass(
27277 problem:LogicProblem, interpretation:PartialInterpretation,
27278 relationIterpretation:PartialRelationInterpretation,
27279 from: DefinedElement, to: DefinedElement)
27280{
27281 find interpretation(problem,interpretation);
27282 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27283 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
27284 find mustExist(problem, interpretation, from);
27285 find mustExist(problem, interpretation, to);
27286 find mustInstanceOfEClass_class(problem,interpretation,from);
27287 BooleanElement(to);
27288 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
27289 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
27290}
27291pattern refineRelation_instanceClassName_attribute_EClassifier(
27292 problem:LogicProblem, interpretation:PartialInterpretation,
27293 relationIterpretation:PartialRelationInterpretation,
27294 from: DefinedElement, to: DefinedElement)
27295{
27296 find interpretation(problem,interpretation);
27297 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27298 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
27299 find mustExist(problem, interpretation, from);
27300 find mustExist(problem, interpretation, to);
27301 find mustInstanceOfEClassifier_class(problem,interpretation,from);
27302 StringElement(to);
27303 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
27304 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
27305}
27306pattern refineRelation_instanceTypeName_attribute_EClassifier(
27307 problem:LogicProblem, interpretation:PartialInterpretation,
27308 relationIterpretation:PartialRelationInterpretation,
27309 from: DefinedElement, to: DefinedElement)
27310{
27311 find interpretation(problem,interpretation);
27312 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27313 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
27314 find mustExist(problem, interpretation, from);
27315 find mustExist(problem, interpretation, to);
27316 find mustInstanceOfEClassifier_class(problem,interpretation,from);
27317 StringElement(to);
27318 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
27319 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
27320}
27321pattern refineRelation_serializable_attribute_EDataType(
27322 problem:LogicProblem, interpretation:PartialInterpretation,
27323 relationIterpretation:PartialRelationInterpretation,
27324 from: DefinedElement, to: DefinedElement)
27325{
27326 find interpretation(problem,interpretation);
27327 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27328 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
27329 find mustExist(problem, interpretation, from);
27330 find mustExist(problem, interpretation, to);
27331 find mustInstanceOfEDataType_class(problem,interpretation,from);
27332 BooleanElement(to);
27333 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
27334 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
27335}
27336pattern refineRelation_value_attribute_EEnumLiteral(
27337 problem:LogicProblem, interpretation:PartialInterpretation,
27338 relationIterpretation:PartialRelationInterpretation,
27339 from: DefinedElement, to: DefinedElement)
27340{
27341 find interpretation(problem,interpretation);
27342 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27343 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
27344 find mustExist(problem, interpretation, from);
27345 find mustExist(problem, interpretation, to);
27346 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
27347 IntegerElement(to);
27348 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
27349 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
27350}
27351pattern refineRelation_literal_attribute_EEnumLiteral(
27352 problem:LogicProblem, interpretation:PartialInterpretation,
27353 relationIterpretation:PartialRelationInterpretation,
27354 from: DefinedElement, to: DefinedElement)
27355{
27356 find interpretation(problem,interpretation);
27357 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27358 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
27359 find mustExist(problem, interpretation, from);
27360 find mustExist(problem, interpretation, to);
27361 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
27362 StringElement(to);
27363 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
27364 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
27365}
27366pattern refineRelation_name_attribute_ENamedElement(
27367 problem:LogicProblem, interpretation:PartialInterpretation,
27368 relationIterpretation:PartialRelationInterpretation,
27369 from: DefinedElement, to: DefinedElement)
27370{
27371 find interpretation(problem,interpretation);
27372 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27373 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
27374 find mustExist(problem, interpretation, from);
27375 find mustExist(problem, interpretation, to);
27376 find mustInstanceOfENamedElement_class(problem,interpretation,from);
27377 StringElement(to);
27378 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
27379 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
27380}
27381pattern refineRelation_nsURI_attribute_EPackage(
27382 problem:LogicProblem, interpretation:PartialInterpretation,
27383 relationIterpretation:PartialRelationInterpretation,
27384 from: DefinedElement, to: DefinedElement)
27385{
27386 find interpretation(problem,interpretation);
27387 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27388 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
27389 find mustExist(problem, interpretation, from);
27390 find mustExist(problem, interpretation, to);
27391 find mustInstanceOfEPackage_class(problem,interpretation,from);
27392 StringElement(to);
27393 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
27394 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
27395}
27396pattern refineRelation_nsPrefix_attribute_EPackage(
27397 problem:LogicProblem, interpretation:PartialInterpretation,
27398 relationIterpretation:PartialRelationInterpretation,
27399 from: DefinedElement, to: DefinedElement)
27400{
27401 find interpretation(problem,interpretation);
27402 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27403 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
27404 find mustExist(problem, interpretation, from);
27405 find mustExist(problem, interpretation, to);
27406 find mustInstanceOfEPackage_class(problem,interpretation,from);
27407 StringElement(to);
27408 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
27409 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
27410}
27411pattern refineRelation_containment_attribute_EReference(
27412 problem:LogicProblem, interpretation:PartialInterpretation,
27413 relationIterpretation:PartialRelationInterpretation,
27414 from: DefinedElement, to: DefinedElement)
27415{
27416 find interpretation(problem,interpretation);
27417 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27418 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
27419 find mustExist(problem, interpretation, from);
27420 find mustExist(problem, interpretation, to);
27421 find mustInstanceOfEReference_class(problem,interpretation,from);
27422 BooleanElement(to);
27423 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
27424 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
27425}
27426pattern refineRelation_container_attribute_EReference(
27427 problem:LogicProblem, interpretation:PartialInterpretation,
27428 relationIterpretation:PartialRelationInterpretation,
27429 from: DefinedElement, to: DefinedElement)
27430{
27431 find interpretation(problem,interpretation);
27432 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27433 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
27434 find mustExist(problem, interpretation, from);
27435 find mustExist(problem, interpretation, to);
27436 find mustInstanceOfEReference_class(problem,interpretation,from);
27437 BooleanElement(to);
27438 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
27439 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
27440}
27441pattern refineRelation_resolveProxies_attribute_EReference(
27442 problem:LogicProblem, interpretation:PartialInterpretation,
27443 relationIterpretation:PartialRelationInterpretation,
27444 from: DefinedElement, to: DefinedElement)
27445{
27446 find interpretation(problem,interpretation);
27447 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27448 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
27449 find mustExist(problem, interpretation, from);
27450 find mustExist(problem, interpretation, to);
27451 find mustInstanceOfEReference_class(problem,interpretation,from);
27452 BooleanElement(to);
27453 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
27454 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
27455}
27456pattern refineRelation_changeable_attribute_EStructuralFeature(
27457 problem:LogicProblem, interpretation:PartialInterpretation,
27458 relationIterpretation:PartialRelationInterpretation,
27459 from: DefinedElement, to: DefinedElement)
27460{
27461 find interpretation(problem,interpretation);
27462 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27463 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
27464 find mustExist(problem, interpretation, from);
27465 find mustExist(problem, interpretation, to);
27466 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
27467 BooleanElement(to);
27468 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
27469 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
27470}
27471pattern refineRelation_volatile_attribute_EStructuralFeature(
27472 problem:LogicProblem, interpretation:PartialInterpretation,
27473 relationIterpretation:PartialRelationInterpretation,
27474 from: DefinedElement, to: DefinedElement)
27475{
27476 find interpretation(problem,interpretation);
27477 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27478 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
27479 find mustExist(problem, interpretation, from);
27480 find mustExist(problem, interpretation, to);
27481 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
27482 BooleanElement(to);
27483 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
27484 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
27485}
27486pattern refineRelation_transient_attribute_EStructuralFeature(
27487 problem:LogicProblem, interpretation:PartialInterpretation,
27488 relationIterpretation:PartialRelationInterpretation,
27489 from: DefinedElement, to: DefinedElement)
27490{
27491 find interpretation(problem,interpretation);
27492 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27493 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
27494 find mustExist(problem, interpretation, from);
27495 find mustExist(problem, interpretation, to);
27496 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
27497 BooleanElement(to);
27498 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
27499 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
27500}
27501pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
27502 problem:LogicProblem, interpretation:PartialInterpretation,
27503 relationIterpretation:PartialRelationInterpretation,
27504 from: DefinedElement, to: DefinedElement)
27505{
27506 find interpretation(problem,interpretation);
27507 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27508 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
27509 find mustExist(problem, interpretation, from);
27510 find mustExist(problem, interpretation, to);
27511 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
27512 StringElement(to);
27513 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
27514 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
27515}
27516pattern refineRelation_unsettable_attribute_EStructuralFeature(
27517 problem:LogicProblem, interpretation:PartialInterpretation,
27518 relationIterpretation:PartialRelationInterpretation,
27519 from: DefinedElement, to: DefinedElement)
27520{
27521 find interpretation(problem,interpretation);
27522 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27523 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
27524 find mustExist(problem, interpretation, from);
27525 find mustExist(problem, interpretation, to);
27526 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
27527 BooleanElement(to);
27528 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
27529 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
27530}
27531pattern refineRelation_derived_attribute_EStructuralFeature(
27532 problem:LogicProblem, interpretation:PartialInterpretation,
27533 relationIterpretation:PartialRelationInterpretation,
27534 from: DefinedElement, to: DefinedElement)
27535{
27536 find interpretation(problem,interpretation);
27537 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27538 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
27539 find mustExist(problem, interpretation, from);
27540 find mustExist(problem, interpretation, to);
27541 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
27542 BooleanElement(to);
27543 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
27544 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
27545}
27546pattern refineRelation_ordered_attribute_ETypedElement(
27547 problem:LogicProblem, interpretation:PartialInterpretation,
27548 relationIterpretation:PartialRelationInterpretation,
27549 from: DefinedElement, to: DefinedElement)
27550{
27551 find interpretation(problem,interpretation);
27552 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27553 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
27554 find mustExist(problem, interpretation, from);
27555 find mustExist(problem, interpretation, to);
27556 find mustInstanceOfETypedElement_class(problem,interpretation,from);
27557 BooleanElement(to);
27558 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
27559 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
27560}
27561pattern refineRelation_unique_attribute_ETypedElement(
27562 problem:LogicProblem, interpretation:PartialInterpretation,
27563 relationIterpretation:PartialRelationInterpretation,
27564 from: DefinedElement, to: DefinedElement)
27565{
27566 find interpretation(problem,interpretation);
27567 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27568 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
27569 find mustExist(problem, interpretation, from);
27570 find mustExist(problem, interpretation, to);
27571 find mustInstanceOfETypedElement_class(problem,interpretation,from);
27572 BooleanElement(to);
27573 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
27574 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
27575}
27576pattern refineRelation_lowerBound_attribute_ETypedElement(
27577 problem:LogicProblem, interpretation:PartialInterpretation,
27578 relationIterpretation:PartialRelationInterpretation,
27579 from: DefinedElement, to: DefinedElement)
27580{
27581 find interpretation(problem,interpretation);
27582 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27583 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
27584 find mustExist(problem, interpretation, from);
27585 find mustExist(problem, interpretation, to);
27586 find mustInstanceOfETypedElement_class(problem,interpretation,from);
27587 IntegerElement(to);
27588 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
27589 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
27590}
27591pattern refineRelation_upperBound_attribute_ETypedElement(
27592 problem:LogicProblem, interpretation:PartialInterpretation,
27593 relationIterpretation:PartialRelationInterpretation,
27594 from: DefinedElement, to: DefinedElement)
27595{
27596 find interpretation(problem,interpretation);
27597 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27598 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
27599 find mustExist(problem, interpretation, from);
27600 find mustExist(problem, interpretation, to);
27601 find mustInstanceOfETypedElement_class(problem,interpretation,from);
27602 IntegerElement(to);
27603 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
27604 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
27605}
27606pattern refineRelation_many_attribute_ETypedElement(
27607 problem:LogicProblem, interpretation:PartialInterpretation,
27608 relationIterpretation:PartialRelationInterpretation,
27609 from: DefinedElement, to: DefinedElement)
27610{
27611 find interpretation(problem,interpretation);
27612 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27613 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
27614 find mustExist(problem, interpretation, from);
27615 find mustExist(problem, interpretation, to);
27616 find mustInstanceOfETypedElement_class(problem,interpretation,from);
27617 BooleanElement(to);
27618 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
27619 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
27620}
27621pattern refineRelation_required_attribute_ETypedElement(
27622 problem:LogicProblem, interpretation:PartialInterpretation,
27623 relationIterpretation:PartialRelationInterpretation,
27624 from: DefinedElement, to: DefinedElement)
27625{
27626 find interpretation(problem,interpretation);
27627 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27628 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
27629 find mustExist(problem, interpretation, from);
27630 find mustExist(problem, interpretation, to);
27631 find mustInstanceOfETypedElement_class(problem,interpretation,from);
27632 BooleanElement(to);
27633 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
27634 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
27635}
27636pattern refineRelation_key_attribute_EStringToStringMapEntry(
27637 problem:LogicProblem, interpretation:PartialInterpretation,
27638 relationIterpretation:PartialRelationInterpretation,
27639 from: DefinedElement, to: DefinedElement)
27640{
27641 find interpretation(problem,interpretation);
27642 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27643 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
27644 find mustExist(problem, interpretation, from);
27645 find mustExist(problem, interpretation, to);
27646 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
27647 StringElement(to);
27648 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
27649 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
27650}
27651pattern refineRelation_value_attribute_EStringToStringMapEntry(
27652 problem:LogicProblem, interpretation:PartialInterpretation,
27653 relationIterpretation:PartialRelationInterpretation,
27654 from: DefinedElement, to: DefinedElement)
27655{
27656 find interpretation(problem,interpretation);
27657 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27658 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
27659 find mustExist(problem, interpretation, from);
27660 find mustExist(problem, interpretation, to);
27661 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
27662 StringElement(to);
27663 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
27664 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
27665}
diff --git a/Tests/Ecore-Plugin/outputs/debug/generation.logicproblem b/Tests/Ecore-Plugin/outputs/debug/generation.logicproblem
new file mode 100644
index 00000000..90807b8d
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/debug/generation.logicproblem
@@ -0,0 +1,2059 @@
1<?xml version="1.0" encoding="ASCII"?>
2<language:LogicProblem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/ecore2logicannotation" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" xmlns:language_1="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:partial2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/partial2logicannotation">
3 <types xsi:type="language_1:TypeDeclaration" name="EAttribute class" supertypes="//@types.14"/>
4 <types xsi:type="language_1:TypeDeclaration" name="EAnnotation class" supertypes="//@types.7 //@types.20"/>
5 <types xsi:type="language_1:TypeDeclaration" name="EClass class" supertypes="//@types.3"/>
6 <types xsi:type="language_1:TypeDeclaration" name="EClassifier class" subtypes="//@types.2 //@types.4" supertypes="//@types.8 //@types.22" isAbstract="true"/>
7 <types xsi:type="language_1:TypeDeclaration" name="EDataType class" subtypes="//@types.5" supertypes="//@types.3"/>
8 <types xsi:type="language_1:TypeDeclaration" name="EEnum class" supertypes="//@types.4"/>
9 <types xsi:type="language_1:TypeDeclaration" name="EEnumLiteral class" supertypes="//@types.8 //@types.22"/>
10 <types xsi:type="language_1:TypeDeclaration" name="EModelElement class" subtypes="//@types.1 //@types.8 //@types.19 //@types.20" isAbstract="true"/>
11 <types xsi:type="language_1:TypeDeclaration" name="ENamedElement class" subtypes="//@types.3 //@types.6 //@types.11 //@types.15 //@types.18 //@types.21 //@types.22" supertypes="//@types.7" isAbstract="true"/>
12 <types xsi:type="language_1:TypeDeclaration" name="EObject class"/>
13 <types xsi:type="language_1:TypeDeclaration" name="EOperation class" supertypes="//@types.15"/>
14 <types xsi:type="language_1:TypeDeclaration" name="EPackage class" subtypes="//@types.23 //@types.24" supertypes="//@types.8" isAbstract="true"/>
15 <types xsi:type="language_1:TypeDeclaration" name="EParameter class" supertypes="//@types.15"/>
16 <types xsi:type="language_1:TypeDeclaration" name="EReference class" supertypes="//@types.14"/>
17 <types xsi:type="language_1:TypeDeclaration" name="EStructuralFeature class" subtypes="//@types.0 //@types.13" supertypes="//@types.15" isAbstract="true"/>
18 <types xsi:type="language_1:TypeDeclaration" name="ETypedElement class" subtypes="//@types.10 //@types.12 //@types.14" supertypes="//@types.8 //@types.22" isAbstract="true"/>
19 <types xsi:type="language_1:TypeDeclaration" name="EStringToStringMapEntry class"/>
20 <types xsi:type="language_1:TypeDeclaration" name="EGenericType class"/>
21 <types xsi:type="language_1:TypeDeclaration" name="ETypeParameter class" supertypes="//@types.8 //@types.22"/>
22 <types xsi:type="language_1:TypeDefinition" name="EModelElement class DefinedPart" subtypes="//@types.21" supertypes="//@types.7" isAbstract="true" elements="//@elements.0"/>
23 <types xsi:type="language_1:TypeDeclaration" name="EModelElement class UndefinedPart" subtypes="//@types.1 //@types.22" supertypes="//@types.7" isAbstract="true"/>
24 <types xsi:type="language_1:TypeDefinition" name="ENamedElement class DefinedPart" subtypes="//@types.23" supertypes="//@types.8 //@types.19" isAbstract="true" elements="//@elements.0"/>
25 <types xsi:type="language_1:TypeDeclaration" name="ENamedElement class UndefinedPart" subtypes="//@types.3 //@types.6 //@types.24 //@types.15 //@types.18" supertypes="//@types.8 //@types.20" isAbstract="true"/>
26 <types xsi:type="language_1:TypeDefinition" name="EPackage class DefinedPart" supertypes="//@types.11 //@types.21" elements="//@elements.0"/>
27 <types xsi:type="language_1:TypeDeclaration" name="EPackage class UndefinedPart" supertypes="//@types.11 //@types.22"/>
28 <assertions name="lowerMultiplicity eAttributeType EAttribute" annotations="//@annotations.0">
29 <value xsi:type="language_1:Forall">
30 <quantifiedVariables name="src">
31 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
32 </quantifiedVariables>
33 <expression xsi:type="language_1:Exists">
34 <quantifiedVariables name="trg 1">
35 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
36 </quantifiedVariables>
37 <expression xsi:type="language_1:And">
38 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
39 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/>
40 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@expression/@quantifiedVariables.0"/>
41 </operands>
42 </expression>
43 </expression>
44 </value>
45 </assertions>
46 <assertions name="upperMultiplicity eAttributeType EAttribute" annotations="//@annotations.1">
47 <value xsi:type="language_1:Forall">
48 <quantifiedVariables name="src">
49 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
50 </quantifiedVariables>
51 <quantifiedVariables name="trg 1">
52 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
53 </quantifiedVariables>
54 <quantifiedVariables name="trg 2">
55 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
56 </quantifiedVariables>
57 <expression xsi:type="language_1:Impl">
58 <leftOperand xsi:type="language_1:And">
59 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
60 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
61 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
62 </operands>
63 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
64 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
65 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.2"/>
66 </operands>
67 </leftOperand>
68 <rightOperand xsi:type="language_1:Not">
69 <operand xsi:type="language_1:Distinct">
70 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
71 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.2"/>
72 </operand>
73 </rightOperand>
74 </expression>
75 </value>
76 </assertions>
77 <assertions name="upperMultiplicity eModelElement EAnnotation" annotations="//@annotations.2">
78 <value xsi:type="language_1:Forall">
79 <quantifiedVariables name="src">
80 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
81 </quantifiedVariables>
82 <quantifiedVariables name="trg 1">
83 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
84 </quantifiedVariables>
85 <quantifiedVariables name="trg 2">
86 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
87 </quantifiedVariables>
88 <expression xsi:type="language_1:Impl">
89 <leftOperand xsi:type="language_1:And">
90 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
91 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
92 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.1"/>
93 </operands>
94 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
95 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
96 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.2"/>
97 </operands>
98 </leftOperand>
99 <rightOperand xsi:type="language_1:Not">
100 <operand xsi:type="language_1:Distinct">
101 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.1"/>
102 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.2"/>
103 </operand>
104 </rightOperand>
105 </expression>
106 </value>
107 </assertions>
108 <assertions name="upperMultiplicity eIDAttribute EClass" annotations="//@annotations.3">
109 <value xsi:type="language_1:Forall">
110 <quantifiedVariables name="src">
111 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
112 </quantifiedVariables>
113 <quantifiedVariables name="trg 1">
114 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
115 </quantifiedVariables>
116 <quantifiedVariables name="trg 2">
117 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
118 </quantifiedVariables>
119 <expression xsi:type="language_1:Impl">
120 <leftOperand xsi:type="language_1:And">
121 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15">
122 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
123 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
124 </operands>
125 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.15">
126 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
127 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/>
128 </operands>
129 </leftOperand>
130 <rightOperand xsi:type="language_1:Not">
131 <operand xsi:type="language_1:Distinct">
132 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
133 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/>
134 </operand>
135 </rightOperand>
136 </expression>
137 </value>
138 </assertions>
139 <assertions name="upperMultiplicity ePackage EClassifier" annotations="//@annotations.4">
140 <value xsi:type="language_1:Forall">
141 <quantifiedVariables name="src">
142 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
143 </quantifiedVariables>
144 <quantifiedVariables name="trg 1">
145 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
146 </quantifiedVariables>
147 <quantifiedVariables name="trg 2">
148 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
149 </quantifiedVariables>
150 <expression xsi:type="language_1:Impl">
151 <leftOperand xsi:type="language_1:And">
152 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19">
153 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.0"/>
154 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.1"/>
155 </operands>
156 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19">
157 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.0"/>
158 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.2"/>
159 </operands>
160 </leftOperand>
161 <rightOperand xsi:type="language_1:Not">
162 <operand xsi:type="language_1:Distinct">
163 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.1"/>
164 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.2"/>
165 </operand>
166 </rightOperand>
167 </expression>
168 </value>
169 </assertions>
170 <assertions name="upperMultiplicity eEnum EEnumLiteral" annotations="//@annotations.5">
171 <value xsi:type="language_1:Forall">
172 <quantifiedVariables name="src">
173 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
174 </quantifiedVariables>
175 <quantifiedVariables name="trg 1">
176 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
177 </quantifiedVariables>
178 <quantifiedVariables name="trg 2">
179 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
180 </quantifiedVariables>
181 <expression xsi:type="language_1:Impl">
182 <leftOperand xsi:type="language_1:And">
183 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22">
184 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.0"/>
185 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.1"/>
186 </operands>
187 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22">
188 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.0"/>
189 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.2"/>
190 </operands>
191 </leftOperand>
192 <rightOperand xsi:type="language_1:Not">
193 <operand xsi:type="language_1:Distinct">
194 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.1"/>
195 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.2"/>
196 </operand>
197 </rightOperand>
198 </expression>
199 </value>
200 </assertions>
201 <assertions name="upperMultiplicity eContainingClass EOperation" annotations="//@annotations.6">
202 <value xsi:type="language_1:Forall">
203 <quantifiedVariables name="src">
204 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
205 </quantifiedVariables>
206 <quantifiedVariables name="trg 1">
207 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
208 </quantifiedVariables>
209 <quantifiedVariables name="trg 2">
210 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
211 </quantifiedVariables>
212 <expression xsi:type="language_1:Impl">
213 <leftOperand xsi:type="language_1:And">
214 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24">
215 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.0"/>
216 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.1"/>
217 </operands>
218 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24">
219 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.0"/>
220 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.2"/>
221 </operands>
222 </leftOperand>
223 <rightOperand xsi:type="language_1:Not">
224 <operand xsi:type="language_1:Distinct">
225 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.1"/>
226 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.2"/>
227 </operand>
228 </rightOperand>
229 </expression>
230 </value>
231 </assertions>
232 <assertions name="upperMultiplicity eSuperPackage EPackage" annotations="//@annotations.7">
233 <value xsi:type="language_1:Forall">
234 <quantifiedVariables name="src">
235 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
236 </quantifiedVariables>
237 <quantifiedVariables name="trg 1">
238 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
239 </quantifiedVariables>
240 <quantifiedVariables name="trg 2">
241 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
242 </quantifiedVariables>
243 <expression xsi:type="language_1:Impl">
244 <leftOperand xsi:type="language_1:And">
245 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31">
246 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.0"/>
247 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.1"/>
248 </operands>
249 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31">
250 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.0"/>
251 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.2"/>
252 </operands>
253 </leftOperand>
254 <rightOperand xsi:type="language_1:Not">
255 <operand xsi:type="language_1:Distinct">
256 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.1"/>
257 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.7/@value/@quantifiedVariables.2"/>
258 </operand>
259 </rightOperand>
260 </expression>
261 </value>
262 </assertions>
263 <assertions name="upperMultiplicity eOperation EParameter" annotations="//@annotations.8">
264 <value xsi:type="language_1:Forall">
265 <quantifiedVariables name="src">
266 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
267 </quantifiedVariables>
268 <quantifiedVariables name="trg 1">
269 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
270 </quantifiedVariables>
271 <quantifiedVariables name="trg 2">
272 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
273 </quantifiedVariables>
274 <expression xsi:type="language_1:Impl">
275 <leftOperand xsi:type="language_1:And">
276 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32">
277 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@quantifiedVariables.0"/>
278 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@quantifiedVariables.1"/>
279 </operands>
280 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32">
281 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@quantifiedVariables.0"/>
282 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@quantifiedVariables.2"/>
283 </operands>
284 </leftOperand>
285 <rightOperand xsi:type="language_1:Not">
286 <operand xsi:type="language_1:Distinct">
287 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@quantifiedVariables.1"/>
288 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.8/@value/@quantifiedVariables.2"/>
289 </operand>
290 </rightOperand>
291 </expression>
292 </value>
293 </assertions>
294 <assertions name="upperMultiplicity eOpposite EReference" annotations="//@annotations.9">
295 <value xsi:type="language_1:Forall">
296 <quantifiedVariables name="src">
297 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
298 </quantifiedVariables>
299 <quantifiedVariables name="trg 1">
300 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
301 </quantifiedVariables>
302 <quantifiedVariables name="trg 2">
303 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
304 </quantifiedVariables>
305 <expression xsi:type="language_1:Impl">
306 <leftOperand xsi:type="language_1:And">
307 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.33">
308 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.0"/>
309 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.1"/>
310 </operands>
311 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.33">
312 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.0"/>
313 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.2"/>
314 </operands>
315 </leftOperand>
316 <rightOperand xsi:type="language_1:Not">
317 <operand xsi:type="language_1:Distinct">
318 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.1"/>
319 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.9/@value/@quantifiedVariables.2"/>
320 </operand>
321 </rightOperand>
322 </expression>
323 </value>
324 </assertions>
325 <assertions name="lowerMultiplicity eReferenceType EReference" annotations="//@annotations.10">
326 <value xsi:type="language_1:Forall">
327 <quantifiedVariables name="src">
328 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
329 </quantifiedVariables>
330 <expression xsi:type="language_1:Exists">
331 <quantifiedVariables name="trg 1">
332 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
333 </quantifiedVariables>
334 <expression xsi:type="language_1:And">
335 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.34">
336 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.10/@value/@quantifiedVariables.0"/>
337 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.10/@value/@expression/@quantifiedVariables.0"/>
338 </operands>
339 </expression>
340 </expression>
341 </value>
342 </assertions>
343 <assertions name="upperMultiplicity eReferenceType EReference" annotations="//@annotations.11">
344 <value xsi:type="language_1:Forall">
345 <quantifiedVariables name="src">
346 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
347 </quantifiedVariables>
348 <quantifiedVariables name="trg 1">
349 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
350 </quantifiedVariables>
351 <quantifiedVariables name="trg 2">
352 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
353 </quantifiedVariables>
354 <expression xsi:type="language_1:Impl">
355 <leftOperand xsi:type="language_1:And">
356 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.34">
357 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.0"/>
358 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.1"/>
359 </operands>
360 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.34">
361 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.0"/>
362 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.2"/>
363 </operands>
364 </leftOperand>
365 <rightOperand xsi:type="language_1:Not">
366 <operand xsi:type="language_1:Distinct">
367 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.1"/>
368 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.11/@value/@quantifiedVariables.2"/>
369 </operand>
370 </rightOperand>
371 </expression>
372 </value>
373 </assertions>
374 <assertions name="upperMultiplicity eContainingClass EStructuralFeature" annotations="//@annotations.12">
375 <value xsi:type="language_1:Forall">
376 <quantifiedVariables name="src">
377 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
378 </quantifiedVariables>
379 <quantifiedVariables name="trg 1">
380 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
381 </quantifiedVariables>
382 <quantifiedVariables name="trg 2">
383 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
384 </quantifiedVariables>
385 <expression xsi:type="language_1:Impl">
386 <leftOperand xsi:type="language_1:And">
387 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.36">
388 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@quantifiedVariables.0"/>
389 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@quantifiedVariables.1"/>
390 </operands>
391 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.36">
392 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@quantifiedVariables.0"/>
393 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@quantifiedVariables.2"/>
394 </operands>
395 </leftOperand>
396 <rightOperand xsi:type="language_1:Not">
397 <operand xsi:type="language_1:Distinct">
398 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@quantifiedVariables.1"/>
399 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.12/@value/@quantifiedVariables.2"/>
400 </operand>
401 </rightOperand>
402 </expression>
403 </value>
404 </assertions>
405 <assertions name="upperMultiplicity eType ETypedElement" annotations="//@annotations.13">
406 <value xsi:type="language_1:Forall">
407 <quantifiedVariables name="src">
408 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
409 </quantifiedVariables>
410 <quantifiedVariables name="trg 1">
411 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
412 </quantifiedVariables>
413 <quantifiedVariables name="trg 2">
414 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
415 </quantifiedVariables>
416 <expression xsi:type="language_1:Impl">
417 <leftOperand xsi:type="language_1:And">
418 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.37">
419 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.0"/>
420 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.1"/>
421 </operands>
422 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.37">
423 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.0"/>
424 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.2"/>
425 </operands>
426 </leftOperand>
427 <rightOperand xsi:type="language_1:Not">
428 <operand xsi:type="language_1:Distinct">
429 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.1"/>
430 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.13/@value/@quantifiedVariables.2"/>
431 </operand>
432 </rightOperand>
433 </expression>
434 </value>
435 </assertions>
436 <assertions name="upperMultiplicity eGenericType ETypedElement" annotations="//@annotations.14">
437 <value xsi:type="language_1:Forall">
438 <quantifiedVariables name="src">
439 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
440 </quantifiedVariables>
441 <quantifiedVariables name="trg 1">
442 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
443 </quantifiedVariables>
444 <quantifiedVariables name="trg 2">
445 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
446 </quantifiedVariables>
447 <expression xsi:type="language_1:Impl">
448 <leftOperand xsi:type="language_1:And">
449 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.38">
450 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@quantifiedVariables.0"/>
451 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@quantifiedVariables.1"/>
452 </operands>
453 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.38">
454 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@quantifiedVariables.0"/>
455 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@quantifiedVariables.2"/>
456 </operands>
457 </leftOperand>
458 <rightOperand xsi:type="language_1:Not">
459 <operand xsi:type="language_1:Distinct">
460 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@quantifiedVariables.1"/>
461 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.14/@value/@quantifiedVariables.2"/>
462 </operand>
463 </rightOperand>
464 </expression>
465 </value>
466 </assertions>
467 <assertions name="upperMultiplicity eUpperBound EGenericType" annotations="//@annotations.15">
468 <value xsi:type="language_1:Forall">
469 <quantifiedVariables name="src">
470 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
471 </quantifiedVariables>
472 <quantifiedVariables name="trg 1">
473 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
474 </quantifiedVariables>
475 <quantifiedVariables name="trg 2">
476 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
477 </quantifiedVariables>
478 <expression xsi:type="language_1:Impl">
479 <leftOperand xsi:type="language_1:And">
480 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.39">
481 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.0"/>
482 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.1"/>
483 </operands>
484 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.39">
485 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.0"/>
486 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.2"/>
487 </operands>
488 </leftOperand>
489 <rightOperand xsi:type="language_1:Not">
490 <operand xsi:type="language_1:Distinct">
491 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.1"/>
492 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.15/@value/@quantifiedVariables.2"/>
493 </operand>
494 </rightOperand>
495 </expression>
496 </value>
497 </assertions>
498 <assertions name="lowerMultiplicity eRawType EGenericType" annotations="//@annotations.16">
499 <value xsi:type="language_1:Forall">
500 <quantifiedVariables name="src">
501 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
502 </quantifiedVariables>
503 <expression xsi:type="language_1:Exists">
504 <quantifiedVariables name="trg 1">
505 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
506 </quantifiedVariables>
507 <expression xsi:type="language_1:And">
508 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.41">
509 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.16/@value/@quantifiedVariables.0"/>
510 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.16/@value/@expression/@quantifiedVariables.0"/>
511 </operands>
512 </expression>
513 </expression>
514 </value>
515 </assertions>
516 <assertions name="upperMultiplicity eRawType EGenericType" annotations="//@annotations.17">
517 <value xsi:type="language_1:Forall">
518 <quantifiedVariables name="src">
519 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
520 </quantifiedVariables>
521 <quantifiedVariables name="trg 1">
522 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
523 </quantifiedVariables>
524 <quantifiedVariables name="trg 2">
525 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
526 </quantifiedVariables>
527 <expression xsi:type="language_1:Impl">
528 <leftOperand xsi:type="language_1:And">
529 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.41">
530 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.0"/>
531 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.1"/>
532 </operands>
533 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.41">
534 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.0"/>
535 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.2"/>
536 </operands>
537 </leftOperand>
538 <rightOperand xsi:type="language_1:Not">
539 <operand xsi:type="language_1:Distinct">
540 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.1"/>
541 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.17/@value/@quantifiedVariables.2"/>
542 </operand>
543 </rightOperand>
544 </expression>
545 </value>
546 </assertions>
547 <assertions name="upperMultiplicity eLowerBound EGenericType" annotations="//@annotations.18">
548 <value xsi:type="language_1:Forall">
549 <quantifiedVariables name="src">
550 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
551 </quantifiedVariables>
552 <quantifiedVariables name="trg 1">
553 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
554 </quantifiedVariables>
555 <quantifiedVariables name="trg 2">
556 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
557 </quantifiedVariables>
558 <expression xsi:type="language_1:Impl">
559 <leftOperand xsi:type="language_1:And">
560 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.42">
561 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.18/@value/@quantifiedVariables.0"/>
562 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.18/@value/@quantifiedVariables.1"/>
563 </operands>
564 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.42">
565 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.18/@value/@quantifiedVariables.0"/>
566 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.18/@value/@quantifiedVariables.2"/>
567 </operands>
568 </leftOperand>
569 <rightOperand xsi:type="language_1:Not">
570 <operand xsi:type="language_1:Distinct">
571 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.18/@value/@quantifiedVariables.1"/>
572 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.18/@value/@quantifiedVariables.2"/>
573 </operand>
574 </rightOperand>
575 </expression>
576 </value>
577 </assertions>
578 <assertions name="upperMultiplicity eTypeParameter EGenericType" annotations="//@annotations.19">
579 <value xsi:type="language_1:Forall">
580 <quantifiedVariables name="src">
581 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
582 </quantifiedVariables>
583 <quantifiedVariables name="trg 1">
584 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.18"/>
585 </quantifiedVariables>
586 <quantifiedVariables name="trg 2">
587 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.18"/>
588 </quantifiedVariables>
589 <expression xsi:type="language_1:Impl">
590 <leftOperand xsi:type="language_1:And">
591 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.43">
592 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.0"/>
593 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.1"/>
594 </operands>
595 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.43">
596 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.0"/>
597 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.2"/>
598 </operands>
599 </leftOperand>
600 <rightOperand xsi:type="language_1:Not">
601 <operand xsi:type="language_1:Distinct">
602 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.1"/>
603 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.19/@value/@quantifiedVariables.2"/>
604 </operand>
605 </rightOperand>
606 </expression>
607 </value>
608 </assertions>
609 <assertions name="upperMultiplicity eClassifier EGenericType" annotations="//@annotations.20">
610 <value xsi:type="language_1:Forall">
611 <quantifiedVariables name="src">
612 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
613 </quantifiedVariables>
614 <quantifiedVariables name="trg 1">
615 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
616 </quantifiedVariables>
617 <quantifiedVariables name="trg 2">
618 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
619 </quantifiedVariables>
620 <expression xsi:type="language_1:Impl">
621 <leftOperand xsi:type="language_1:And">
622 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.44">
623 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.20/@value/@quantifiedVariables.0"/>
624 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.20/@value/@quantifiedVariables.1"/>
625 </operands>
626 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.44">
627 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.20/@value/@quantifiedVariables.0"/>
628 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.20/@value/@quantifiedVariables.2"/>
629 </operands>
630 </leftOperand>
631 <rightOperand xsi:type="language_1:Not">
632 <operand xsi:type="language_1:Distinct">
633 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.20/@value/@quantifiedVariables.1"/>
634 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.20/@value/@quantifiedVariables.2"/>
635 </operand>
636 </rightOperand>
637 </expression>
638 </value>
639 </assertions>
640 <assertions name="oppositeReference eModelElement EAnnotation" annotations="//@annotations.21">
641 <value xsi:type="language_1:Forall">
642 <quantifiedVariables name="src">
643 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
644 </quantifiedVariables>
645 <quantifiedVariables name="trg">
646 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
647 </quantifiedVariables>
648 <expression xsi:type="language_1:Iff">
649 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
650 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.21/@value/@quantifiedVariables.0"/>
651 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.21/@value/@quantifiedVariables.1"/>
652 </leftOperand>
653 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.23">
654 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.21/@value/@quantifiedVariables.1"/>
655 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.21/@value/@quantifiedVariables.0"/>
656 </rightOperand>
657 </expression>
658 </value>
659 </assertions>
660 <assertions name="oppositeReference eOperations EClass" annotations="//@annotations.22">
661 <value xsi:type="language_1:Forall">
662 <quantifiedVariables name="src">
663 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
664 </quantifiedVariables>
665 <quantifiedVariables name="trg">
666 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
667 </quantifiedVariables>
668 <expression xsi:type="language_1:Iff">
669 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
670 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.22/@value/@quantifiedVariables.0"/>
671 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.22/@value/@quantifiedVariables.1"/>
672 </leftOperand>
673 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.24">
674 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.22/@value/@quantifiedVariables.1"/>
675 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.22/@value/@quantifiedVariables.0"/>
676 </rightOperand>
677 </expression>
678 </value>
679 </assertions>
680 <assertions name="oppositeReference eStructuralFeatures EClass" annotations="//@annotations.23">
681 <value xsi:type="language_1:Forall">
682 <quantifiedVariables name="src">
683 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
684 </quantifiedVariables>
685 <quantifiedVariables name="trg">
686 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
687 </quantifiedVariables>
688 <expression xsi:type="language_1:Iff">
689 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.16">
690 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.23/@value/@quantifiedVariables.0"/>
691 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.23/@value/@quantifiedVariables.1"/>
692 </leftOperand>
693 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.36">
694 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.23/@value/@quantifiedVariables.1"/>
695 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.23/@value/@quantifiedVariables.0"/>
696 </rightOperand>
697 </expression>
698 </value>
699 </assertions>
700 <assertions name="oppositeReference ePackage EClassifier" annotations="//@annotations.24">
701 <value xsi:type="language_1:Forall">
702 <quantifiedVariables name="src">
703 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
704 </quantifiedVariables>
705 <quantifiedVariables name="trg">
706 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
707 </quantifiedVariables>
708 <expression xsi:type="language_1:Iff">
709 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.19">
710 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.24/@value/@quantifiedVariables.0"/>
711 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.24/@value/@quantifiedVariables.1"/>
712 </leftOperand>
713 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.29">
714 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.24/@value/@quantifiedVariables.1"/>
715 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.24/@value/@quantifiedVariables.0"/>
716 </rightOperand>
717 </expression>
718 </value>
719 </assertions>
720 <assertions name="oppositeReference eLiterals EEnum" annotations="//@annotations.25">
721 <value xsi:type="language_1:Forall">
722 <quantifiedVariables name="src">
723 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
724 </quantifiedVariables>
725 <quantifiedVariables name="trg">
726 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
727 </quantifiedVariables>
728 <expression xsi:type="language_1:Iff">
729 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.21">
730 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.25/@value/@quantifiedVariables.0"/>
731 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.25/@value/@quantifiedVariables.1"/>
732 </leftOperand>
733 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.22">
734 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.25/@value/@quantifiedVariables.1"/>
735 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.25/@value/@quantifiedVariables.0"/>
736 </rightOperand>
737 </expression>
738 </value>
739 </assertions>
740 <assertions name="oppositeReference eParameters EOperation" annotations="//@annotations.26">
741 <value xsi:type="language_1:Forall">
742 <quantifiedVariables name="src">
743 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
744 </quantifiedVariables>
745 <quantifiedVariables name="trg">
746 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
747 </quantifiedVariables>
748 <expression xsi:type="language_1:Iff">
749 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.26">
750 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.26/@value/@quantifiedVariables.0"/>
751 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.26/@value/@quantifiedVariables.1"/>
752 </leftOperand>
753 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.32">
754 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.26/@value/@quantifiedVariables.1"/>
755 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.26/@value/@quantifiedVariables.0"/>
756 </rightOperand>
757 </expression>
758 </value>
759 </assertions>
760 <assertions name="oppositeReference eSubpackages EPackage" annotations="//@annotations.27">
761 <value xsi:type="language_1:Forall">
762 <quantifiedVariables name="src">
763 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
764 </quantifiedVariables>
765 <quantifiedVariables name="trg">
766 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
767 </quantifiedVariables>
768 <expression xsi:type="language_1:Iff">
769 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.30">
770 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.27/@value/@quantifiedVariables.0"/>
771 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.27/@value/@quantifiedVariables.1"/>
772 </leftOperand>
773 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.31">
774 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.27/@value/@quantifiedVariables.1"/>
775 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.27/@value/@quantifiedVariables.0"/>
776 </rightOperand>
777 </expression>
778 </value>
779 </assertions>
780 <assertions name="upperMultiplicity iD EAttribute" annotations="//@annotations.28">
781 <value xsi:type="language_1:Forall">
782 <quantifiedVariables name="src">
783 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
784 </quantifiedVariables>
785 <quantifiedVariables name="trg 1">
786 <range xsi:type="language_1:BoolTypeReference"/>
787 </quantifiedVariables>
788 <quantifiedVariables name="trg 2">
789 <range xsi:type="language_1:BoolTypeReference"/>
790 </quantifiedVariables>
791 <expression xsi:type="language_1:Impl">
792 <leftOperand xsi:type="language_1:And">
793 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.46">
794 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.28/@value/@quantifiedVariables.0"/>
795 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.28/@value/@quantifiedVariables.1"/>
796 </operands>
797 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.46">
798 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.28/@value/@quantifiedVariables.0"/>
799 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.28/@value/@quantifiedVariables.2"/>
800 </operands>
801 </leftOperand>
802 <rightOperand xsi:type="language_1:Not">
803 <operand xsi:type="language_1:Distinct">
804 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.28/@value/@quantifiedVariables.1"/>
805 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.28/@value/@quantifiedVariables.2"/>
806 </operand>
807 </rightOperand>
808 </expression>
809 </value>
810 </assertions>
811 <assertions name="upperMultiplicity source EAnnotation" annotations="//@annotations.29">
812 <value xsi:type="language_1:Forall">
813 <quantifiedVariables name="src">
814 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
815 </quantifiedVariables>
816 <quantifiedVariables name="trg 1">
817 <range xsi:type="language_1:StringTypeReference"/>
818 </quantifiedVariables>
819 <quantifiedVariables name="trg 2">
820 <range xsi:type="language_1:StringTypeReference"/>
821 </quantifiedVariables>
822 <expression xsi:type="language_1:Impl">
823 <leftOperand xsi:type="language_1:And">
824 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.47">
825 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.29/@value/@quantifiedVariables.0"/>
826 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.29/@value/@quantifiedVariables.1"/>
827 </operands>
828 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.47">
829 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.29/@value/@quantifiedVariables.0"/>
830 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.29/@value/@quantifiedVariables.2"/>
831 </operands>
832 </leftOperand>
833 <rightOperand xsi:type="language_1:Not">
834 <operand xsi:type="language_1:Distinct">
835 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.29/@value/@quantifiedVariables.1"/>
836 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.29/@value/@quantifiedVariables.2"/>
837 </operand>
838 </rightOperand>
839 </expression>
840 </value>
841 </assertions>
842 <assertions name="upperMultiplicity abstract EClass" annotations="//@annotations.30">
843 <value xsi:type="language_1:Forall">
844 <quantifiedVariables name="src">
845 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
846 </quantifiedVariables>
847 <quantifiedVariables name="trg 1">
848 <range xsi:type="language_1:BoolTypeReference"/>
849 </quantifiedVariables>
850 <quantifiedVariables name="trg 2">
851 <range xsi:type="language_1:BoolTypeReference"/>
852 </quantifiedVariables>
853 <expression xsi:type="language_1:Impl">
854 <leftOperand xsi:type="language_1:And">
855 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.48">
856 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.30/@value/@quantifiedVariables.0"/>
857 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.30/@value/@quantifiedVariables.1"/>
858 </operands>
859 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.48">
860 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.30/@value/@quantifiedVariables.0"/>
861 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.30/@value/@quantifiedVariables.2"/>
862 </operands>
863 </leftOperand>
864 <rightOperand xsi:type="language_1:Not">
865 <operand xsi:type="language_1:Distinct">
866 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.30/@value/@quantifiedVariables.1"/>
867 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.30/@value/@quantifiedVariables.2"/>
868 </operand>
869 </rightOperand>
870 </expression>
871 </value>
872 </assertions>
873 <assertions name="upperMultiplicity interface EClass" annotations="//@annotations.31">
874 <value xsi:type="language_1:Forall">
875 <quantifiedVariables name="src">
876 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
877 </quantifiedVariables>
878 <quantifiedVariables name="trg 1">
879 <range xsi:type="language_1:BoolTypeReference"/>
880 </quantifiedVariables>
881 <quantifiedVariables name="trg 2">
882 <range xsi:type="language_1:BoolTypeReference"/>
883 </quantifiedVariables>
884 <expression xsi:type="language_1:Impl">
885 <leftOperand xsi:type="language_1:And">
886 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.49">
887 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.31/@value/@quantifiedVariables.0"/>
888 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.31/@value/@quantifiedVariables.1"/>
889 </operands>
890 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.49">
891 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.31/@value/@quantifiedVariables.0"/>
892 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.31/@value/@quantifiedVariables.2"/>
893 </operands>
894 </leftOperand>
895 <rightOperand xsi:type="language_1:Not">
896 <operand xsi:type="language_1:Distinct">
897 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.31/@value/@quantifiedVariables.1"/>
898 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.31/@value/@quantifiedVariables.2"/>
899 </operand>
900 </rightOperand>
901 </expression>
902 </value>
903 </assertions>
904 <assertions name="upperMultiplicity instanceClassName EClassifier" annotations="//@annotations.32">
905 <value xsi:type="language_1:Forall">
906 <quantifiedVariables name="src">
907 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
908 </quantifiedVariables>
909 <quantifiedVariables name="trg 1">
910 <range xsi:type="language_1:StringTypeReference"/>
911 </quantifiedVariables>
912 <quantifiedVariables name="trg 2">
913 <range xsi:type="language_1:StringTypeReference"/>
914 </quantifiedVariables>
915 <expression xsi:type="language_1:Impl">
916 <leftOperand xsi:type="language_1:And">
917 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.50">
918 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.32/@value/@quantifiedVariables.0"/>
919 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.32/@value/@quantifiedVariables.1"/>
920 </operands>
921 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.50">
922 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.32/@value/@quantifiedVariables.0"/>
923 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.32/@value/@quantifiedVariables.2"/>
924 </operands>
925 </leftOperand>
926 <rightOperand xsi:type="language_1:Not">
927 <operand xsi:type="language_1:Distinct">
928 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.32/@value/@quantifiedVariables.1"/>
929 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.32/@value/@quantifiedVariables.2"/>
930 </operand>
931 </rightOperand>
932 </expression>
933 </value>
934 </assertions>
935 <assertions name="upperMultiplicity instanceTypeName EClassifier" annotations="//@annotations.33">
936 <value xsi:type="language_1:Forall">
937 <quantifiedVariables name="src">
938 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
939 </quantifiedVariables>
940 <quantifiedVariables name="trg 1">
941 <range xsi:type="language_1:StringTypeReference"/>
942 </quantifiedVariables>
943 <quantifiedVariables name="trg 2">
944 <range xsi:type="language_1:StringTypeReference"/>
945 </quantifiedVariables>
946 <expression xsi:type="language_1:Impl">
947 <leftOperand xsi:type="language_1:And">
948 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.51">
949 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.33/@value/@quantifiedVariables.0"/>
950 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.33/@value/@quantifiedVariables.1"/>
951 </operands>
952 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.51">
953 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.33/@value/@quantifiedVariables.0"/>
954 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.33/@value/@quantifiedVariables.2"/>
955 </operands>
956 </leftOperand>
957 <rightOperand xsi:type="language_1:Not">
958 <operand xsi:type="language_1:Distinct">
959 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.33/@value/@quantifiedVariables.1"/>
960 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.33/@value/@quantifiedVariables.2"/>
961 </operand>
962 </rightOperand>
963 </expression>
964 </value>
965 </assertions>
966 <assertions name="upperMultiplicity serializable EDataType" annotations="//@annotations.34">
967 <value xsi:type="language_1:Forall">
968 <quantifiedVariables name="src">
969 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
970 </quantifiedVariables>
971 <quantifiedVariables name="trg 1">
972 <range xsi:type="language_1:BoolTypeReference"/>
973 </quantifiedVariables>
974 <quantifiedVariables name="trg 2">
975 <range xsi:type="language_1:BoolTypeReference"/>
976 </quantifiedVariables>
977 <expression xsi:type="language_1:Impl">
978 <leftOperand xsi:type="language_1:And">
979 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.52">
980 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.34/@value/@quantifiedVariables.0"/>
981 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.34/@value/@quantifiedVariables.1"/>
982 </operands>
983 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.52">
984 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.34/@value/@quantifiedVariables.0"/>
985 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.34/@value/@quantifiedVariables.2"/>
986 </operands>
987 </leftOperand>
988 <rightOperand xsi:type="language_1:Not">
989 <operand xsi:type="language_1:Distinct">
990 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.34/@value/@quantifiedVariables.1"/>
991 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.34/@value/@quantifiedVariables.2"/>
992 </operand>
993 </rightOperand>
994 </expression>
995 </value>
996 </assertions>
997 <assertions name="upperMultiplicity value EEnumLiteral" annotations="//@annotations.35">
998 <value xsi:type="language_1:Forall">
999 <quantifiedVariables name="src">
1000 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1001 </quantifiedVariables>
1002 <quantifiedVariables name="trg 1">
1003 <range xsi:type="language_1:IntTypeReference"/>
1004 </quantifiedVariables>
1005 <quantifiedVariables name="trg 2">
1006 <range xsi:type="language_1:IntTypeReference"/>
1007 </quantifiedVariables>
1008 <expression xsi:type="language_1:Impl">
1009 <leftOperand xsi:type="language_1:And">
1010 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.53">
1011 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.35/@value/@quantifiedVariables.0"/>
1012 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.35/@value/@quantifiedVariables.1"/>
1013 </operands>
1014 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.53">
1015 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.35/@value/@quantifiedVariables.0"/>
1016 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.35/@value/@quantifiedVariables.2"/>
1017 </operands>
1018 </leftOperand>
1019 <rightOperand xsi:type="language_1:Not">
1020 <operand xsi:type="language_1:Distinct">
1021 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.35/@value/@quantifiedVariables.1"/>
1022 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.35/@value/@quantifiedVariables.2"/>
1023 </operand>
1024 </rightOperand>
1025 </expression>
1026 </value>
1027 </assertions>
1028 <assertions name="upperMultiplicity literal EEnumLiteral" annotations="//@annotations.36">
1029 <value xsi:type="language_1:Forall">
1030 <quantifiedVariables name="src">
1031 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1032 </quantifiedVariables>
1033 <quantifiedVariables name="trg 1">
1034 <range xsi:type="language_1:StringTypeReference"/>
1035 </quantifiedVariables>
1036 <quantifiedVariables name="trg 2">
1037 <range xsi:type="language_1:StringTypeReference"/>
1038 </quantifiedVariables>
1039 <expression xsi:type="language_1:Impl">
1040 <leftOperand xsi:type="language_1:And">
1041 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.54">
1042 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.36/@value/@quantifiedVariables.0"/>
1043 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.36/@value/@quantifiedVariables.1"/>
1044 </operands>
1045 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.54">
1046 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.36/@value/@quantifiedVariables.0"/>
1047 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.36/@value/@quantifiedVariables.2"/>
1048 </operands>
1049 </leftOperand>
1050 <rightOperand xsi:type="language_1:Not">
1051 <operand xsi:type="language_1:Distinct">
1052 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.36/@value/@quantifiedVariables.1"/>
1053 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.36/@value/@quantifiedVariables.2"/>
1054 </operand>
1055 </rightOperand>
1056 </expression>
1057 </value>
1058 </assertions>
1059 <assertions name="upperMultiplicity name ENamedElement" annotations="//@annotations.37">
1060 <value xsi:type="language_1:Forall">
1061 <quantifiedVariables name="src">
1062 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1063 </quantifiedVariables>
1064 <quantifiedVariables name="trg 1">
1065 <range xsi:type="language_1:StringTypeReference"/>
1066 </quantifiedVariables>
1067 <quantifiedVariables name="trg 2">
1068 <range xsi:type="language_1:StringTypeReference"/>
1069 </quantifiedVariables>
1070 <expression xsi:type="language_1:Impl">
1071 <leftOperand xsi:type="language_1:And">
1072 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.55">
1073 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.37/@value/@quantifiedVariables.0"/>
1074 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.37/@value/@quantifiedVariables.1"/>
1075 </operands>
1076 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.55">
1077 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.37/@value/@quantifiedVariables.0"/>
1078 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.37/@value/@quantifiedVariables.2"/>
1079 </operands>
1080 </leftOperand>
1081 <rightOperand xsi:type="language_1:Not">
1082 <operand xsi:type="language_1:Distinct">
1083 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.37/@value/@quantifiedVariables.1"/>
1084 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.37/@value/@quantifiedVariables.2"/>
1085 </operand>
1086 </rightOperand>
1087 </expression>
1088 </value>
1089 </assertions>
1090 <assertions name="upperMultiplicity nsURI EPackage" annotations="//@annotations.38">
1091 <value xsi:type="language_1:Forall">
1092 <quantifiedVariables name="src">
1093 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1094 </quantifiedVariables>
1095 <quantifiedVariables name="trg 1">
1096 <range xsi:type="language_1:StringTypeReference"/>
1097 </quantifiedVariables>
1098 <quantifiedVariables name="trg 2">
1099 <range xsi:type="language_1:StringTypeReference"/>
1100 </quantifiedVariables>
1101 <expression xsi:type="language_1:Impl">
1102 <leftOperand xsi:type="language_1:And">
1103 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.56">
1104 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.38/@value/@quantifiedVariables.0"/>
1105 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.38/@value/@quantifiedVariables.1"/>
1106 </operands>
1107 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.56">
1108 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.38/@value/@quantifiedVariables.0"/>
1109 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.38/@value/@quantifiedVariables.2"/>
1110 </operands>
1111 </leftOperand>
1112 <rightOperand xsi:type="language_1:Not">
1113 <operand xsi:type="language_1:Distinct">
1114 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.38/@value/@quantifiedVariables.1"/>
1115 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.38/@value/@quantifiedVariables.2"/>
1116 </operand>
1117 </rightOperand>
1118 </expression>
1119 </value>
1120 </assertions>
1121 <assertions name="upperMultiplicity nsPrefix EPackage" annotations="//@annotations.39">
1122 <value xsi:type="language_1:Forall">
1123 <quantifiedVariables name="src">
1124 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1125 </quantifiedVariables>
1126 <quantifiedVariables name="trg 1">
1127 <range xsi:type="language_1:StringTypeReference"/>
1128 </quantifiedVariables>
1129 <quantifiedVariables name="trg 2">
1130 <range xsi:type="language_1:StringTypeReference"/>
1131 </quantifiedVariables>
1132 <expression xsi:type="language_1:Impl">
1133 <leftOperand xsi:type="language_1:And">
1134 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.57">
1135 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.39/@value/@quantifiedVariables.0"/>
1136 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.39/@value/@quantifiedVariables.1"/>
1137 </operands>
1138 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.57">
1139 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.39/@value/@quantifiedVariables.0"/>
1140 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.39/@value/@quantifiedVariables.2"/>
1141 </operands>
1142 </leftOperand>
1143 <rightOperand xsi:type="language_1:Not">
1144 <operand xsi:type="language_1:Distinct">
1145 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.39/@value/@quantifiedVariables.1"/>
1146 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.39/@value/@quantifiedVariables.2"/>
1147 </operand>
1148 </rightOperand>
1149 </expression>
1150 </value>
1151 </assertions>
1152 <assertions name="upperMultiplicity containment EReference" annotations="//@annotations.40">
1153 <value xsi:type="language_1:Forall">
1154 <quantifiedVariables name="src">
1155 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1156 </quantifiedVariables>
1157 <quantifiedVariables name="trg 1">
1158 <range xsi:type="language_1:BoolTypeReference"/>
1159 </quantifiedVariables>
1160 <quantifiedVariables name="trg 2">
1161 <range xsi:type="language_1:BoolTypeReference"/>
1162 </quantifiedVariables>
1163 <expression xsi:type="language_1:Impl">
1164 <leftOperand xsi:type="language_1:And">
1165 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.58">
1166 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.40/@value/@quantifiedVariables.0"/>
1167 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.40/@value/@quantifiedVariables.1"/>
1168 </operands>
1169 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.58">
1170 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.40/@value/@quantifiedVariables.0"/>
1171 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.40/@value/@quantifiedVariables.2"/>
1172 </operands>
1173 </leftOperand>
1174 <rightOperand xsi:type="language_1:Not">
1175 <operand xsi:type="language_1:Distinct">
1176 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.40/@value/@quantifiedVariables.1"/>
1177 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.40/@value/@quantifiedVariables.2"/>
1178 </operand>
1179 </rightOperand>
1180 </expression>
1181 </value>
1182 </assertions>
1183 <assertions name="upperMultiplicity container EReference" annotations="//@annotations.41">
1184 <value xsi:type="language_1:Forall">
1185 <quantifiedVariables name="src">
1186 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1187 </quantifiedVariables>
1188 <quantifiedVariables name="trg 1">
1189 <range xsi:type="language_1:BoolTypeReference"/>
1190 </quantifiedVariables>
1191 <quantifiedVariables name="trg 2">
1192 <range xsi:type="language_1:BoolTypeReference"/>
1193 </quantifiedVariables>
1194 <expression xsi:type="language_1:Impl">
1195 <leftOperand xsi:type="language_1:And">
1196 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.59">
1197 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.41/@value/@quantifiedVariables.0"/>
1198 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.41/@value/@quantifiedVariables.1"/>
1199 </operands>
1200 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.59">
1201 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.41/@value/@quantifiedVariables.0"/>
1202 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.41/@value/@quantifiedVariables.2"/>
1203 </operands>
1204 </leftOperand>
1205 <rightOperand xsi:type="language_1:Not">
1206 <operand xsi:type="language_1:Distinct">
1207 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.41/@value/@quantifiedVariables.1"/>
1208 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.41/@value/@quantifiedVariables.2"/>
1209 </operand>
1210 </rightOperand>
1211 </expression>
1212 </value>
1213 </assertions>
1214 <assertions name="upperMultiplicity resolveProxies EReference" annotations="//@annotations.42">
1215 <value xsi:type="language_1:Forall">
1216 <quantifiedVariables name="src">
1217 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1218 </quantifiedVariables>
1219 <quantifiedVariables name="trg 1">
1220 <range xsi:type="language_1:BoolTypeReference"/>
1221 </quantifiedVariables>
1222 <quantifiedVariables name="trg 2">
1223 <range xsi:type="language_1:BoolTypeReference"/>
1224 </quantifiedVariables>
1225 <expression xsi:type="language_1:Impl">
1226 <leftOperand xsi:type="language_1:And">
1227 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.60">
1228 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.42/@value/@quantifiedVariables.0"/>
1229 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.42/@value/@quantifiedVariables.1"/>
1230 </operands>
1231 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.60">
1232 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.42/@value/@quantifiedVariables.0"/>
1233 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.42/@value/@quantifiedVariables.2"/>
1234 </operands>
1235 </leftOperand>
1236 <rightOperand xsi:type="language_1:Not">
1237 <operand xsi:type="language_1:Distinct">
1238 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.42/@value/@quantifiedVariables.1"/>
1239 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.42/@value/@quantifiedVariables.2"/>
1240 </operand>
1241 </rightOperand>
1242 </expression>
1243 </value>
1244 </assertions>
1245 <assertions name="upperMultiplicity changeable EStructuralFeature" annotations="//@annotations.43">
1246 <value xsi:type="language_1:Forall">
1247 <quantifiedVariables name="src">
1248 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1249 </quantifiedVariables>
1250 <quantifiedVariables name="trg 1">
1251 <range xsi:type="language_1:BoolTypeReference"/>
1252 </quantifiedVariables>
1253 <quantifiedVariables name="trg 2">
1254 <range xsi:type="language_1:BoolTypeReference"/>
1255 </quantifiedVariables>
1256 <expression xsi:type="language_1:Impl">
1257 <leftOperand xsi:type="language_1:And">
1258 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.61">
1259 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.43/@value/@quantifiedVariables.0"/>
1260 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.43/@value/@quantifiedVariables.1"/>
1261 </operands>
1262 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.61">
1263 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.43/@value/@quantifiedVariables.0"/>
1264 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.43/@value/@quantifiedVariables.2"/>
1265 </operands>
1266 </leftOperand>
1267 <rightOperand xsi:type="language_1:Not">
1268 <operand xsi:type="language_1:Distinct">
1269 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.43/@value/@quantifiedVariables.1"/>
1270 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.43/@value/@quantifiedVariables.2"/>
1271 </operand>
1272 </rightOperand>
1273 </expression>
1274 </value>
1275 </assertions>
1276 <assertions name="upperMultiplicity volatile EStructuralFeature" annotations="//@annotations.44">
1277 <value xsi:type="language_1:Forall">
1278 <quantifiedVariables name="src">
1279 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1280 </quantifiedVariables>
1281 <quantifiedVariables name="trg 1">
1282 <range xsi:type="language_1:BoolTypeReference"/>
1283 </quantifiedVariables>
1284 <quantifiedVariables name="trg 2">
1285 <range xsi:type="language_1:BoolTypeReference"/>
1286 </quantifiedVariables>
1287 <expression xsi:type="language_1:Impl">
1288 <leftOperand xsi:type="language_1:And">
1289 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.62">
1290 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.44/@value/@quantifiedVariables.0"/>
1291 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.44/@value/@quantifiedVariables.1"/>
1292 </operands>
1293 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.62">
1294 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.44/@value/@quantifiedVariables.0"/>
1295 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.44/@value/@quantifiedVariables.2"/>
1296 </operands>
1297 </leftOperand>
1298 <rightOperand xsi:type="language_1:Not">
1299 <operand xsi:type="language_1:Distinct">
1300 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.44/@value/@quantifiedVariables.1"/>
1301 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.44/@value/@quantifiedVariables.2"/>
1302 </operand>
1303 </rightOperand>
1304 </expression>
1305 </value>
1306 </assertions>
1307 <assertions name="upperMultiplicity transient EStructuralFeature" annotations="//@annotations.45">
1308 <value xsi:type="language_1:Forall">
1309 <quantifiedVariables name="src">
1310 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1311 </quantifiedVariables>
1312 <quantifiedVariables name="trg 1">
1313 <range xsi:type="language_1:BoolTypeReference"/>
1314 </quantifiedVariables>
1315 <quantifiedVariables name="trg 2">
1316 <range xsi:type="language_1:BoolTypeReference"/>
1317 </quantifiedVariables>
1318 <expression xsi:type="language_1:Impl">
1319 <leftOperand xsi:type="language_1:And">
1320 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.63">
1321 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.45/@value/@quantifiedVariables.0"/>
1322 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.45/@value/@quantifiedVariables.1"/>
1323 </operands>
1324 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.63">
1325 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.45/@value/@quantifiedVariables.0"/>
1326 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.45/@value/@quantifiedVariables.2"/>
1327 </operands>
1328 </leftOperand>
1329 <rightOperand xsi:type="language_1:Not">
1330 <operand xsi:type="language_1:Distinct">
1331 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.45/@value/@quantifiedVariables.1"/>
1332 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.45/@value/@quantifiedVariables.2"/>
1333 </operand>
1334 </rightOperand>
1335 </expression>
1336 </value>
1337 </assertions>
1338 <assertions name="upperMultiplicity defaultValueLiteral EStructuralFeature" annotations="//@annotations.46">
1339 <value xsi:type="language_1:Forall">
1340 <quantifiedVariables name="src">
1341 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1342 </quantifiedVariables>
1343 <quantifiedVariables name="trg 1">
1344 <range xsi:type="language_1:StringTypeReference"/>
1345 </quantifiedVariables>
1346 <quantifiedVariables name="trg 2">
1347 <range xsi:type="language_1:StringTypeReference"/>
1348 </quantifiedVariables>
1349 <expression xsi:type="language_1:Impl">
1350 <leftOperand xsi:type="language_1:And">
1351 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.64">
1352 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.46/@value/@quantifiedVariables.0"/>
1353 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.46/@value/@quantifiedVariables.1"/>
1354 </operands>
1355 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.64">
1356 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.46/@value/@quantifiedVariables.0"/>
1357 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.46/@value/@quantifiedVariables.2"/>
1358 </operands>
1359 </leftOperand>
1360 <rightOperand xsi:type="language_1:Not">
1361 <operand xsi:type="language_1:Distinct">
1362 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.46/@value/@quantifiedVariables.1"/>
1363 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.46/@value/@quantifiedVariables.2"/>
1364 </operand>
1365 </rightOperand>
1366 </expression>
1367 </value>
1368 </assertions>
1369 <assertions name="upperMultiplicity unsettable EStructuralFeature" annotations="//@annotations.47">
1370 <value xsi:type="language_1:Forall">
1371 <quantifiedVariables name="src">
1372 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1373 </quantifiedVariables>
1374 <quantifiedVariables name="trg 1">
1375 <range xsi:type="language_1:BoolTypeReference"/>
1376 </quantifiedVariables>
1377 <quantifiedVariables name="trg 2">
1378 <range xsi:type="language_1:BoolTypeReference"/>
1379 </quantifiedVariables>
1380 <expression xsi:type="language_1:Impl">
1381 <leftOperand xsi:type="language_1:And">
1382 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.65">
1383 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.47/@value/@quantifiedVariables.0"/>
1384 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.47/@value/@quantifiedVariables.1"/>
1385 </operands>
1386 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.65">
1387 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.47/@value/@quantifiedVariables.0"/>
1388 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.47/@value/@quantifiedVariables.2"/>
1389 </operands>
1390 </leftOperand>
1391 <rightOperand xsi:type="language_1:Not">
1392 <operand xsi:type="language_1:Distinct">
1393 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.47/@value/@quantifiedVariables.1"/>
1394 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.47/@value/@quantifiedVariables.2"/>
1395 </operand>
1396 </rightOperand>
1397 </expression>
1398 </value>
1399 </assertions>
1400 <assertions name="upperMultiplicity derived EStructuralFeature" annotations="//@annotations.48">
1401 <value xsi:type="language_1:Forall">
1402 <quantifiedVariables name="src">
1403 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1404 </quantifiedVariables>
1405 <quantifiedVariables name="trg 1">
1406 <range xsi:type="language_1:BoolTypeReference"/>
1407 </quantifiedVariables>
1408 <quantifiedVariables name="trg 2">
1409 <range xsi:type="language_1:BoolTypeReference"/>
1410 </quantifiedVariables>
1411 <expression xsi:type="language_1:Impl">
1412 <leftOperand xsi:type="language_1:And">
1413 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.66">
1414 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.48/@value/@quantifiedVariables.0"/>
1415 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.48/@value/@quantifiedVariables.1"/>
1416 </operands>
1417 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.66">
1418 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.48/@value/@quantifiedVariables.0"/>
1419 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.48/@value/@quantifiedVariables.2"/>
1420 </operands>
1421 </leftOperand>
1422 <rightOperand xsi:type="language_1:Not">
1423 <operand xsi:type="language_1:Distinct">
1424 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.48/@value/@quantifiedVariables.1"/>
1425 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.48/@value/@quantifiedVariables.2"/>
1426 </operand>
1427 </rightOperand>
1428 </expression>
1429 </value>
1430 </assertions>
1431 <assertions name="upperMultiplicity ordered ETypedElement" annotations="//@annotations.49">
1432 <value xsi:type="language_1:Forall">
1433 <quantifiedVariables name="src">
1434 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1435 </quantifiedVariables>
1436 <quantifiedVariables name="trg 1">
1437 <range xsi:type="language_1:BoolTypeReference"/>
1438 </quantifiedVariables>
1439 <quantifiedVariables name="trg 2">
1440 <range xsi:type="language_1:BoolTypeReference"/>
1441 </quantifiedVariables>
1442 <expression xsi:type="language_1:Impl">
1443 <leftOperand xsi:type="language_1:And">
1444 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.67">
1445 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.49/@value/@quantifiedVariables.0"/>
1446 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.49/@value/@quantifiedVariables.1"/>
1447 </operands>
1448 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.67">
1449 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.49/@value/@quantifiedVariables.0"/>
1450 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.49/@value/@quantifiedVariables.2"/>
1451 </operands>
1452 </leftOperand>
1453 <rightOperand xsi:type="language_1:Not">
1454 <operand xsi:type="language_1:Distinct">
1455 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.49/@value/@quantifiedVariables.1"/>
1456 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.49/@value/@quantifiedVariables.2"/>
1457 </operand>
1458 </rightOperand>
1459 </expression>
1460 </value>
1461 </assertions>
1462 <assertions name="upperMultiplicity unique ETypedElement" annotations="//@annotations.50">
1463 <value xsi:type="language_1:Forall">
1464 <quantifiedVariables name="src">
1465 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1466 </quantifiedVariables>
1467 <quantifiedVariables name="trg 1">
1468 <range xsi:type="language_1:BoolTypeReference"/>
1469 </quantifiedVariables>
1470 <quantifiedVariables name="trg 2">
1471 <range xsi:type="language_1:BoolTypeReference"/>
1472 </quantifiedVariables>
1473 <expression xsi:type="language_1:Impl">
1474 <leftOperand xsi:type="language_1:And">
1475 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.68">
1476 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.50/@value/@quantifiedVariables.0"/>
1477 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.50/@value/@quantifiedVariables.1"/>
1478 </operands>
1479 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.68">
1480 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.50/@value/@quantifiedVariables.0"/>
1481 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.50/@value/@quantifiedVariables.2"/>
1482 </operands>
1483 </leftOperand>
1484 <rightOperand xsi:type="language_1:Not">
1485 <operand xsi:type="language_1:Distinct">
1486 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.50/@value/@quantifiedVariables.1"/>
1487 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.50/@value/@quantifiedVariables.2"/>
1488 </operand>
1489 </rightOperand>
1490 </expression>
1491 </value>
1492 </assertions>
1493 <assertions name="upperMultiplicity lowerBound ETypedElement" annotations="//@annotations.51">
1494 <value xsi:type="language_1:Forall">
1495 <quantifiedVariables name="src">
1496 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1497 </quantifiedVariables>
1498 <quantifiedVariables name="trg 1">
1499 <range xsi:type="language_1:IntTypeReference"/>
1500 </quantifiedVariables>
1501 <quantifiedVariables name="trg 2">
1502 <range xsi:type="language_1:IntTypeReference"/>
1503 </quantifiedVariables>
1504 <expression xsi:type="language_1:Impl">
1505 <leftOperand xsi:type="language_1:And">
1506 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.69">
1507 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.51/@value/@quantifiedVariables.0"/>
1508 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.51/@value/@quantifiedVariables.1"/>
1509 </operands>
1510 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.69">
1511 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.51/@value/@quantifiedVariables.0"/>
1512 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.51/@value/@quantifiedVariables.2"/>
1513 </operands>
1514 </leftOperand>
1515 <rightOperand xsi:type="language_1:Not">
1516 <operand xsi:type="language_1:Distinct">
1517 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.51/@value/@quantifiedVariables.1"/>
1518 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.51/@value/@quantifiedVariables.2"/>
1519 </operand>
1520 </rightOperand>
1521 </expression>
1522 </value>
1523 </assertions>
1524 <assertions name="upperMultiplicity upperBound ETypedElement" annotations="//@annotations.52">
1525 <value xsi:type="language_1:Forall">
1526 <quantifiedVariables name="src">
1527 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1528 </quantifiedVariables>
1529 <quantifiedVariables name="trg 1">
1530 <range xsi:type="language_1:IntTypeReference"/>
1531 </quantifiedVariables>
1532 <quantifiedVariables name="trg 2">
1533 <range xsi:type="language_1:IntTypeReference"/>
1534 </quantifiedVariables>
1535 <expression xsi:type="language_1:Impl">
1536 <leftOperand xsi:type="language_1:And">
1537 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.70">
1538 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.52/@value/@quantifiedVariables.0"/>
1539 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.52/@value/@quantifiedVariables.1"/>
1540 </operands>
1541 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.70">
1542 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.52/@value/@quantifiedVariables.0"/>
1543 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.52/@value/@quantifiedVariables.2"/>
1544 </operands>
1545 </leftOperand>
1546 <rightOperand xsi:type="language_1:Not">
1547 <operand xsi:type="language_1:Distinct">
1548 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.52/@value/@quantifiedVariables.1"/>
1549 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.52/@value/@quantifiedVariables.2"/>
1550 </operand>
1551 </rightOperand>
1552 </expression>
1553 </value>
1554 </assertions>
1555 <assertions name="upperMultiplicity many ETypedElement" annotations="//@annotations.53">
1556 <value xsi:type="language_1:Forall">
1557 <quantifiedVariables name="src">
1558 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1559 </quantifiedVariables>
1560 <quantifiedVariables name="trg 1">
1561 <range xsi:type="language_1:BoolTypeReference"/>
1562 </quantifiedVariables>
1563 <quantifiedVariables name="trg 2">
1564 <range xsi:type="language_1:BoolTypeReference"/>
1565 </quantifiedVariables>
1566 <expression xsi:type="language_1:Impl">
1567 <leftOperand xsi:type="language_1:And">
1568 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.71">
1569 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.53/@value/@quantifiedVariables.0"/>
1570 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.53/@value/@quantifiedVariables.1"/>
1571 </operands>
1572 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.71">
1573 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.53/@value/@quantifiedVariables.0"/>
1574 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.53/@value/@quantifiedVariables.2"/>
1575 </operands>
1576 </leftOperand>
1577 <rightOperand xsi:type="language_1:Not">
1578 <operand xsi:type="language_1:Distinct">
1579 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.53/@value/@quantifiedVariables.1"/>
1580 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.53/@value/@quantifiedVariables.2"/>
1581 </operand>
1582 </rightOperand>
1583 </expression>
1584 </value>
1585 </assertions>
1586 <assertions name="upperMultiplicity required ETypedElement" annotations="//@annotations.54">
1587 <value xsi:type="language_1:Forall">
1588 <quantifiedVariables name="src">
1589 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1590 </quantifiedVariables>
1591 <quantifiedVariables name="trg 1">
1592 <range xsi:type="language_1:BoolTypeReference"/>
1593 </quantifiedVariables>
1594 <quantifiedVariables name="trg 2">
1595 <range xsi:type="language_1:BoolTypeReference"/>
1596 </quantifiedVariables>
1597 <expression xsi:type="language_1:Impl">
1598 <leftOperand xsi:type="language_1:And">
1599 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.72">
1600 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.54/@value/@quantifiedVariables.0"/>
1601 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.54/@value/@quantifiedVariables.1"/>
1602 </operands>
1603 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.72">
1604 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.54/@value/@quantifiedVariables.0"/>
1605 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.54/@value/@quantifiedVariables.2"/>
1606 </operands>
1607 </leftOperand>
1608 <rightOperand xsi:type="language_1:Not">
1609 <operand xsi:type="language_1:Distinct">
1610 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.54/@value/@quantifiedVariables.1"/>
1611 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.54/@value/@quantifiedVariables.2"/>
1612 </operand>
1613 </rightOperand>
1614 </expression>
1615 </value>
1616 </assertions>
1617 <assertions name="upperMultiplicity key EStringToStringMapEntry" annotations="//@annotations.55">
1618 <value xsi:type="language_1:Forall">
1619 <quantifiedVariables name="src">
1620 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.16"/>
1621 </quantifiedVariables>
1622 <quantifiedVariables name="trg 1">
1623 <range xsi:type="language_1:StringTypeReference"/>
1624 </quantifiedVariables>
1625 <quantifiedVariables name="trg 2">
1626 <range xsi:type="language_1:StringTypeReference"/>
1627 </quantifiedVariables>
1628 <expression xsi:type="language_1:Impl">
1629 <leftOperand xsi:type="language_1:And">
1630 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.73">
1631 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.55/@value/@quantifiedVariables.0"/>
1632 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.55/@value/@quantifiedVariables.1"/>
1633 </operands>
1634 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.73">
1635 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.55/@value/@quantifiedVariables.0"/>
1636 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.55/@value/@quantifiedVariables.2"/>
1637 </operands>
1638 </leftOperand>
1639 <rightOperand xsi:type="language_1:Not">
1640 <operand xsi:type="language_1:Distinct">
1641 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.55/@value/@quantifiedVariables.1"/>
1642 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.55/@value/@quantifiedVariables.2"/>
1643 </operand>
1644 </rightOperand>
1645 </expression>
1646 </value>
1647 </assertions>
1648 <assertions name="upperMultiplicity value EStringToStringMapEntry" annotations="//@annotations.56">
1649 <value xsi:type="language_1:Forall">
1650 <quantifiedVariables name="src">
1651 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.16"/>
1652 </quantifiedVariables>
1653 <quantifiedVariables name="trg 1">
1654 <range xsi:type="language_1:StringTypeReference"/>
1655 </quantifiedVariables>
1656 <quantifiedVariables name="trg 2">
1657 <range xsi:type="language_1:StringTypeReference"/>
1658 </quantifiedVariables>
1659 <expression xsi:type="language_1:Impl">
1660 <leftOperand xsi:type="language_1:And">
1661 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.74">
1662 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.56/@value/@quantifiedVariables.0"/>
1663 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.56/@value/@quantifiedVariables.1"/>
1664 </operands>
1665 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.74">
1666 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.56/@value/@quantifiedVariables.0"/>
1667 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.56/@value/@quantifiedVariables.2"/>
1668 </operands>
1669 </leftOperand>
1670 <rightOperand xsi:type="language_1:Not">
1671 <operand xsi:type="language_1:Distinct">
1672 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.56/@value/@quantifiedVariables.1"/>
1673 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.56/@value/@quantifiedVariables.2"/>
1674 </operand>
1675 </rightOperand>
1676 </expression>
1677 </value>
1678 </assertions>
1679 <assertions name="PartialInterpretation name attribute ENamedElement" annotations="//@annotations.57">
1680 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.55">
1681 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.0"/>
1682 <parameterSubstitutions xsi:type="language_1:StringLiteral" value="packageName"/>
1683 </value>
1684 </assertions>
1685 <assertions name="PartialInterpretation nsURI attribute EPackage" annotations="//@annotations.58">
1686 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.56">
1687 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.0"/>
1688 <parameterSubstitutions xsi:type="language_1:StringLiteral" value="nsUri"/>
1689 </value>
1690 </assertions>
1691 <assertions name="PartialInterpretation nsPrefix attribute EPackage" annotations="//@annotations.59">
1692 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.57">
1693 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@elements.0"/>
1694 <parameterSubstitutions xsi:type="language_1:StringLiteral" value="nsPrefix"/>
1695 </value>
1696 </assertions>
1697 <relations xsi:type="language_1:RelationDeclaration" name="eAttributeType reference EAttribute">
1698 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1699 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1700 </relations>
1701 <relations xsi:type="language_1:RelationDeclaration" name="details reference EAnnotation">
1702 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1703 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.16"/>
1704 </relations>
1705 <relations xsi:type="language_1:RelationDeclaration" name="eModelElement reference EAnnotation">
1706 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1707 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
1708 </relations>
1709 <relations xsi:type="language_1:RelationDeclaration" name="contents reference EAnnotation">
1710 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1711 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1712 </relations>
1713 <relations xsi:type="language_1:RelationDeclaration" name="references reference EAnnotation">
1714 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1715 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
1716 </relations>
1717 <relations xsi:type="language_1:RelationDeclaration" name="eSuperTypes reference EClass">
1718 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1719 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1720 </relations>
1721 <relations xsi:type="language_1:RelationDeclaration" name="eOperations reference EClass">
1722 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1723 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
1724 </relations>
1725 <relations xsi:type="language_1:RelationDeclaration" name="eAllAttributes reference EClass">
1726 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1727 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1728 </relations>
1729 <relations xsi:type="language_1:RelationDeclaration" name="eAllReferences reference EClass">
1730 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1731 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1732 </relations>
1733 <relations xsi:type="language_1:RelationDeclaration" name="eReferences reference EClass">
1734 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1735 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1736 </relations>
1737 <relations xsi:type="language_1:RelationDeclaration" name="eAttributes reference EClass">
1738 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1739 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1740 </relations>
1741 <relations xsi:type="language_1:RelationDeclaration" name="eAllContainments reference EClass">
1742 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1743 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1744 </relations>
1745 <relations xsi:type="language_1:RelationDeclaration" name="eAllOperations reference EClass">
1746 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1747 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
1748 </relations>
1749 <relations xsi:type="language_1:RelationDeclaration" name="eAllStructuralFeatures reference EClass">
1750 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1751 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1752 </relations>
1753 <relations xsi:type="language_1:RelationDeclaration" name="eAllSuperTypes reference EClass">
1754 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1755 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1756 </relations>
1757 <relations xsi:type="language_1:RelationDeclaration" name="eIDAttribute reference EClass">
1758 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1759 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1760 </relations>
1761 <relations xsi:type="language_1:RelationDeclaration" name="eStructuralFeatures reference EClass">
1762 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1763 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1764 </relations>
1765 <relations xsi:type="language_1:RelationDeclaration" name="eGenericSuperTypes reference EClass">
1766 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1767 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1768 </relations>
1769 <relations xsi:type="language_1:RelationDeclaration" name="eAllGenericSuperTypes reference EClass">
1770 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1771 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1772 </relations>
1773 <relations xsi:type="language_1:RelationDeclaration" name="ePackage reference EClassifier">
1774 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1775 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1776 </relations>
1777 <relations xsi:type="language_1:RelationDeclaration" name="eTypeParameters reference EClassifier">
1778 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1779 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.18"/>
1780 </relations>
1781 <relations xsi:type="language_1:RelationDeclaration" name="eLiterals reference EEnum">
1782 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1783 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1784 </relations>
1785 <relations xsi:type="language_1:RelationDeclaration" name="eEnum reference EEnumLiteral">
1786 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1787 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.5"/>
1788 </relations>
1789 <relations xsi:type="language_1:RelationDeclaration" name="eAnnotations reference EModelElement">
1790 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.7"/>
1791 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1792 </relations>
1793 <relations xsi:type="language_1:RelationDeclaration" name="eContainingClass reference EOperation">
1794 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
1795 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1796 </relations>
1797 <relations xsi:type="language_1:RelationDeclaration" name="eTypeParameters reference EOperation">
1798 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
1799 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.18"/>
1800 </relations>
1801 <relations xsi:type="language_1:RelationDeclaration" name="eParameters reference EOperation">
1802 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
1803 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1804 </relations>
1805 <relations xsi:type="language_1:RelationDeclaration" name="eExceptions reference EOperation">
1806 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
1807 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1808 </relations>
1809 <relations xsi:type="language_1:RelationDeclaration" name="eGenericExceptions reference EOperation">
1810 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
1811 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1812 </relations>
1813 <relations xsi:type="language_1:RelationDeclaration" name="eClassifiers reference EPackage">
1814 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1815 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1816 </relations>
1817 <relations xsi:type="language_1:RelationDeclaration" name="eSubpackages reference EPackage">
1818 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1819 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1820 </relations>
1821 <relations xsi:type="language_1:RelationDeclaration" name="eSuperPackage reference EPackage">
1822 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1823 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1824 </relations>
1825 <relations xsi:type="language_1:RelationDeclaration" name="eOperation reference EParameter">
1826 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.12"/>
1827 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.10"/>
1828 </relations>
1829 <relations xsi:type="language_1:RelationDeclaration" name="eOpposite reference EReference">
1830 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1831 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1832 </relations>
1833 <relations xsi:type="language_1:RelationDeclaration" name="eReferenceType reference EReference">
1834 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1835 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1836 </relations>
1837 <relations xsi:type="language_1:RelationDeclaration" name="eKeys reference EReference">
1838 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1839 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1840 </relations>
1841 <relations xsi:type="language_1:RelationDeclaration" name="eContainingClass reference EStructuralFeature">
1842 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1843 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1844 </relations>
1845 <relations xsi:type="language_1:RelationDeclaration" name="eType reference ETypedElement">
1846 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1847 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1848 </relations>
1849 <relations xsi:type="language_1:RelationDeclaration" name="eGenericType reference ETypedElement">
1850 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1851 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1852 </relations>
1853 <relations xsi:type="language_1:RelationDeclaration" name="eUpperBound reference EGenericType">
1854 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1855 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1856 </relations>
1857 <relations xsi:type="language_1:RelationDeclaration" name="eTypeArguments reference EGenericType">
1858 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1859 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1860 </relations>
1861 <relations xsi:type="language_1:RelationDeclaration" name="eRawType reference EGenericType">
1862 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1863 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1864 </relations>
1865 <relations xsi:type="language_1:RelationDeclaration" name="eLowerBound reference EGenericType">
1866 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1867 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1868 </relations>
1869 <relations xsi:type="language_1:RelationDeclaration" name="eTypeParameter reference EGenericType">
1870 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1871 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.18"/>
1872 </relations>
1873 <relations xsi:type="language_1:RelationDeclaration" name="eClassifier reference EGenericType">
1874 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1875 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1876 </relations>
1877 <relations xsi:type="language_1:RelationDeclaration" name="eBounds reference ETypeParameter">
1878 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.18"/>
1879 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.17"/>
1880 </relations>
1881 <relations xsi:type="language_1:RelationDeclaration" name="iD attribute EAttribute">
1882 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
1883 <parameters xsi:type="language_1:BoolTypeReference"/>
1884 </relations>
1885 <relations xsi:type="language_1:RelationDeclaration" name="source attribute EAnnotation">
1886 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
1887 <parameters xsi:type="language_1:StringTypeReference"/>
1888 </relations>
1889 <relations xsi:type="language_1:RelationDeclaration" name="abstract attribute EClass">
1890 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1891 <parameters xsi:type="language_1:BoolTypeReference"/>
1892 </relations>
1893 <relations xsi:type="language_1:RelationDeclaration" name="interface attribute EClass">
1894 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
1895 <parameters xsi:type="language_1:BoolTypeReference"/>
1896 </relations>
1897 <relations xsi:type="language_1:RelationDeclaration" name="instanceClassName attribute EClassifier">
1898 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1899 <parameters xsi:type="language_1:StringTypeReference"/>
1900 </relations>
1901 <relations xsi:type="language_1:RelationDeclaration" name="instanceTypeName attribute EClassifier">
1902 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
1903 <parameters xsi:type="language_1:StringTypeReference"/>
1904 </relations>
1905 <relations xsi:type="language_1:RelationDeclaration" name="serializable attribute EDataType">
1906 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.4"/>
1907 <parameters xsi:type="language_1:BoolTypeReference"/>
1908 </relations>
1909 <relations xsi:type="language_1:RelationDeclaration" name="value attribute EEnumLiteral">
1910 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1911 <parameters xsi:type="language_1:IntTypeReference"/>
1912 </relations>
1913 <relations xsi:type="language_1:RelationDeclaration" name="literal attribute EEnumLiteral">
1914 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.6"/>
1915 <parameters xsi:type="language_1:StringTypeReference"/>
1916 </relations>
1917 <relations xsi:type="language_1:RelationDeclaration" name="name attribute ENamedElement">
1918 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.8"/>
1919 <parameters xsi:type="language_1:StringTypeReference"/>
1920 </relations>
1921 <relations xsi:type="language_1:RelationDeclaration" name="nsURI attribute EPackage">
1922 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1923 <parameters xsi:type="language_1:StringTypeReference"/>
1924 </relations>
1925 <relations xsi:type="language_1:RelationDeclaration" name="nsPrefix attribute EPackage">
1926 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.11"/>
1927 <parameters xsi:type="language_1:StringTypeReference"/>
1928 </relations>
1929 <relations xsi:type="language_1:RelationDeclaration" name="containment attribute EReference">
1930 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1931 <parameters xsi:type="language_1:BoolTypeReference"/>
1932 </relations>
1933 <relations xsi:type="language_1:RelationDeclaration" name="container attribute EReference">
1934 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1935 <parameters xsi:type="language_1:BoolTypeReference"/>
1936 </relations>
1937 <relations xsi:type="language_1:RelationDeclaration" name="resolveProxies attribute EReference">
1938 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.13"/>
1939 <parameters xsi:type="language_1:BoolTypeReference"/>
1940 </relations>
1941 <relations xsi:type="language_1:RelationDeclaration" name="changeable attribute EStructuralFeature">
1942 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1943 <parameters xsi:type="language_1:BoolTypeReference"/>
1944 </relations>
1945 <relations xsi:type="language_1:RelationDeclaration" name="volatile attribute EStructuralFeature">
1946 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1947 <parameters xsi:type="language_1:BoolTypeReference"/>
1948 </relations>
1949 <relations xsi:type="language_1:RelationDeclaration" name="transient attribute EStructuralFeature">
1950 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1951 <parameters xsi:type="language_1:BoolTypeReference"/>
1952 </relations>
1953 <relations xsi:type="language_1:RelationDeclaration" name="defaultValueLiteral attribute EStructuralFeature">
1954 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1955 <parameters xsi:type="language_1:StringTypeReference"/>
1956 </relations>
1957 <relations xsi:type="language_1:RelationDeclaration" name="unsettable attribute EStructuralFeature">
1958 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1959 <parameters xsi:type="language_1:BoolTypeReference"/>
1960 </relations>
1961 <relations xsi:type="language_1:RelationDeclaration" name="derived attribute EStructuralFeature">
1962 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.14"/>
1963 <parameters xsi:type="language_1:BoolTypeReference"/>
1964 </relations>
1965 <relations xsi:type="language_1:RelationDeclaration" name="ordered attribute ETypedElement">
1966 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1967 <parameters xsi:type="language_1:BoolTypeReference"/>
1968 </relations>
1969 <relations xsi:type="language_1:RelationDeclaration" name="unique attribute ETypedElement">
1970 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1971 <parameters xsi:type="language_1:BoolTypeReference"/>
1972 </relations>
1973 <relations xsi:type="language_1:RelationDeclaration" name="lowerBound attribute ETypedElement">
1974 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1975 <parameters xsi:type="language_1:IntTypeReference"/>
1976 </relations>
1977 <relations xsi:type="language_1:RelationDeclaration" name="upperBound attribute ETypedElement">
1978 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1979 <parameters xsi:type="language_1:IntTypeReference"/>
1980 </relations>
1981 <relations xsi:type="language_1:RelationDeclaration" name="many attribute ETypedElement">
1982 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1983 <parameters xsi:type="language_1:BoolTypeReference"/>
1984 </relations>
1985 <relations xsi:type="language_1:RelationDeclaration" name="required attribute ETypedElement">
1986 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.15"/>
1987 <parameters xsi:type="language_1:BoolTypeReference"/>
1988 </relations>
1989 <relations xsi:type="language_1:RelationDeclaration" name="key attribute EStringToStringMapEntry">
1990 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.16"/>
1991 <parameters xsi:type="language_1:StringTypeReference"/>
1992 </relations>
1993 <relations xsi:type="language_1:RelationDeclaration" name="value attribute EStringToStringMapEntry">
1994 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.16"/>
1995 <parameters xsi:type="language_1:StringTypeReference"/>
1996 </relations>
1997 <elements name="o 1" definedInType="//@types.19 //@types.21 //@types.23"/>
1998 <containmentHierarchies typesOrderedInHierarchy="//@types.6 //@types.5 //@types.1 //@types.4 //@types.17 //@types.8 //@types.7 //@types.15 //@types.0 //@types.9 //@types.2 //@types.16 //@types.11 //@types.13 //@types.3 //@types.10 //@types.18 //@types.12 //@types.14 //@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"/>
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"/>
2002 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.3" relation="//@relations.15" upper="1"/>
2003 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.4" relation="//@relations.19" upper="1"/>
2004 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.5" relation="//@relations.22" upper="1"/>
2005 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.6" relation="//@relations.24" upper="1"/>
2006 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.7" relation="//@relations.31" upper="1"/>
2007 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.8" relation="//@relations.32" upper="1"/>
2008 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.9" relation="//@relations.33" upper="1"/>
2009 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.10" relation="//@relations.34" lower="1"/>
2010 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.11" relation="//@relations.34" upper="1"/>
2011 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.12" relation="//@relations.36" upper="1"/>
2012 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.13" relation="//@relations.37" upper="1"/>
2013 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.14" relation="//@relations.38" upper="1"/>
2014 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.15" relation="//@relations.39" upper="1"/>
2015 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.16" relation="//@relations.41" lower="1"/>
2016 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.17" relation="//@relations.41" upper="1"/>
2017 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.18" relation="//@relations.42" upper="1"/>
2018 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.19" relation="//@relations.43" upper="1"/>
2019 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.20" relation="//@relations.44" upper="1"/>
2020 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.21" inverseA="//@relations.2" inverseB="//@relations.23"/>
2021 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.22" inverseA="//@relations.6" inverseB="//@relations.24"/>
2022 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.23" inverseA="//@relations.16" inverseB="//@relations.36"/>
2023 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.24" inverseA="//@relations.19" inverseB="//@relations.29"/>
2024 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.25" inverseA="//@relations.21" inverseB="//@relations.22"/>
2025 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.26" inverseA="//@relations.26" inverseB="//@relations.32"/>
2026 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.27" inverseA="//@relations.30" inverseB="//@relations.31"/>
2027 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.28" relation="//@relations.46" upper="1"/>
2028 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.29" relation="//@relations.47" upper="1"/>
2029 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.30" relation="//@relations.48" upper="1"/>
2030 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.31" relation="//@relations.49" upper="1"/>
2031 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.32" relation="//@relations.50" upper="1"/>
2032 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.33" relation="//@relations.51" upper="1"/>
2033 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.34" relation="//@relations.52" upper="1"/>
2034 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.35" relation="//@relations.53" upper="1"/>
2035 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.36" relation="//@relations.54" upper="1"/>
2036 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.37" relation="//@relations.55" upper="1"/>
2037 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.38" relation="//@relations.56" upper="1"/>
2038 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.39" relation="//@relations.57" upper="1"/>
2039 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.40" relation="//@relations.58" upper="1"/>
2040 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.41" relation="//@relations.59" upper="1"/>
2041 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.42" relation="//@relations.60" upper="1"/>
2042 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.43" relation="//@relations.61" upper="1"/>
2043 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.44" relation="//@relations.62" upper="1"/>
2044 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.45" relation="//@relations.63" upper="1"/>
2045 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.46" relation="//@relations.64" upper="1"/>
2046 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.47" relation="//@relations.65" upper="1"/>
2047 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.48" relation="//@relations.66" upper="1"/>
2048 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.49" relation="//@relations.67" upper="1"/>
2049 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.50" relation="//@relations.68" upper="1"/>
2050 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.51" relation="//@relations.69" upper="1"/>
2051 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.52" relation="//@relations.70" upper="1"/>
2052 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.53" relation="//@relations.71" upper="1"/>
2053 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.54" relation="//@relations.72" upper="1"/>
2054 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.55" relation="//@relations.73" upper="1"/>
2055 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.56" relation="//@relations.74" upper="1"/>
2056 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.57" targetRelation="//@relations.55"/>
2057 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.58" targetRelation="//@relations.56"/>
2058 <annotations xsi:type="partial2logicannotations:PartialModelRelation2Assertion" target="//@assertions.59" targetRelation="//@relations.57"/>
2059</language:LogicProblem>
diff --git a/Tests/Ecore-Plugin/outputs/debug/init.partialmodel b/Tests/Ecore-Plugin/outputs/debug/init.partialmodel
new file mode 100644
index 00000000..985e7346
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/debug/init.partialmodel
@@ -0,0 +1,497 @@
1<?xml version="1.0" encoding="ASCII"?>
2<partialinterpretation:PartialInterpretation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:partialinterpretation="http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" minNewElements="5" maxNewElements="5">
3 <problem href="generation.logicproblem#/"/>
4 <partialrelationinterpretation>
5 <interpretationOf href="generation.logicproblem#//@relations.0"/>
6 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.0/@parameters.0"/>
7 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.0/@parameters.1"/>
8 </partialrelationinterpretation>
9 <partialrelationinterpretation>
10 <interpretationOf href="generation.logicproblem#//@relations.1"/>
11 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.1/@parameters.0"/>
12 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.1/@parameters.1"/>
13 </partialrelationinterpretation>
14 <partialrelationinterpretation>
15 <interpretationOf href="generation.logicproblem#//@relations.2"/>
16 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.2/@parameters.0"/>
17 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.2/@parameters.1"/>
18 </partialrelationinterpretation>
19 <partialrelationinterpretation>
20 <interpretationOf href="generation.logicproblem#//@relations.3"/>
21 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.3/@parameters.0"/>
22 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.3/@parameters.1"/>
23 </partialrelationinterpretation>
24 <partialrelationinterpretation>
25 <interpretationOf href="generation.logicproblem#//@relations.4"/>
26 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.4/@parameters.0"/>
27 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.4/@parameters.1"/>
28 </partialrelationinterpretation>
29 <partialrelationinterpretation>
30 <interpretationOf href="generation.logicproblem#//@relations.5"/>
31 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.5/@parameters.0"/>
32 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.5/@parameters.1"/>
33 </partialrelationinterpretation>
34 <partialrelationinterpretation>
35 <interpretationOf href="generation.logicproblem#//@relations.6"/>
36 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.6/@parameters.0"/>
37 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.6/@parameters.1"/>
38 </partialrelationinterpretation>
39 <partialrelationinterpretation>
40 <interpretationOf href="generation.logicproblem#//@relations.7"/>
41 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.7/@parameters.0"/>
42 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.7/@parameters.1"/>
43 </partialrelationinterpretation>
44 <partialrelationinterpretation>
45 <interpretationOf href="generation.logicproblem#//@relations.8"/>
46 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.8/@parameters.0"/>
47 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.8/@parameters.1"/>
48 </partialrelationinterpretation>
49 <partialrelationinterpretation>
50 <interpretationOf href="generation.logicproblem#//@relations.9"/>
51 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.9/@parameters.0"/>
52 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.9/@parameters.1"/>
53 </partialrelationinterpretation>
54 <partialrelationinterpretation>
55 <interpretationOf href="generation.logicproblem#//@relations.10"/>
56 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.10/@parameters.0"/>
57 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.10/@parameters.1"/>
58 </partialrelationinterpretation>
59 <partialrelationinterpretation>
60 <interpretationOf href="generation.logicproblem#//@relations.11"/>
61 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.11/@parameters.0"/>
62 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.11/@parameters.1"/>
63 </partialrelationinterpretation>
64 <partialrelationinterpretation>
65 <interpretationOf href="generation.logicproblem#//@relations.12"/>
66 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.12/@parameters.0"/>
67 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.12/@parameters.1"/>
68 </partialrelationinterpretation>
69 <partialrelationinterpretation>
70 <interpretationOf href="generation.logicproblem#//@relations.13"/>
71 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.13/@parameters.0"/>
72 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.13/@parameters.1"/>
73 </partialrelationinterpretation>
74 <partialrelationinterpretation>
75 <interpretationOf href="generation.logicproblem#//@relations.14"/>
76 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.14/@parameters.0"/>
77 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.14/@parameters.1"/>
78 </partialrelationinterpretation>
79 <partialrelationinterpretation>
80 <interpretationOf href="generation.logicproblem#//@relations.15"/>
81 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.15/@parameters.0"/>
82 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.15/@parameters.1"/>
83 </partialrelationinterpretation>
84 <partialrelationinterpretation>
85 <interpretationOf href="generation.logicproblem#//@relations.16"/>
86 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.16/@parameters.0"/>
87 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.16/@parameters.1"/>
88 </partialrelationinterpretation>
89 <partialrelationinterpretation>
90 <interpretationOf href="generation.logicproblem#//@relations.17"/>
91 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.17/@parameters.0"/>
92 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.17/@parameters.1"/>
93 </partialrelationinterpretation>
94 <partialrelationinterpretation>
95 <interpretationOf href="generation.logicproblem#//@relations.18"/>
96 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.18/@parameters.0"/>
97 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.18/@parameters.1"/>
98 </partialrelationinterpretation>
99 <partialrelationinterpretation>
100 <interpretationOf href="generation.logicproblem#//@relations.19"/>
101 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.19/@parameters.0"/>
102 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.19/@parameters.1"/>
103 </partialrelationinterpretation>
104 <partialrelationinterpretation>
105 <interpretationOf href="generation.logicproblem#//@relations.20"/>
106 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.20/@parameters.0"/>
107 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.20/@parameters.1"/>
108 </partialrelationinterpretation>
109 <partialrelationinterpretation>
110 <interpretationOf href="generation.logicproblem#//@relations.21"/>
111 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.21/@parameters.0"/>
112 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.21/@parameters.1"/>
113 </partialrelationinterpretation>
114 <partialrelationinterpretation>
115 <interpretationOf href="generation.logicproblem#//@relations.22"/>
116 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.22/@parameters.0"/>
117 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.22/@parameters.1"/>
118 </partialrelationinterpretation>
119 <partialrelationinterpretation>
120 <interpretationOf href="generation.logicproblem#//@relations.23"/>
121 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.23/@parameters.0"/>
122 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.23/@parameters.1"/>
123 </partialrelationinterpretation>
124 <partialrelationinterpretation>
125 <interpretationOf href="generation.logicproblem#//@relations.24"/>
126 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.24/@parameters.0"/>
127 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.24/@parameters.1"/>
128 </partialrelationinterpretation>
129 <partialrelationinterpretation>
130 <interpretationOf href="generation.logicproblem#//@relations.25"/>
131 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.25/@parameters.0"/>
132 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.25/@parameters.1"/>
133 </partialrelationinterpretation>
134 <partialrelationinterpretation>
135 <interpretationOf href="generation.logicproblem#//@relations.26"/>
136 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.26/@parameters.0"/>
137 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.26/@parameters.1"/>
138 </partialrelationinterpretation>
139 <partialrelationinterpretation>
140 <interpretationOf href="generation.logicproblem#//@relations.27"/>
141 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.27/@parameters.0"/>
142 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.27/@parameters.1"/>
143 </partialrelationinterpretation>
144 <partialrelationinterpretation>
145 <interpretationOf href="generation.logicproblem#//@relations.28"/>
146 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.28/@parameters.0"/>
147 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.28/@parameters.1"/>
148 </partialrelationinterpretation>
149 <partialrelationinterpretation>
150 <interpretationOf href="generation.logicproblem#//@relations.29"/>
151 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.29/@parameters.0"/>
152 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.29/@parameters.1"/>
153 </partialrelationinterpretation>
154 <partialrelationinterpretation>
155 <interpretationOf href="generation.logicproblem#//@relations.30"/>
156 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.30/@parameters.0"/>
157 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.30/@parameters.1"/>
158 </partialrelationinterpretation>
159 <partialrelationinterpretation>
160 <interpretationOf href="generation.logicproblem#//@relations.31"/>
161 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.31/@parameters.0"/>
162 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.31/@parameters.1"/>
163 </partialrelationinterpretation>
164 <partialrelationinterpretation>
165 <interpretationOf href="generation.logicproblem#//@relations.32"/>
166 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.32/@parameters.0"/>
167 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.32/@parameters.1"/>
168 </partialrelationinterpretation>
169 <partialrelationinterpretation>
170 <interpretationOf href="generation.logicproblem#//@relations.33"/>
171 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.33/@parameters.0"/>
172 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.33/@parameters.1"/>
173 </partialrelationinterpretation>
174 <partialrelationinterpretation>
175 <interpretationOf href="generation.logicproblem#//@relations.34"/>
176 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.34/@parameters.0"/>
177 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.34/@parameters.1"/>
178 </partialrelationinterpretation>
179 <partialrelationinterpretation>
180 <interpretationOf href="generation.logicproblem#//@relations.35"/>
181 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.35/@parameters.0"/>
182 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.35/@parameters.1"/>
183 </partialrelationinterpretation>
184 <partialrelationinterpretation>
185 <interpretationOf href="generation.logicproblem#//@relations.36"/>
186 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.36/@parameters.0"/>
187 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.36/@parameters.1"/>
188 </partialrelationinterpretation>
189 <partialrelationinterpretation>
190 <interpretationOf href="generation.logicproblem#//@relations.37"/>
191 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.37/@parameters.0"/>
192 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.37/@parameters.1"/>
193 </partialrelationinterpretation>
194 <partialrelationinterpretation>
195 <interpretationOf href="generation.logicproblem#//@relations.38"/>
196 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.38/@parameters.0"/>
197 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.38/@parameters.1"/>
198 </partialrelationinterpretation>
199 <partialrelationinterpretation>
200 <interpretationOf href="generation.logicproblem#//@relations.39"/>
201 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.39/@parameters.0"/>
202 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.39/@parameters.1"/>
203 </partialrelationinterpretation>
204 <partialrelationinterpretation>
205 <interpretationOf href="generation.logicproblem#//@relations.40"/>
206 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.40/@parameters.0"/>
207 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.40/@parameters.1"/>
208 </partialrelationinterpretation>
209 <partialrelationinterpretation>
210 <interpretationOf href="generation.logicproblem#//@relations.41"/>
211 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.41/@parameters.0"/>
212 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.41/@parameters.1"/>
213 </partialrelationinterpretation>
214 <partialrelationinterpretation>
215 <interpretationOf href="generation.logicproblem#//@relations.42"/>
216 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.42/@parameters.0"/>
217 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.42/@parameters.1"/>
218 </partialrelationinterpretation>
219 <partialrelationinterpretation>
220 <interpretationOf href="generation.logicproblem#//@relations.43"/>
221 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.43/@parameters.0"/>
222 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.43/@parameters.1"/>
223 </partialrelationinterpretation>
224 <partialrelationinterpretation>
225 <interpretationOf href="generation.logicproblem#//@relations.44"/>
226 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.44/@parameters.0"/>
227 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.44/@parameters.1"/>
228 </partialrelationinterpretation>
229 <partialrelationinterpretation>
230 <interpretationOf href="generation.logicproblem#//@relations.45"/>
231 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.45/@parameters.0"/>
232 <param2 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.45/@parameters.1"/>
233 </partialrelationinterpretation>
234 <partialrelationinterpretation>
235 <interpretationOf href="generation.logicproblem#//@relations.46"/>
236 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.46/@parameters.0"/>
237 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.46/@parameters.1"/>
238 </partialrelationinterpretation>
239 <partialrelationinterpretation>
240 <interpretationOf href="generation.logicproblem#//@relations.47"/>
241 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.47/@parameters.0"/>
242 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.47/@parameters.1"/>
243 </partialrelationinterpretation>
244 <partialrelationinterpretation>
245 <interpretationOf href="generation.logicproblem#//@relations.48"/>
246 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.48/@parameters.0"/>
247 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.48/@parameters.1"/>
248 </partialrelationinterpretation>
249 <partialrelationinterpretation>
250 <interpretationOf href="generation.logicproblem#//@relations.49"/>
251 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.49/@parameters.0"/>
252 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.49/@parameters.1"/>
253 </partialrelationinterpretation>
254 <partialrelationinterpretation>
255 <interpretationOf href="generation.logicproblem#//@relations.50"/>
256 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.50/@parameters.0"/>
257 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.50/@parameters.1"/>
258 </partialrelationinterpretation>
259 <partialrelationinterpretation>
260 <interpretationOf href="generation.logicproblem#//@relations.51"/>
261 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.51/@parameters.0"/>
262 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.51/@parameters.1"/>
263 </partialrelationinterpretation>
264 <partialrelationinterpretation>
265 <interpretationOf href="generation.logicproblem#//@relations.52"/>
266 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.52/@parameters.0"/>
267 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.52/@parameters.1"/>
268 </partialrelationinterpretation>
269 <partialrelationinterpretation>
270 <interpretationOf href="generation.logicproblem#//@relations.53"/>
271 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.53/@parameters.0"/>
272 <param2 xsi:type="language:IntTypeReference" href="generation.logicproblem#//@relations.53/@parameters.1"/>
273 </partialrelationinterpretation>
274 <partialrelationinterpretation>
275 <interpretationOf href="generation.logicproblem#//@relations.54"/>
276 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.54/@parameters.0"/>
277 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.54/@parameters.1"/>
278 </partialrelationinterpretation>
279 <partialrelationinterpretation>
280 <interpretationOf href="generation.logicproblem#//@relations.55"/>
281 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink" param2="//@newElements.9">
282 <param1 href="generation.logicproblem#//@elements.0"/>
283 </relationlinks>
284 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.55/@parameters.0"/>
285 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.55/@parameters.1"/>
286 </partialrelationinterpretation>
287 <partialrelationinterpretation>
288 <interpretationOf href="generation.logicproblem#//@relations.56"/>
289 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink" param2="//@newElements.8">
290 <param1 href="generation.logicproblem#//@elements.0"/>
291 </relationlinks>
292 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.56/@parameters.0"/>
293 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.56/@parameters.1"/>
294 </partialrelationinterpretation>
295 <partialrelationinterpretation>
296 <interpretationOf href="generation.logicproblem#//@relations.57"/>
297 <relationlinks xsi:type="partialinterpretation:BinaryElementRelationLink" param2="//@newElements.7">
298 <param1 href="generation.logicproblem#//@elements.0"/>
299 </relationlinks>
300 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.57/@parameters.0"/>
301 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.57/@parameters.1"/>
302 </partialrelationinterpretation>
303 <partialrelationinterpretation>
304 <interpretationOf href="generation.logicproblem#//@relations.58"/>
305 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.58/@parameters.0"/>
306 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.58/@parameters.1"/>
307 </partialrelationinterpretation>
308 <partialrelationinterpretation>
309 <interpretationOf href="generation.logicproblem#//@relations.59"/>
310 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.59/@parameters.0"/>
311 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.59/@parameters.1"/>
312 </partialrelationinterpretation>
313 <partialrelationinterpretation>
314 <interpretationOf href="generation.logicproblem#//@relations.60"/>
315 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.60/@parameters.0"/>
316 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.60/@parameters.1"/>
317 </partialrelationinterpretation>
318 <partialrelationinterpretation>
319 <interpretationOf href="generation.logicproblem#//@relations.61"/>
320 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.61/@parameters.0"/>
321 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.61/@parameters.1"/>
322 </partialrelationinterpretation>
323 <partialrelationinterpretation>
324 <interpretationOf href="generation.logicproblem#//@relations.62"/>
325 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.62/@parameters.0"/>
326 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.62/@parameters.1"/>
327 </partialrelationinterpretation>
328 <partialrelationinterpretation>
329 <interpretationOf href="generation.logicproblem#//@relations.63"/>
330 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.63/@parameters.0"/>
331 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.63/@parameters.1"/>
332 </partialrelationinterpretation>
333 <partialrelationinterpretation>
334 <interpretationOf href="generation.logicproblem#//@relations.64"/>
335 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.64/@parameters.0"/>
336 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.64/@parameters.1"/>
337 </partialrelationinterpretation>
338 <partialrelationinterpretation>
339 <interpretationOf href="generation.logicproblem#//@relations.65"/>
340 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.65/@parameters.0"/>
341 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.65/@parameters.1"/>
342 </partialrelationinterpretation>
343 <partialrelationinterpretation>
344 <interpretationOf href="generation.logicproblem#//@relations.66"/>
345 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.66/@parameters.0"/>
346 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.66/@parameters.1"/>
347 </partialrelationinterpretation>
348 <partialrelationinterpretation>
349 <interpretationOf href="generation.logicproblem#//@relations.67"/>
350 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.67/@parameters.0"/>
351 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.67/@parameters.1"/>
352 </partialrelationinterpretation>
353 <partialrelationinterpretation>
354 <interpretationOf href="generation.logicproblem#//@relations.68"/>
355 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.68/@parameters.0"/>
356 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.68/@parameters.1"/>
357 </partialrelationinterpretation>
358 <partialrelationinterpretation>
359 <interpretationOf href="generation.logicproblem#//@relations.69"/>
360 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.69/@parameters.0"/>
361 <param2 xsi:type="language:IntTypeReference" href="generation.logicproblem#//@relations.69/@parameters.1"/>
362 </partialrelationinterpretation>
363 <partialrelationinterpretation>
364 <interpretationOf href="generation.logicproblem#//@relations.70"/>
365 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.70/@parameters.0"/>
366 <param2 xsi:type="language:IntTypeReference" href="generation.logicproblem#//@relations.70/@parameters.1"/>
367 </partialrelationinterpretation>
368 <partialrelationinterpretation>
369 <interpretationOf href="generation.logicproblem#//@relations.71"/>
370 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.71/@parameters.0"/>
371 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.71/@parameters.1"/>
372 </partialrelationinterpretation>
373 <partialrelationinterpretation>
374 <interpretationOf href="generation.logicproblem#//@relations.72"/>
375 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.72/@parameters.0"/>
376 <param2 xsi:type="language:BoolTypeReference" href="generation.logicproblem#//@relations.72/@parameters.1"/>
377 </partialrelationinterpretation>
378 <partialrelationinterpretation>
379 <interpretationOf href="generation.logicproblem#//@relations.73"/>
380 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.73/@parameters.0"/>
381 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.73/@parameters.1"/>
382 </partialrelationinterpretation>
383 <partialrelationinterpretation>
384 <interpretationOf href="generation.logicproblem#//@relations.74"/>
385 <param1 xsi:type="language:ComplexTypeReference" href="generation.logicproblem#//@relations.74/@parameters.0"/>
386 <param2 xsi:type="language:StringTypeReference" href="generation.logicproblem#//@relations.74/@parameters.1"/>
387 </partialrelationinterpretation>
388 <newElements xsi:type="partialinterpretation:BooleanElement" name="true" valueSet="true" value="true"/>
389 <newElements xsi:type="partialinterpretation:BooleanElement" name="false" valueSet="true"/>
390 <newElements xsi:type="partialinterpretation:IntegerElement" name="-1" valueSet="true" value="-1"/>
391 <newElements xsi:type="partialinterpretation:IntegerElement" name="0" valueSet="true"/>
392 <newElements xsi:type="partialinterpretation:IntegerElement" name="1" valueSet="true" value="1"/>
393 <newElements xsi:type="partialinterpretation:StringElement" name="&quot;A&quot;" valueSet="true" value="A"/>
394 <newElements xsi:type="partialinterpretation:StringElement" name="&quot;B&quot;" valueSet="true" value="B"/>
395 <newElements xsi:type="partialinterpretation:StringElement" name="&quot;nsPrefix&quot;" valueSet="true" value="nsPrefix"/>
396 <newElements xsi:type="partialinterpretation:StringElement" name="&quot;nsUri&quot;" valueSet="true" value="nsUri"/>
397 <newElements xsi:type="partialinterpretation:StringElement" name="&quot;packageName&quot;" valueSet="true" value="packageName"/>
398 <partialtypeinterpratation xsi:type="partialinterpretation:PartialBooleanInterpretation" elements="//@newElements.0 //@newElements.1"/>
399 <partialtypeinterpratation xsi:type="partialinterpretation:PartialIntegerInterpretation" elements="//@newElements.2 //@newElements.3 //@newElements.4 //@openWorldElements.0"/>
400 <partialtypeinterpratation xsi:type="partialinterpretation:PartialRealInterpretation" elements="//@openWorldElements.1"/>
401 <partialtypeinterpratation xsi:type="partialinterpretation:PartialStringInterpretation" elements="//@newElements.5 //@newElements.6 //@newElements.7 //@newElements.8 //@newElements.9 //@openWorldElements.2"/>
402 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.0" supertypeInterpretation="//@partialtypeinterpratation.18 //@partialtypeinterpratation.19 //@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
403 <interpretationOf href="generation.logicproblem#//@types.0"/>
404 </partialtypeinterpratation>
405 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.1" supertypeInterpretation="//@partialtypeinterpratation.11 //@partialtypeinterpratation.23">
406 <interpretationOf href="generation.logicproblem#//@types.1"/>
407 </partialtypeinterpratation>
408 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.2" supertypeInterpretation="//@partialtypeinterpratation.7 //@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
409 <interpretationOf href="generation.logicproblem#//@types.2"/>
410 </partialtypeinterpratation>
411 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.3" supertypeInterpretation="//@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
412 <interpretationOf href="generation.logicproblem#//@types.3"/>
413 </partialtypeinterpratation>
414 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.4" supertypeInterpretation="//@partialtypeinterpratation.7 //@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
415 <interpretationOf href="generation.logicproblem#//@types.4"/>
416 </partialtypeinterpratation>
417 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.5" supertypeInterpretation="//@partialtypeinterpratation.8 //@partialtypeinterpratation.7 //@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
418 <interpretationOf href="generation.logicproblem#//@types.5"/>
419 </partialtypeinterpratation>
420 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.6" supertypeInterpretation="//@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
421 <interpretationOf href="generation.logicproblem#//@types.6"/>
422 </partialtypeinterpratation>
423 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.7">
424 <elements href="generation.logicproblem#//@elements.0"/>
425 <interpretationOf href="generation.logicproblem#//@types.7"/>
426 </partialtypeinterpratation>
427 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.8" supertypeInterpretation="//@partialtypeinterpratation.11">
428 <elements href="generation.logicproblem#//@elements.0"/>
429 <interpretationOf href="generation.logicproblem#//@types.8"/>
430 </partialtypeinterpratation>
431 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.9">
432 <interpretationOf href="generation.logicproblem#//@types.9"/>
433 </partialtypeinterpratation>
434 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.10" supertypeInterpretation="//@partialtypeinterpratation.19 //@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
435 <interpretationOf href="generation.logicproblem#//@types.10"/>
436 </partialtypeinterpratation>
437 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.11" supertypeInterpretation="//@partialtypeinterpratation.12 //@partialtypeinterpratation.11">
438 <elements href="generation.logicproblem#//@elements.0"/>
439 <interpretationOf href="generation.logicproblem#//@types.11"/>
440 </partialtypeinterpratation>
441 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.12" supertypeInterpretation="//@partialtypeinterpratation.19 //@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
442 <interpretationOf href="generation.logicproblem#//@types.12"/>
443 </partialtypeinterpratation>
444 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.13" supertypeInterpretation="//@partialtypeinterpratation.18 //@partialtypeinterpratation.19 //@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
445 <interpretationOf href="generation.logicproblem#//@types.13"/>
446 </partialtypeinterpratation>
447 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.14" supertypeInterpretation="//@partialtypeinterpratation.19 //@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
448 <interpretationOf href="generation.logicproblem#//@types.14"/>
449 </partialtypeinterpratation>
450 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.15" supertypeInterpretation="//@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
451 <interpretationOf href="generation.logicproblem#//@types.15"/>
452 </partialtypeinterpratation>
453 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.16">
454 <interpretationOf href="generation.logicproblem#//@types.16"/>
455 </partialtypeinterpratation>
456 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.17">
457 <interpretationOf href="generation.logicproblem#//@types.17"/>
458 </partialtypeinterpratation>
459 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.18" supertypeInterpretation="//@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
460 <interpretationOf href="generation.logicproblem#//@types.18"/>
461 </partialtypeinterpratation>
462 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.19" supertypeInterpretation="//@partialtypeinterpratation.11">
463 <interpretationOf href="generation.logicproblem#//@types.20"/>
464 </partialtypeinterpratation>
465 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.20" supertypeInterpretation="//@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.23">
466 <interpretationOf href="generation.logicproblem#//@types.22"/>
467 </partialtypeinterpratation>
468 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.21" supertypeInterpretation="//@partialtypeinterpratation.15 //@partialtypeinterpratation.12 //@partialtypeinterpratation.11 //@partialtypeinterpratation.24 //@partialtypeinterpratation.23">
469 <interpretationOf href="generation.logicproblem#//@types.24"/>
470 </partialtypeinterpratation>
471 <openWorldElements xsi:type="partialinterpretation:IntegerElement" name="New Integers"/>
472 <openWorldElements xsi:type="partialinterpretation:RealElement" name="New Reals"/>
473 <openWorldElements xsi:type="partialinterpretation:StringElement" name="New Strings"/>
474 <openWorldElements name="New Objects"/>
475 <scopes targetTypeInterpretation="//@partialtypeinterpratation.4"/>
476 <scopes targetTypeInterpretation="//@partialtypeinterpratation.5"/>
477 <scopes targetTypeInterpretation="//@partialtypeinterpratation.6"/>
478 <scopes targetTypeInterpretation="//@partialtypeinterpratation.7"/>
479 <scopes targetTypeInterpretation="//@partialtypeinterpratation.8"/>
480 <scopes targetTypeInterpretation="//@partialtypeinterpratation.9"/>
481 <scopes targetTypeInterpretation="//@partialtypeinterpratation.10"/>
482 <scopes targetTypeInterpretation="//@partialtypeinterpratation.11"/>
483 <scopes targetTypeInterpretation="//@partialtypeinterpratation.12"/>
484 <scopes targetTypeInterpretation="//@partialtypeinterpratation.13"/>
485 <scopes targetTypeInterpretation="//@partialtypeinterpratation.14"/>
486 <scopes targetTypeInterpretation="//@partialtypeinterpratation.15"/>
487 <scopes targetTypeInterpretation="//@partialtypeinterpratation.16"/>
488 <scopes targetTypeInterpretation="//@partialtypeinterpratation.17"/>
489 <scopes targetTypeInterpretation="//@partialtypeinterpratation.18"/>
490 <scopes targetTypeInterpretation="//@partialtypeinterpratation.19"/>
491 <scopes targetTypeInterpretation="//@partialtypeinterpratation.20"/>
492 <scopes targetTypeInterpretation="//@partialtypeinterpratation.21"/>
493 <scopes targetTypeInterpretation="//@partialtypeinterpratation.22"/>
494 <scopes targetTypeInterpretation="//@partialtypeinterpratation.23"/>
495 <scopes targetTypeInterpretation="//@partialtypeinterpratation.24"/>
496 <scopes targetTypeInterpretation="//@partialtypeinterpratation.25"/>
497</partialinterpretation:PartialInterpretation>
diff --git a/Tests/Ecore-Plugin/outputs/debug/problem.als b/Tests/Ecore-Plugin/outputs/debug/problem.als
new file mode 100644
index 00000000..23498c39
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/debug/problem.als
@@ -0,0 +1,401 @@
1enum util'boolean {
2 util'boolean'true, util'boolean'false
3}
4one sig util'language {
5 util'root : one type'EEnumLiteral'class + (type'EEnum'class + (type'EAnnotation'class + (type'EDataType'class + (type'EGenericType'class + (type'ENamedElement'class + (type'EModelElement'class + (type'ETypedElement'class + (type'EAttribute'class + (type'EObject'class + (type'EClass'class + (type'EStringToStringMapEntry'class + (type'EPackage'class + (type'EReference'class + (type'EClassifier'class + (type'EOperation'class + (type'ETypeParameter'class + (type'EParameter'class + (type'EStructuralFeature'class + (type'EModelElement'class'DefinedPart + (type'EModelElement'class'UndefinedPart + (type'ENamedElement'class'DefinedPart + (type'ENamedElement'class'UndefinedPart + (type'EPackage'class'DefinedPart + type'EPackage'class'UndefinedPart))))))))))))))))))))))),
6 util'contains : (type'EEnumLiteral'class + (type'EEnum'class + (type'EAnnotation'class + (type'EDataType'class + (type'EGenericType'class + (type'ENamedElement'class + (type'EModelElement'class + (type'ETypedElement'class + (type'EAttribute'class + (type'EObject'class + (type'EClass'class + (type'EStringToStringMapEntry'class + (type'EPackage'class + (type'EReference'class + (type'EClassifier'class + (type'EOperation'class + (type'ETypeParameter'class + (type'EParameter'class + (type'EStructuralFeature'class + (type'EModelElement'class'DefinedPart + (type'EModelElement'class'UndefinedPart + (type'ENamedElement'class'DefinedPart + (type'ENamedElement'class'UndefinedPart + (type'EPackage'class'DefinedPart + type'EPackage'class'UndefinedPart)))))))))))))))))))))))) lone->set (type'EEnumLiteral'class + (type'EEnum'class + (type'EAnnotation'class + (type'EDataType'class + (type'EGenericType'class + (type'ENamedElement'class + (type'EModelElement'class + (type'ETypedElement'class + (type'EAttribute'class + (type'EObject'class + (type'EClass'class + (type'EStringToStringMapEntry'class + (type'EPackage'class + (type'EReference'class + (type'EClassifier'class + (type'EOperation'class + (type'ETypeParameter'class + (type'EParameter'class + (type'EStructuralFeature'class + (type'EModelElement'class'DefinedPart + (type'EModelElement'class'UndefinedPart + (type'ENamedElement'class'DefinedPart + (type'ENamedElement'class'UndefinedPart + (type'EPackage'class'DefinedPart + type'EPackage'class'UndefinedPart))))))))))))))))))))))))
7}
8abstract sig util'Object {
9}
10sig type'EAttribute'class in type'EStructuralFeature'class {
11 eAttributeType'reference'EAttribute : one type'EDataType'class,
12 iD'attribute'EAttribute : lone util'boolean
13}
14sig type'EAnnotation'class in type'EModelElement'class + type'EModelElement'class'UndefinedPart {
15 details'reference'EAnnotation : set type'EStringToStringMapEntry'class,
16 eModelElement'reference'EAnnotation : lone type'EModelElement'class,
17 contents'reference'EAnnotation : set type'EObject'class,
18 references'reference'EAnnotation : set type'EObject'class,
19 source'attribute'EAnnotation : lone String
20}
21sig type'EClass'class in type'EClassifier'class {
22 eSuperTypes'reference'EClass : set type'EClass'class,
23 eOperations'reference'EClass : set type'EOperation'class,
24 eAllAttributes'reference'EClass : set type'EAttribute'class,
25 eAllReferences'reference'EClass : set type'EReference'class,
26 eReferences'reference'EClass : set type'EReference'class,
27 eAttributes'reference'EClass : set type'EAttribute'class,
28 eAllContainments'reference'EClass : set type'EReference'class,
29 eAllOperations'reference'EClass : set type'EOperation'class,
30 eAllStructuralFeatures'reference'EClass : set type'EStructuralFeature'class,
31 eAllSuperTypes'reference'EClass : set type'EClass'class,
32 eIDAttribute'reference'EClass : lone type'EAttribute'class,
33 eStructuralFeatures'reference'EClass : set type'EStructuralFeature'class,
34 eGenericSuperTypes'reference'EClass : set type'EGenericType'class,
35 eAllGenericSuperTypes'reference'EClass : set type'EGenericType'class,
36 abstract'attribute'EClass : lone util'boolean,
37 interface'attribute'EClass : lone util'boolean
38}
39sig type'EClassifier'class in type'ENamedElement'class + type'ENamedElement'class'UndefinedPart {
40 ePackage'reference'EClassifier : lone type'EPackage'class,
41 eTypeParameters'reference'EClassifier : set type'ETypeParameter'class,
42 instanceClassName'attribute'EClassifier : lone String,
43 instanceTypeName'attribute'EClassifier : lone String
44}
45sig type'EDataType'class in type'EClassifier'class {
46 serializable'attribute'EDataType : lone util'boolean
47}
48sig type'EEnum'class in type'EDataType'class {
49 eLiterals'reference'EEnum : set type'EEnumLiteral'class
50}
51sig type'EEnumLiteral'class in type'ENamedElement'class + type'ENamedElement'class'UndefinedPart {
52 eEnum'reference'EEnumLiteral : lone type'EEnum'class,
53 value'attribute'EEnumLiteral : lone Int,
54 literal'attribute'EEnumLiteral : lone String
55}
56sig type'EModelElement'class in util'Object {
57 eAnnotations'reference'EModelElement : set type'EAnnotation'class
58}
59sig type'ENamedElement'class in type'EModelElement'class {
60 name'attribute'ENamedElement : lone String
61}
62sig type'EObject'class in util'Object {
63}
64sig type'EOperation'class in type'ETypedElement'class {
65 eContainingClass'reference'EOperation : lone type'EClass'class,
66 eTypeParameters'reference'EOperation : set type'ETypeParameter'class,
67 eParameters'reference'EOperation : set type'EParameter'class,
68 eExceptions'reference'EOperation : set type'EClassifier'class,
69 eGenericExceptions'reference'EOperation : set type'EGenericType'class
70}
71sig type'EPackage'class in type'ENamedElement'class {
72 eClassifiers'reference'EPackage : set type'EClassifier'class,
73 eSubpackages'reference'EPackage : set type'EPackage'class,
74 eSuperPackage'reference'EPackage : lone type'EPackage'class,
75 nsURI'attribute'EPackage : lone String,
76 nsPrefix'attribute'EPackage : lone String
77}
78sig type'EParameter'class in type'ETypedElement'class {
79 eOperation'reference'EParameter : lone type'EOperation'class
80}
81sig type'EReference'class in type'EStructuralFeature'class {
82 eOpposite'reference'EReference : lone type'EReference'class,
83 eReferenceType'reference'EReference : one type'EClass'class,
84 eKeys'reference'EReference : set type'EAttribute'class,
85 containment'attribute'EReference : lone util'boolean,
86 container'attribute'EReference : lone util'boolean,
87 resolveProxies'attribute'EReference : lone util'boolean
88}
89sig type'EStructuralFeature'class in type'ETypedElement'class {
90 eContainingClass'reference'EStructuralFeature : lone type'EClass'class,
91 changeable'attribute'EStructuralFeature : lone util'boolean,
92 volatile'attribute'EStructuralFeature : lone util'boolean,
93 transient'attribute'EStructuralFeature : lone util'boolean,
94 defaultValueLiteral'attribute'EStructuralFeature : lone String,
95 unsettable'attribute'EStructuralFeature : lone util'boolean,
96 derived'attribute'EStructuralFeature : lone util'boolean
97}
98sig type'ETypedElement'class in type'ENamedElement'class + type'ENamedElement'class'UndefinedPart {
99 eType'reference'ETypedElement : lone type'EClassifier'class,
100 eGenericType'reference'ETypedElement : lone type'EGenericType'class,
101 ordered'attribute'ETypedElement : lone util'boolean,
102 unique'attribute'ETypedElement : lone util'boolean,
103 lowerBound'attribute'ETypedElement : lone Int,
104 upperBound'attribute'ETypedElement : lone Int,
105 many'attribute'ETypedElement : lone util'boolean,
106 required'attribute'ETypedElement : lone util'boolean
107}
108sig type'EStringToStringMapEntry'class in util'Object {
109 key'attribute'EStringToStringMapEntry : lone String,
110 value'attribute'EStringToStringMapEntry : lone String
111}
112sig type'EGenericType'class in util'Object {
113 eUpperBound'reference'EGenericType : lone type'EGenericType'class,
114 eTypeArguments'reference'EGenericType : set type'EGenericType'class,
115 eRawType'reference'EGenericType : one type'EClassifier'class,
116 eLowerBound'reference'EGenericType : lone type'EGenericType'class,
117 eTypeParameter'reference'EGenericType : lone type'ETypeParameter'class,
118 eClassifier'reference'EGenericType : lone type'EClassifier'class
119}
120sig type'ETypeParameter'class in type'ENamedElement'class + type'ENamedElement'class'UndefinedPart {
121 eBounds'reference'ETypeParameter : set type'EGenericType'class
122}
123sig type'EModelElement'class'DefinedPart in type'EModelElement'class {
124}
125sig type'EModelElement'class'UndefinedPart in type'EModelElement'class {
126}
127sig type'ENamedElement'class'DefinedPart in type'ENamedElement'class + type'EModelElement'class'DefinedPart {
128}
129sig type'ENamedElement'class'UndefinedPart in type'ENamedElement'class + type'EModelElement'class'UndefinedPart {
130}
131sig type'EPackage'class'DefinedPart in type'EPackage'class + type'ENamedElement'class'DefinedPart {
132}
133sig type'EPackage'class'UndefinedPart in type'EPackage'class + type'ENamedElement'class'UndefinedPart {
134}
135one sig element'o'1 in type'EModelElement'class'DefinedPart {
136}
137fact typedefinition'EModelElement'class'DefinedPart {
138 type'EModelElement'class'DefinedPart = element'o'1
139}
140fact typedefinition'ENamedElement'class'DefinedPart {
141 type'ENamedElement'class'DefinedPart = element'o'1
142}
143fact typedefinition'EPackage'class'DefinedPart {
144 type'EPackage'class'DefinedPart = element'o'1
145}
146fact abstract'EAnnotation'class {
147 type'EAnnotation'class = type'EModelElement'class & type'EModelElement'class'UndefinedPart
148}
149fact abstract'EClassifier'class {
150 type'EClassifier'class = type'ENamedElement'class & type'ENamedElement'class'UndefinedPart
151}
152fact abstract'EEnumLiteral'class {
153 type'EEnumLiteral'class = type'ENamedElement'class & type'ENamedElement'class'UndefinedPart
154}
155fact abstract'ETypedElement'class {
156 type'ETypedElement'class = type'ENamedElement'class & type'ENamedElement'class'UndefinedPart
157}
158fact abstract'ETypeParameter'class {
159 type'ETypeParameter'class = type'ENamedElement'class & type'ENamedElement'class'UndefinedPart
160}
161fact abstract'ENamedElement'class'DefinedPart {
162 type'ENamedElement'class'DefinedPart = type'ENamedElement'class & type'EModelElement'class'DefinedPart
163}
164fact abstract'ENamedElement'class'UndefinedPart {
165 type'ENamedElement'class'UndefinedPart = type'ENamedElement'class & type'EModelElement'class'UndefinedPart
166}
167fact abstract'EPackage'class'DefinedPart {
168 type'EPackage'class'DefinedPart = type'EPackage'class & type'ENamedElement'class'DefinedPart
169}
170fact abstract'EPackage'class'UndefinedPart {
171 type'EPackage'class'UndefinedPart = type'EPackage'class & type'ENamedElement'class'UndefinedPart
172}
173fact abstract'EClassifier'class {
174 type'EClassifier'class = type'EClass'class + type'EDataType'class
175}
176fact abstract'EModelElement'class {
177 type'EModelElement'class = type'EAnnotation'class + (type'ENamedElement'class + (type'EModelElement'class'DefinedPart + type'EModelElement'class'UndefinedPart))
178}
179fact abstract'ENamedElement'class {
180 type'ENamedElement'class = type'EClassifier'class + (type'EEnumLiteral'class + (type'EPackage'class + (type'ETypedElement'class + (type'ETypeParameter'class + (type'ENamedElement'class'DefinedPart + type'ENamedElement'class'UndefinedPart)))))
181}
182fact abstract'EPackage'class {
183 type'EPackage'class = type'EPackage'class'DefinedPart + type'EPackage'class'UndefinedPart
184}
185fact abstract'EStructuralFeature'class {
186 type'EStructuralFeature'class = type'EAttribute'class + type'EReference'class
187}
188fact abstract'ETypedElement'class {
189 type'ETypedElement'class = type'EOperation'class + (type'EParameter'class + type'EStructuralFeature'class)
190}
191fact abstract'EModelElement'class'DefinedPart {
192 type'EModelElement'class'DefinedPart = type'ENamedElement'class'DefinedPart
193}
194fact abstract'EModelElement'class'UndefinedPart {
195 type'EModelElement'class'UndefinedPart = type'EAnnotation'class + type'ENamedElement'class'UndefinedPart
196}
197fact abstract'ENamedElement'class'DefinedPart {
198 type'ENamedElement'class'DefinedPart = type'EPackage'class'DefinedPart
199}
200fact abstract'ENamedElement'class'UndefinedPart {
201 type'ENamedElement'class'UndefinedPart = type'EClassifier'class + (type'EEnumLiteral'class + (type'EPackage'class'UndefinedPart + (type'ETypedElement'class + type'ETypeParameter'class)))
202}
203fact ObjectTypeDefinition {
204 util'Object = type'EModelElement'class + (type'EObject'class + (type'EStringToStringMapEntry'class + type'EGenericType'class))
205}
206fact common'types'EObject'class'EModelElement'class {
207 type'EObject'class & type'EModelElement'class = none
208}
209fact common'types'EStringToStringMapEntry'class'EModelElement'class {
210 type'EStringToStringMapEntry'class & type'EModelElement'class = none
211}
212fact common'types'EStringToStringMapEntry'class'EObject'class {
213 type'EStringToStringMapEntry'class & type'EObject'class = none
214}
215fact common'types'EGenericType'class'EModelElement'class {
216 type'EGenericType'class & type'EModelElement'class = none
217}
218fact common'types'EGenericType'class'EObject'class {
219 type'EGenericType'class & type'EObject'class = none
220}
221fact common'types'EGenericType'class'EStringToStringMapEntry'class {
222 type'EGenericType'class & type'EStringToStringMapEntry'class = none
223}
224fact common'types'EDataType'class'EClass'class {
225 type'EDataType'class & type'EClass'class = none
226}
227fact common'types'ENamedElement'class'EAnnotation'class {
228 type'ENamedElement'class & type'EAnnotation'class = none
229}
230fact common'types'EModelElement'class'DefinedPart'EAnnotation'class {
231 type'EModelElement'class'DefinedPart & type'EAnnotation'class = none
232}
233fact common'types'EModelElement'class'DefinedPart'ENamedElement'class {
234 type'EModelElement'class'DefinedPart & type'ENamedElement'class = type'ENamedElement'class'DefinedPart
235}
236fact common'types'EModelElement'class'UndefinedPart'EAnnotation'class {
237 type'EModelElement'class'UndefinedPart & type'EAnnotation'class = type'EAnnotation'class
238}
239fact common'types'EModelElement'class'UndefinedPart'ENamedElement'class {
240 type'EModelElement'class'UndefinedPart & type'ENamedElement'class = type'ENamedElement'class'UndefinedPart
241}
242fact common'types'EModelElement'class'UndefinedPart'EModelElement'class'DefinedPart {
243 type'EModelElement'class'UndefinedPart & type'EModelElement'class'DefinedPart = none
244}
245fact common'types'EEnumLiteral'class'EClassifier'class {
246 type'EEnumLiteral'class & type'EClassifier'class = none
247}
248fact common'types'EPackage'class'EClassifier'class {
249 type'EPackage'class & type'EClassifier'class = none
250}
251fact common'types'EPackage'class'EEnumLiteral'class {
252 type'EPackage'class & type'EEnumLiteral'class = none
253}
254fact common'types'ETypedElement'class'EClassifier'class {
255 type'ETypedElement'class & type'EClassifier'class = none
256}
257fact common'types'ETypedElement'class'EEnumLiteral'class {
258 type'ETypedElement'class & type'EEnumLiteral'class = none
259}
260fact common'types'ETypedElement'class'EPackage'class {
261 type'ETypedElement'class & type'EPackage'class = none
262}
263fact common'types'ETypeParameter'class'EClassifier'class {
264 type'ETypeParameter'class & type'EClassifier'class = none
265}
266fact common'types'ETypeParameter'class'EEnumLiteral'class {
267 type'ETypeParameter'class & type'EEnumLiteral'class = none
268}
269fact common'types'ETypeParameter'class'EPackage'class {
270 type'ETypeParameter'class & type'EPackage'class = none
271}
272fact common'types'ETypeParameter'class'ETypedElement'class {
273 type'ETypeParameter'class & type'ETypedElement'class = none
274}
275fact common'types'ENamedElement'class'DefinedPart'EClassifier'class {
276 type'ENamedElement'class'DefinedPart & type'EClassifier'class = none
277}
278fact common'types'ENamedElement'class'DefinedPart'EEnumLiteral'class {
279 type'ENamedElement'class'DefinedPart & type'EEnumLiteral'class = none
280}
281fact common'types'ENamedElement'class'DefinedPart'EPackage'class {
282 type'ENamedElement'class'DefinedPart & type'EPackage'class = type'EPackage'class'DefinedPart
283}
284fact common'types'ENamedElement'class'DefinedPart'ETypedElement'class {
285 type'ENamedElement'class'DefinedPart & type'ETypedElement'class = none
286}
287fact common'types'ENamedElement'class'DefinedPart'ETypeParameter'class {
288 type'ENamedElement'class'DefinedPart & type'ETypeParameter'class = none
289}
290fact common'types'ENamedElement'class'UndefinedPart'EClassifier'class {
291 type'ENamedElement'class'UndefinedPart & type'EClassifier'class = type'EClassifier'class
292}
293fact common'types'ENamedElement'class'UndefinedPart'EEnumLiteral'class {
294 type'ENamedElement'class'UndefinedPart & type'EEnumLiteral'class = type'EEnumLiteral'class
295}
296fact common'types'ENamedElement'class'UndefinedPart'EPackage'class {
297 type'ENamedElement'class'UndefinedPart & type'EPackage'class = type'EPackage'class'UndefinedPart
298}
299fact common'types'ENamedElement'class'UndefinedPart'ETypedElement'class {
300 type'ENamedElement'class'UndefinedPart & type'ETypedElement'class = type'ETypedElement'class
301}
302fact common'types'ENamedElement'class'UndefinedPart'ETypeParameter'class {
303 type'ENamedElement'class'UndefinedPart & type'ETypeParameter'class = type'ETypeParameter'class
304}
305fact common'types'ENamedElement'class'UndefinedPart'ENamedElement'class'DefinedPart {
306 type'ENamedElement'class'UndefinedPart & type'ENamedElement'class'DefinedPart = none
307}
308fact common'types'EPackage'class'UndefinedPart'EPackage'class'DefinedPart {
309 type'EPackage'class'UndefinedPart & type'EPackage'class'DefinedPart = none
310}
311fact common'types'EReference'class'EAttribute'class {
312 type'EReference'class & type'EAttribute'class = none
313}
314fact common'types'EParameter'class'EOperation'class {
315 type'EParameter'class & type'EOperation'class = none
316}
317fact common'types'EStructuralFeature'class'EOperation'class {
318 type'EStructuralFeature'class & type'EOperation'class = none
319}
320fact common'types'EStructuralFeature'class'EParameter'class {
321 type'EStructuralFeature'class & type'EParameter'class = none
322}
323fact common'types'ENamedElement'class'UndefinedPart'EAnnotation'class {
324 type'ENamedElement'class'UndefinedPart & type'EAnnotation'class = none
325}
326fact common'types'EEnumLiteral'class'EClassifier'class {
327 type'EEnumLiteral'class & type'EClassifier'class = none
328}
329fact common'types'EPackage'class'UndefinedPart'EClassifier'class {
330 type'EPackage'class'UndefinedPart & type'EClassifier'class = none
331}
332fact common'types'EPackage'class'UndefinedPart'EEnumLiteral'class {
333 type'EPackage'class'UndefinedPart & type'EEnumLiteral'class = none
334}
335fact common'types'ETypedElement'class'EClassifier'class {
336 type'ETypedElement'class & type'EClassifier'class = none
337}
338fact common'types'ETypedElement'class'EEnumLiteral'class {
339 type'ETypedElement'class & type'EEnumLiteral'class = none
340}
341fact common'types'ETypedElement'class'EPackage'class'UndefinedPart {
342 type'ETypedElement'class & type'EPackage'class'UndefinedPart = none
343}
344fact common'types'ETypeParameter'class'EClassifier'class {
345 type'ETypeParameter'class & type'EClassifier'class = none
346}
347fact common'types'ETypeParameter'class'EEnumLiteral'class {
348 type'ETypeParameter'class & type'EEnumLiteral'class = none
349}
350fact common'types'ETypeParameter'class'EPackage'class'UndefinedPart {
351 type'ETypeParameter'class & type'EPackage'class'UndefinedPart = none
352}
353fact common'types'ETypeParameter'class'ETypedElement'class {
354 type'ETypeParameter'class & type'ETypedElement'class = none
355}
356fact util'containmentDefinition {
357 util'language.util'contains = details'reference'EAnnotation + (contents'reference'EAnnotation + (eOperations'reference'EClass + (eStructuralFeatures'reference'EClass + (eGenericSuperTypes'reference'EClass + (eTypeParameters'reference'EClassifier + (eLiterals'reference'EEnum + (eAnnotations'reference'EModelElement + (eTypeParameters'reference'EOperation + (eParameters'reference'EOperation + (eGenericExceptions'reference'EOperation + (eClassifiers'reference'EPackage + (eSubpackages'reference'EPackage + (eGenericType'reference'ETypedElement + (eUpperBound'reference'EGenericType + (eTypeArguments'reference'EGenericType + (eLowerBound'reference'EGenericType + eBounds'reference'ETypeParameter))))))))))))))))
358}
359fact util'noParentForRoot {
360 no parent: type'EEnumLiteral'class + (type'EEnum'class + (type'EAnnotation'class + (type'EDataType'class + (type'EGenericType'class + (type'ENamedElement'class + (type'EModelElement'class + (type'ETypedElement'class + (type'EAttribute'class + (type'EObject'class + (type'EClass'class + (type'EStringToStringMapEntry'class + (type'EPackage'class + (type'EReference'class + (type'EClassifier'class + (type'EOperation'class + (type'ETypeParameter'class + (type'EParameter'class + (type'EStructuralFeature'class + (type'EModelElement'class'DefinedPart + (type'EModelElement'class'UndefinedPart + (type'ENamedElement'class'DefinedPart + (type'ENamedElement'class'UndefinedPart + (type'EPackage'class'DefinedPart + type'EPackage'class'UndefinedPart))))))))))))))))))))))) { parent->(util'language.util'root) in util'language.util'contains }
361}
362fact util'atLeastOneParent {
363 all child: type'EEnumLiteral'class + (type'EEnum'class + (type'EAnnotation'class + (type'EDataType'class + (type'EGenericType'class + (type'ENamedElement'class + (type'EModelElement'class + (type'ETypedElement'class + (type'EAttribute'class + (type'EObject'class + (type'EClass'class + (type'EStringToStringMapEntry'class + (type'EPackage'class + (type'EReference'class + (type'EClassifier'class + (type'EOperation'class + (type'ETypeParameter'class + (type'EParameter'class + (type'EStructuralFeature'class + (type'EModelElement'class'DefinedPart + (type'EModelElement'class'UndefinedPart + (type'ENamedElement'class'DefinedPart + (type'ENamedElement'class'UndefinedPart + (type'EPackage'class'DefinedPart + type'EPackage'class'UndefinedPart))))))))))))))))))))))) { child = util'language.util'root or (some parent: type'EEnumLiteral'class + (type'EEnum'class + (type'EAnnotation'class + (type'EDataType'class + (type'EGenericType'class + (type'ENamedElement'class + (type'EModelElement'class + (type'ETypedElement'class + (type'EAttribute'class + (type'EObject'class + (type'EClass'class + (type'EStringToStringMapEntry'class + (type'EPackage'class + (type'EReference'class + (type'EClassifier'class + (type'EOperation'class + (type'ETypeParameter'class + (type'EParameter'class + (type'EStructuralFeature'class + (type'EModelElement'class'DefinedPart + (type'EModelElement'class'UndefinedPart + (type'ENamedElement'class'DefinedPart + (type'ENamedElement'class'UndefinedPart + (type'EPackage'class'DefinedPart + type'EPackage'class'UndefinedPart))))))))))))))))))))))) { parent->child in util'language.util'contains }) }
364}
365fact util'noCircularContainment {
366 no circle: type'EEnumLiteral'class + (type'EEnum'class + (type'EAnnotation'class + (type'EDataType'class + (type'EGenericType'class + (type'ENamedElement'class + (type'EModelElement'class + (type'ETypedElement'class + (type'EAttribute'class + (type'EObject'class + (type'EClass'class + (type'EStringToStringMapEntry'class + (type'EPackage'class + (type'EReference'class + (type'EClassifier'class + (type'EOperation'class + (type'ETypeParameter'class + (type'EParameter'class + (type'EStructuralFeature'class + (type'EModelElement'class'DefinedPart + (type'EModelElement'class'UndefinedPart + (type'ENamedElement'class'DefinedPart + (type'ENamedElement'class'UndefinedPart + (type'EPackage'class'DefinedPart + type'EPackage'class'UndefinedPart))))))))))))))))))))))) { circle->circle in ^ (util'language.util'contains) }
367}
368fact oppositeReference'eModelElement'EAnnotation {
369 eModelElement'reference'EAnnotation = ~ eAnnotations'reference'EModelElement
370}
371fact oppositeReference'eOperations'EClass {
372 eOperations'reference'EClass = ~ eContainingClass'reference'EOperation
373}
374fact oppositeReference'eStructuralFeatures'EClass {
375 eStructuralFeatures'reference'EClass = ~ eContainingClass'reference'EStructuralFeature
376}
377fact oppositeReference'ePackage'EClassifier {
378 ePackage'reference'EClassifier = ~ eClassifiers'reference'EPackage
379}
380fact oppositeReference'eLiterals'EEnum {
381 eLiterals'reference'EEnum = ~ eEnum'reference'EEnumLiteral
382}
383fact oppositeReference'eParameters'EOperation {
384 eParameters'reference'EOperation = ~ eOperation'reference'EParameter
385}
386fact oppositeReference'eSubpackages'EPackage {
387 eSubpackages'reference'EPackage = ~ eSuperPackage'reference'EPackage
388}
389fact PartialInterpretation'name'attribute'ENamedElement {
390 "packageName" in element'o'1.name'attribute'ENamedElement
391}
392fact PartialInterpretation'nsURI'attribute'EPackage {
393 "nsUri" in element'o'1.nsURI'attribute'EPackage
394}
395fact PartialInterpretation'nsPrefix'attribute'EPackage {
396 "nsPrefix" in element'o'1.nsPrefix'attribute'EPackage
397}
398fact EnsureAllStrings {
399 "A" = "A" && ("B" = "B" && ("nsPrefix" = "nsPrefix" && ("nsUri" = "nsUri" && "packageName" = "packageName")))
400}
401run { } for exactly 6 util'Object , 2 Int , exactly 0 String \ No newline at end of file
diff --git a/Tests/Ecore-Plugin/outputs/log.txt b/Tests/Ecore-Plugin/outputs/log.txt
new file mode 100644
index 00000000..4add290c
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/log.txt
@@ -0,0 +1 @@
Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model 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, 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, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: Visualisations: Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: Visualisations: Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: Visualisations: Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: Visualisations: Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: Visualisations: Model generation finished \ No newline at end of file
diff --git a/Tests/Ecore-Plugin/outputs/models/1.gml b/Tests/Ecore-Plugin/outputs/models/1.gml
new file mode 100644
index 00000000..011b5f22
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/1.gml
@@ -0,0 +1,2629 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 254.10000000000002
9 h 110
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "o 1"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 EModelElement class DefinedPart
30 ENamedElement class DefinedPart
31 EPackage class DefinedPart
32 EModelElement class
33 ENamedElement class
34 EPackage class
35 "
36 fontSize 14
37 fontName "Consolas"
38 alignment "left"
39 anchor "tl"
40 borderDistance 6
41 ]
42 ]
43
44 node
45 [
46 id 1
47 graphics
48 [
49 w 41.800000000000004
50 h 26
51 type "rectangle"
52 fill "#FFFFFF"
53 fill2 "#FFFFFF"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 text "true"
59 outline "#000000"
60 fill "#FFFFFF"
61 fontSize 16
62 fontName "Monospace"
63 autoSizePolicy "node_width"
64 anchor "t"
65 borderDistance 0.0
66 ]
67 LabelGraphics
68 [
69 text "
70 "
71 fontSize 14
72 fontName "Consolas"
73 alignment "left"
74 anchor "tl"
75 borderDistance 6
76 ]
77 ]
78
79 node
80 [
81 id 2
82 graphics
83 [
84 w 50.6
85 h 26
86 type "rectangle"
87 fill "#FFFFFF"
88 fill2 "#FFFFFF"
89 outline "#000000"
90 ]
91 LabelGraphics
92 [
93 text "false"
94 outline "#000000"
95 fill "#FFFFFF"
96 fontSize 16
97 fontName "Monospace"
98 autoSizePolicy "node_width"
99 anchor "t"
100 borderDistance 0.0
101 ]
102 LabelGraphics
103 [
104 text "
105 "
106 fontSize 14
107 fontName "Consolas"
108 alignment "left"
109 anchor "tl"
110 borderDistance 6
111 ]
112 ]
113
114 node
115 [
116 id 3
117 graphics
118 [
119 w 24.200000000000003
120 h 26
121 type "rectangle"
122 fill "#FFFFFF"
123 fill2 "#FFFFFF"
124 outline "#000000"
125 ]
126 LabelGraphics
127 [
128 text "-1"
129 outline "#000000"
130 fill "#FFFFFF"
131 fontSize 16
132 fontName "Monospace"
133 autoSizePolicy "node_width"
134 anchor "t"
135 borderDistance 0.0
136 ]
137 LabelGraphics
138 [
139 text "
140 "
141 fontSize 14
142 fontName "Consolas"
143 alignment "left"
144 anchor "tl"
145 borderDistance 6
146 ]
147 ]
148
149 node
150 [
151 id 4
152 graphics
153 [
154 w 15.400000000000002
155 h 26
156 type "rectangle"
157 fill "#FFFFFF"
158 fill2 "#FFFFFF"
159 outline "#000000"
160 ]
161 LabelGraphics
162 [
163 text "0"
164 outline "#000000"
165 fill "#FFFFFF"
166 fontSize 16
167 fontName "Monospace"
168 autoSizePolicy "node_width"
169 anchor "t"
170 borderDistance 0.0
171 ]
172 LabelGraphics
173 [
174 text "
175 "
176 fontSize 14
177 fontName "Consolas"
178 alignment "left"
179 anchor "tl"
180 borderDistance 6
181 ]
182 ]
183
184 node
185 [
186 id 5
187 graphics
188 [
189 w 15.400000000000002
190 h 26
191 type "rectangle"
192 fill "#FFFFFF"
193 fill2 "#FFFFFF"
194 outline "#000000"
195 ]
196 LabelGraphics
197 [
198 text "1"
199 outline "#000000"
200 fill "#FFFFFF"
201 fontSize 16
202 fontName "Monospace"
203 autoSizePolicy "node_width"
204 anchor "t"
205 borderDistance 0.0
206 ]
207 LabelGraphics
208 [
209 text "
210 "
211 fontSize 14
212 fontName "Consolas"
213 alignment "left"
214 anchor "tl"
215 borderDistance 6
216 ]
217 ]
218
219 node
220 [
221 id 6
222 graphics
223 [
224 w 33.0
225 h 26
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text ""A""
234 outline "#000000"
235 fill "#FFFFFF"
236 fontSize 16
237 fontName "Monospace"
238 autoSizePolicy "node_width"
239 anchor "t"
240 borderDistance 0.0
241 ]
242 LabelGraphics
243 [
244 text "
245 "
246 fontSize 14
247 fontName "Consolas"
248 alignment "left"
249 anchor "tl"
250 borderDistance 6
251 ]
252 ]
253
254 node
255 [
256 id 7
257 graphics
258 [
259 w 33.0
260 h 26
261 type "rectangle"
262 fill "#FFFFFF"
263 fill2 "#FFFFFF"
264 outline "#000000"
265 ]
266 LabelGraphics
267 [
268 text ""B""
269 outline "#000000"
270 fill "#FFFFFF"
271 fontSize 16
272 fontName "Monospace"
273 autoSizePolicy "node_width"
274 anchor "t"
275 borderDistance 0.0
276 ]
277 LabelGraphics
278 [
279 text "
280 "
281 fontSize 14
282 fontName "Consolas"
283 alignment "left"
284 anchor "tl"
285 borderDistance 6
286 ]
287 ]
288
289 node
290 [
291 id 8
292 graphics
293 [
294 w 269.5
295 h 68
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text "null"
304 outline "#000000"
305 fill "#FFFFFF"
306 fontSize 16
307 fontName "Monospace"
308 autoSizePolicy "node_width"
309 anchor "t"
310 borderDistance 0.0
311 ]
312 LabelGraphics
313 [
314 text "
315 EAnnotation class
316 EModelElement class
317 EModelElement class UndefinedPart
318 "
319 fontSize 14
320 fontName "Consolas"
321 alignment "left"
322 anchor "tl"
323 borderDistance 6
324 ]
325 ]
326
327 node
328 [
329 id 9
330 graphics
331 [
332 w 269.5
333 h 124
334 type "rectangle"
335 fill "#FFFFFF"
336 fill2 "#FFFFFF"
337 outline "#000000"
338 ]
339 LabelGraphics
340 [
341 text "null"
342 outline "#000000"
343 fill "#FFFFFF"
344 fontSize 16
345 fontName "Monospace"
346 autoSizePolicy "node_width"
347 anchor "t"
348 borderDistance 0.0
349 ]
350 LabelGraphics
351 [
352 text "
353 EClassifier class
354 EDataType class
355 EEnum class
356 EModelElement class
357 ENamedElement class
358 EModelElement class UndefinedPart
359 ENamedElement class UndefinedPart
360 "
361 fontSize 14
362 fontName "Consolas"
363 alignment "left"
364 anchor "tl"
365 borderDistance 6
366 ]
367 ]
368
369 node
370 [
371 id 10
372 graphics
373 [
374 w 269.5
375 h 68
376 type "rectangle"
377 fill "#FFFFFF"
378 fill2 "#FFFFFF"
379 outline "#000000"
380 ]
381 LabelGraphics
382 [
383 text "null"
384 outline "#000000"
385 fill "#FFFFFF"
386 fontSize 16
387 fontName "Monospace"
388 autoSizePolicy "node_width"
389 anchor "t"
390 borderDistance 0.0
391 ]
392 LabelGraphics
393 [
394 text "
395 EAnnotation class
396 EModelElement class
397 EModelElement class UndefinedPart
398 "
399 fontSize 14
400 fontName "Consolas"
401 alignment "left"
402 anchor "tl"
403 borderDistance 6
404 ]
405 ]
406
407 node
408 [
409 id 11
410 graphics
411 [
412 w 269.5
413 h 110
414 type "rectangle"
415 fill "#FFFFFF"
416 fill2 "#FFFFFF"
417 outline "#000000"
418 ]
419 LabelGraphics
420 [
421 text "null"
422 outline "#000000"
423 fill "#FFFFFF"
424 fontSize 16
425 fontName "Monospace"
426 autoSizePolicy "node_width"
427 anchor "t"
428 borderDistance 0.0
429 ]
430 LabelGraphics
431 [
432 text "
433 EClass class
434 EClassifier class
435 EModelElement class
436 ENamedElement class
437 EModelElement class UndefinedPart
438 ENamedElement class UndefinedPart
439 "
440 fontSize 14
441 fontName "Consolas"
442 alignment "left"
443 anchor "tl"
444 borderDistance 6
445 ]
446 ]
447
448 node
449 [
450 id 12
451 graphics
452 [
453 w 269.5
454 h 124
455 type "rectangle"
456 fill "#FFFFFF"
457 fill2 "#FFFFFF"
458 outline "#000000"
459 ]
460 LabelGraphics
461 [
462 text "null"
463 outline "#000000"
464 fill "#FFFFFF"
465 fontSize 16
466 fontName "Monospace"
467 autoSizePolicy "node_width"
468 anchor "t"
469 borderDistance 0.0
470 ]
471 LabelGraphics
472 [
473 text "
474 EModelElement class
475 ENamedElement class
476 EReference class
477 EStructuralFeature class
478 ETypedElement class
479 EModelElement class UndefinedPart
480 ENamedElement class UndefinedPart
481 "
482 fontSize 14
483 fontName "Consolas"
484 alignment "left"
485 anchor "tl"
486 borderDistance 6
487 ]
488 ]
489
490 node
491 [
492 id 13
493 graphics
494 [
495 w 112.2
496 h 26
497 type "rectangle"
498 fill "#FFFFFF"
499 fill2 "#FFFFFF"
500 outline "#000000"
501 ]
502 LabelGraphics
503 [
504 text "New Integers"
505 outline "#000000"
506 fill "#FFFFFF"
507 fontSize 16
508 fontName "Monospace"
509 autoSizePolicy "node_width"
510 anchor "t"
511 borderDistance 0.0
512 ]
513 LabelGraphics
514 [
515 text "
516 "
517 fontSize 14
518 fontName "Consolas"
519 alignment "left"
520 anchor "tl"
521 borderDistance 6
522 ]
523 ]
524
525 node
526 [
527 id 14
528 graphics
529 [
530 w 85.80000000000001
531 h 26
532 type "rectangle"
533 fill "#FFFFFF"
534 fill2 "#FFFFFF"
535 outline "#000000"
536 ]
537 LabelGraphics
538 [
539 text "New Reals"
540 outline "#000000"
541 fill "#FFFFFF"
542 fontSize 16
543 fontName "Monospace"
544 autoSizePolicy "node_width"
545 anchor "t"
546 borderDistance 0.0
547 ]
548 LabelGraphics
549 [
550 text "
551 "
552 fontSize 14
553 fontName "Consolas"
554 alignment "left"
555 anchor "tl"
556 borderDistance 6
557 ]
558 ]
559
560 node
561 [
562 id 15
563 graphics
564 [
565 w 103.4
566 h 26
567 type "rectangle"
568 fill "#FFFFFF"
569 fill2 "#FFFFFF"
570 outline "#000000"
571 ]
572 LabelGraphics
573 [
574 text "New Strings"
575 outline "#000000"
576 fill "#FFFFFF"
577 fontSize 16
578 fontName "Monospace"
579 autoSizePolicy "node_width"
580 anchor "t"
581 borderDistance 0.0
582 ]
583 LabelGraphics
584 [
585 text "
586 "
587 fontSize 14
588 fontName "Consolas"
589 alignment "left"
590 anchor "tl"
591 borderDistance 6
592 ]
593 ]
594
595 node
596 [
597 id 16
598 graphics
599 [
600 w 103.4
601 h 26
602 type "rectangle"
603 fill "#FFFFFF"
604 fill2 "#FFFFFF"
605 outline "#000000"
606 ]
607 LabelGraphics
608 [
609 text "New Objects"
610 outline "#000000"
611 fill "#FFFFFF"
612 fontSize 16
613 fontName "Monospace"
614 autoSizePolicy "node_width"
615 anchor "t"
616 borderDistance 0.0
617 ]
618 LabelGraphics
619 [
620 text "
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629 edge
630 [
631 source 8
632 target 0
633 graphics
634 [
635 fill "#000000"
636 targetArrow "standard"
637 ]
638 LabelGraphics
639 [
640 text "eModelElement reference EAnnotation"
641 fontSize 14
642 fontName "Consolas"
643 configuration "AutoFlippingLabel"
644 model "six_pos"
645 position "thead"
646 ]
647 ]
648 edge
649 [
650 source 10
651 target 0
652 graphics
653 [
654 fill "#000000"
655 targetArrow "standard"
656 ]
657 LabelGraphics
658 [
659 text "eModelElement reference EAnnotation"
660 fontSize 14
661 fontName "Consolas"
662 configuration "AutoFlippingLabel"
663 model "six_pos"
664 position "thead"
665 ]
666 ]
667 edge
668 [
669 source 11
670 target 11
671 graphics
672 [
673 fill "#000000"
674 targetArrow "standard"
675 ]
676 LabelGraphics
677 [
678 text "eSuperTypes reference EClass"
679 fontSize 14
680 fontName "Consolas"
681 configuration "AutoFlippingLabel"
682 model "six_pos"
683 position "thead"
684 ]
685 ]
686 edge
687 [
688 source 11
689 target 12
690 graphics
691 [
692 fill "#000000"
693 targetArrow "standard"
694 ]
695 LabelGraphics
696 [
697 text "eReferences reference EClass"
698 fontSize 14
699 fontName "Consolas"
700 configuration "AutoFlippingLabel"
701 model "six_pos"
702 position "thead"
703 ]
704 ]
705 edge
706 [
707 source 11
708 target 12
709 graphics
710 [
711 fill "#000000"
712 targetArrow "standard"
713 ]
714 LabelGraphics
715 [
716 text "eAllStructuralFeatures reference EClass"
717 fontSize 14
718 fontName "Consolas"
719 configuration "AutoFlippingLabel"
720 model "six_pos"
721 position "thead"
722 ]
723 ]
724 edge
725 [
726 source 11
727 target 11
728 graphics
729 [
730 fill "#000000"
731 targetArrow "standard"
732 ]
733 LabelGraphics
734 [
735 text "eAllSuperTypes reference EClass"
736 fontSize 14
737 fontName "Consolas"
738 configuration "AutoFlippingLabel"
739 model "six_pos"
740 position "thead"
741 ]
742 ]
743 edge
744 [
745 source 11
746 target 12
747 graphics
748 [
749 fill "#000000"
750 width 3
751 targetArrow "standard"
752 ]
753 LabelGraphics
754 [
755 text "eStructuralFeatures reference EClass"
756 fontSize 14
757 fontName "Consolas"
758 configuration "AutoFlippingLabel"
759 model "six_pos"
760 position "thead"
761 ]
762 ]
763 edge
764 [
765 source 9
766 target 0
767 graphics
768 [
769 fill "#000000"
770 targetArrow "standard"
771 ]
772 LabelGraphics
773 [
774 text "ePackage reference EClassifier"
775 fontSize 14
776 fontName "Consolas"
777 configuration "AutoFlippingLabel"
778 model "six_pos"
779 position "thead"
780 ]
781 ]
782 edge
783 [
784 source 11
785 target 0
786 graphics
787 [
788 fill "#000000"
789 targetArrow "standard"
790 ]
791 LabelGraphics
792 [
793 text "ePackage reference EClassifier"
794 fontSize 14
795 fontName "Consolas"
796 configuration "AutoFlippingLabel"
797 model "six_pos"
798 position "thead"
799 ]
800 ]
801 edge
802 [
803 source 0
804 target 8
805 graphics
806 [
807 fill "#000000"
808 width 3
809 targetArrow "standard"
810 ]
811 LabelGraphics
812 [
813 text "eAnnotations reference EModelElement"
814 fontSize 14
815 fontName "Consolas"
816 configuration "AutoFlippingLabel"
817 model "six_pos"
818 position "thead"
819 ]
820 ]
821 edge
822 [
823 source 0
824 target 10
825 graphics
826 [
827 fill "#000000"
828 width 3
829 targetArrow "standard"
830 ]
831 LabelGraphics
832 [
833 text "eAnnotations reference EModelElement"
834 fontSize 14
835 fontName "Consolas"
836 configuration "AutoFlippingLabel"
837 model "six_pos"
838 position "thead"
839 ]
840 ]
841 edge
842 [
843 source 0
844 target 9
845 graphics
846 [
847 fill "#000000"
848 width 3
849 targetArrow "standard"
850 ]
851 LabelGraphics
852 [
853 text "eClassifiers reference EPackage"
854 fontSize 14
855 fontName "Consolas"
856 configuration "AutoFlippingLabel"
857 model "six_pos"
858 position "thead"
859 ]
860 ]
861 edge
862 [
863 source 0
864 target 11
865 graphics
866 [
867 fill "#000000"
868 width 3
869 targetArrow "standard"
870 ]
871 LabelGraphics
872 [
873 text "eClassifiers reference EPackage"
874 fontSize 14
875 fontName "Consolas"
876 configuration "AutoFlippingLabel"
877 model "six_pos"
878 position "thead"
879 ]
880 ]
881 edge
882 [
883 source 12
884 target 12
885 graphics
886 [
887 fill "#000000"
888 targetArrow "standard"
889 ]
890 LabelGraphics
891 [
892 text "eOpposite reference EReference"
893 fontSize 14
894 fontName "Consolas"
895 configuration "AutoFlippingLabel"
896 model "six_pos"
897 position "thead"
898 ]
899 ]
900 edge
901 [
902 source 12
903 target 11
904 graphics
905 [
906 fill "#000000"
907 targetArrow "standard"
908 ]
909 LabelGraphics
910 [
911 text "eReferenceType reference EReference"
912 fontSize 14
913 fontName "Consolas"
914 configuration "AutoFlippingLabel"
915 model "six_pos"
916 position "thead"
917 ]
918 ]
919 edge
920 [
921 source 12
922 target 11
923 graphics
924 [
925 fill "#000000"
926 targetArrow "standard"
927 ]
928 LabelGraphics
929 [
930 text "eContainingClass reference EStructuralFeature"
931 fontSize 14
932 fontName "Consolas"
933 configuration "AutoFlippingLabel"
934 model "six_pos"
935 position "thead"
936 ]
937 ]
938 edge
939 [
940 source 12
941 target 11
942 graphics
943 [
944 fill "#000000"
945 targetArrow "standard"
946 ]
947 LabelGraphics
948 [
949 text "eType reference ETypedElement"
950 fontSize 14
951 fontName "Consolas"
952 configuration "AutoFlippingLabel"
953 model "six_pos"
954 position "thead"
955 ]
956 ]
957 edge
958 [
959 source 8
960 target 7
961 graphics
962 [
963 fill "#000000"
964 targetArrow "standard"
965 ]
966 LabelGraphics
967 [
968 text "source attribute EAnnotation"
969 fontSize 14
970 fontName "Consolas"
971 configuration "AutoFlippingLabel"
972 model "six_pos"
973 position "thead"
974 ]
975 ]
976 edge
977 [
978 source 10
979 target 6
980 graphics
981 [
982 fill "#000000"
983 targetArrow "standard"
984 ]
985 LabelGraphics
986 [
987 text "source attribute EAnnotation"
988 fontSize 14
989 fontName "Consolas"
990 configuration "AutoFlippingLabel"
991 model "six_pos"
992 position "thead"
993 ]
994 ]
995 edge
996 [
997 source 11
998 target 2
999 graphics
1000 [
1001 fill "#000000"
1002 targetArrow "standard"
1003 ]
1004 LabelGraphics
1005 [
1006 text "abstract attribute EClass"
1007 fontSize 14
1008 fontName "Consolas"
1009 configuration "AutoFlippingLabel"
1010 model "six_pos"
1011 position "thead"
1012 ]
1013 ]
1014 edge
1015 [
1016 source 11
1017 target 1
1018 graphics
1019 [
1020 fill "#000000"
1021 targetArrow "standard"
1022 ]
1023 LabelGraphics
1024 [
1025 text "interface attribute EClass"
1026 fontSize 14
1027 fontName "Consolas"
1028 configuration "AutoFlippingLabel"
1029 model "six_pos"
1030 position "thead"
1031 ]
1032 ]
1033 edge
1034 [
1035 source 11
1036 target 7
1037 graphics
1038 [
1039 fill "#000000"
1040 targetArrow "standard"
1041 ]
1042 LabelGraphics
1043 [
1044 text "instanceClassName attribute EClassifier"
1045 fontSize 14
1046 fontName "Consolas"
1047 configuration "AutoFlippingLabel"
1048 model "six_pos"
1049 position "thead"
1050 ]
1051 ]
1052 edge
1053 [
1054 source 11
1055 target 7
1056 graphics
1057 [
1058 fill "#000000"
1059 targetArrow "standard"
1060 ]
1061 LabelGraphics
1062 [
1063 text "instanceTypeName attribute EClassifier"
1064 fontSize 14
1065 fontName "Consolas"
1066 configuration "AutoFlippingLabel"
1067 model "six_pos"
1068 position "thead"
1069 ]
1070 ]
1071 edge
1072 [
1073 source 9
1074 target 7
1075 graphics
1076 [
1077 fill "#000000"
1078 targetArrow "standard"
1079 ]
1080 LabelGraphics
1081 [
1082 text "instanceTypeName attribute EClassifier"
1083 fontSize 14
1084 fontName "Consolas"
1085 configuration "AutoFlippingLabel"
1086 model "six_pos"
1087 position "thead"
1088 ]
1089 ]
1090 edge
1091 [
1092 source 9
1093 target 2
1094 graphics
1095 [
1096 fill "#000000"
1097 targetArrow "standard"
1098 ]
1099 LabelGraphics
1100 [
1101 text "serializable attribute EDataType"
1102 fontSize 14
1103 fontName "Consolas"
1104 configuration "AutoFlippingLabel"
1105 model "six_pos"
1106 position "thead"
1107 ]
1108 ]
1109 edge
1110 [
1111 source 0
1112 target 7
1113 graphics
1114 [
1115 fill "#000000"
1116 targetArrow "standard"
1117 ]
1118 LabelGraphics
1119 [
1120 text "name attribute ENamedElement"
1121 fontSize 14
1122 fontName "Consolas"
1123 configuration "AutoFlippingLabel"
1124 model "six_pos"
1125 position "thead"
1126 ]
1127 ]
1128 edge
1129 [
1130 source 12
1131 target 6
1132 graphics
1133 [
1134 fill "#000000"
1135 targetArrow "standard"
1136 ]
1137 LabelGraphics
1138 [
1139 text "name attribute ENamedElement"
1140 fontSize 14
1141 fontName "Consolas"
1142 configuration "AutoFlippingLabel"
1143 model "six_pos"
1144 position "thead"
1145 ]
1146 ]
1147 edge
1148 [
1149 source 11
1150 target 7
1151 graphics
1152 [
1153 fill "#000000"
1154 targetArrow "standard"
1155 ]
1156 LabelGraphics
1157 [
1158 text "name attribute ENamedElement"
1159 fontSize 14
1160 fontName "Consolas"
1161 configuration "AutoFlippingLabel"
1162 model "six_pos"
1163 position "thead"
1164 ]
1165 ]
1166 edge
1167 [
1168 source 9
1169 target 7
1170 graphics
1171 [
1172 fill "#000000"
1173 targetArrow "standard"
1174 ]
1175 LabelGraphics
1176 [
1177 text "name attribute ENamedElement"
1178 fontSize 14
1179 fontName "Consolas"
1180 configuration "AutoFlippingLabel"
1181 model "six_pos"
1182 position "thead"
1183 ]
1184 ]
1185 edge
1186 [
1187 source 0
1188 target 7
1189 graphics
1190 [
1191 fill "#000000"
1192 targetArrow "standard"
1193 ]
1194 LabelGraphics
1195 [
1196 text "nsURI attribute EPackage"
1197 fontSize 14
1198 fontName "Consolas"
1199 configuration "AutoFlippingLabel"
1200 model "six_pos"
1201 position "thead"
1202 ]
1203 ]
1204 edge
1205 [
1206 source 0
1207 target 7
1208 graphics
1209 [
1210 fill "#000000"
1211 targetArrow "standard"
1212 ]
1213 LabelGraphics
1214 [
1215 text "nsPrefix attribute EPackage"
1216 fontSize 14
1217 fontName "Consolas"
1218 configuration "AutoFlippingLabel"
1219 model "six_pos"
1220 position "thead"
1221 ]
1222 ]
1223 edge
1224 [
1225 source 12
1226 target 2
1227 graphics
1228 [
1229 fill "#000000"
1230 targetArrow "standard"
1231 ]
1232 LabelGraphics
1233 [
1234 text "containment attribute EReference"
1235 fontSize 14
1236 fontName "Consolas"
1237 configuration "AutoFlippingLabel"
1238 model "six_pos"
1239 position "thead"
1240 ]
1241 ]
1242 edge
1243 [
1244 source 12
1245 target 2
1246 graphics
1247 [
1248 fill "#000000"
1249 targetArrow "standard"
1250 ]
1251 LabelGraphics
1252 [
1253 text "container attribute EReference"
1254 fontSize 14
1255 fontName "Consolas"
1256 configuration "AutoFlippingLabel"
1257 model "six_pos"
1258 position "thead"
1259 ]
1260 ]
1261 edge
1262 [
1263 source 12
1264 target 2
1265 graphics
1266 [
1267 fill "#000000"
1268 targetArrow "standard"
1269 ]
1270 LabelGraphics
1271 [
1272 text "changeable attribute EStructuralFeature"
1273 fontSize 14
1274 fontName "Consolas"
1275 configuration "AutoFlippingLabel"
1276 model "six_pos"
1277 position "thead"
1278 ]
1279 ]
1280 edge
1281 [
1282 source 12
1283 target 2
1284 graphics
1285 [
1286 fill "#000000"
1287 targetArrow "standard"
1288 ]
1289 LabelGraphics
1290 [
1291 text "volatile attribute EStructuralFeature"
1292 fontSize 14
1293 fontName "Consolas"
1294 configuration "AutoFlippingLabel"
1295 model "six_pos"
1296 position "thead"
1297 ]
1298 ]
1299 edge
1300 [
1301 source 12
1302 target 1
1303 graphics
1304 [
1305 fill "#000000"
1306 targetArrow "standard"
1307 ]
1308 LabelGraphics
1309 [
1310 text "transient attribute EStructuralFeature"
1311 fontSize 14
1312 fontName "Consolas"
1313 configuration "AutoFlippingLabel"
1314 model "six_pos"
1315 position "thead"
1316 ]
1317 ]
1318 edge
1319 [
1320 source 12
1321 target 7
1322 graphics
1323 [
1324 fill "#000000"
1325 targetArrow "standard"
1326 ]
1327 LabelGraphics
1328 [
1329 text "defaultValueLiteral attribute EStructuralFeature"
1330 fontSize 14
1331 fontName "Consolas"
1332 configuration "AutoFlippingLabel"
1333 model "six_pos"
1334 position "thead"
1335 ]
1336 ]
1337 edge
1338 [
1339 source 12
1340 target 2
1341 graphics
1342 [
1343 fill "#000000"
1344 targetArrow "standard"
1345 ]
1346 LabelGraphics
1347 [
1348 text "unsettable attribute EStructuralFeature"
1349 fontSize 14
1350 fontName "Consolas"
1351 configuration "AutoFlippingLabel"
1352 model "six_pos"
1353 position "thead"
1354 ]
1355 ]
1356 edge
1357 [
1358 source 12
1359 target 1
1360 graphics
1361 [
1362 fill "#000000"
1363 targetArrow "standard"
1364 ]
1365 LabelGraphics
1366 [
1367 text "derived attribute EStructuralFeature"
1368 fontSize 14
1369 fontName "Consolas"
1370 configuration "AutoFlippingLabel"
1371 model "six_pos"
1372 position "thead"
1373 ]
1374 ]
1375 edge
1376 [
1377 source 12
1378 target 1
1379 graphics
1380 [
1381 fill "#000000"
1382 targetArrow "standard"
1383 ]
1384 LabelGraphics
1385 [
1386 text "ordered attribute ETypedElement"
1387 fontSize 14
1388 fontName "Consolas"
1389 configuration "AutoFlippingLabel"
1390 model "six_pos"
1391 position "thead"
1392 ]
1393 ]
1394 edge
1395 [
1396 source 12
1397 target 1
1398 graphics
1399 [
1400 fill "#000000"
1401 targetArrow "standard"
1402 ]
1403 LabelGraphics
1404 [
1405 text "unique attribute ETypedElement"
1406 fontSize 14
1407 fontName "Consolas"
1408 configuration "AutoFlippingLabel"
1409 model "six_pos"
1410 position "thead"
1411 ]
1412 ]
1413 edge
1414 [
1415 source 12
1416 target 4
1417 graphics
1418 [
1419 fill "#000000"
1420 targetArrow "standard"
1421 ]
1422 LabelGraphics
1423 [
1424 text "lowerBound attribute ETypedElement"
1425 fontSize 14
1426 fontName "Consolas"
1427 configuration "AutoFlippingLabel"
1428 model "six_pos"
1429 position "thead"
1430 ]
1431 ]
1432 edge
1433 [
1434 source 12
1435 target 5
1436 graphics
1437 [
1438 fill "#000000"
1439 targetArrow "standard"
1440 ]
1441 LabelGraphics
1442 [
1443 text "upperBound attribute ETypedElement"
1444 fontSize 14
1445 fontName "Consolas"
1446 configuration "AutoFlippingLabel"
1447 model "six_pos"
1448 position "thead"
1449 ]
1450 ]
1451 edge
1452 [
1453 source 12
1454 target 1
1455 graphics
1456 [
1457 fill "#000000"
1458 targetArrow "standard"
1459 ]
1460 LabelGraphics
1461 [
1462 text "many attribute ETypedElement"
1463 fontSize 14
1464 fontName "Consolas"
1465 configuration "AutoFlippingLabel"
1466 model "six_pos"
1467 position "thead"
1468 ]
1469 ]
1470 edge
1471 [
1472 source 12
1473 target 2
1474 graphics
1475 [
1476 fill "#000000"
1477 targetArrow "standard"
1478 ]
1479 LabelGraphics
1480 [
1481 text "required attribute ETypedElement"
1482 fontSize 14
1483 fontName "Consolas"
1484 configuration "AutoFlippingLabel"
1485 model "six_pos"
1486 position "thead"
1487 ]
1488 ]
1489]
1490graph
1491[
1492 node
1493 [
1494 id 0
1495 graphics
1496 [
1497 w 254.10000000000002
1498 h 110
1499 type "rectangle"
1500 fill "#FFFFFF"
1501 fill2 "#FFFFFF"
1502 outline "#000000"
1503 ]
1504 LabelGraphics
1505 [
1506 text "o 1"
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 EModelElement class DefinedPart
1519 ENamedElement class DefinedPart
1520 EPackage class DefinedPart
1521 EModelElement class
1522 ENamedElement class
1523 EPackage class
1524 "
1525 fontSize 14
1526 fontName "Consolas"
1527 alignment "left"
1528 anchor "tl"
1529 borderDistance 6
1530 ]
1531 ]
1532
1533 node
1534 [
1535 id 1
1536 graphics
1537 [
1538 w 41.800000000000004
1539 h 26
1540 type "rectangle"
1541 fill "#FFFFFF"
1542 fill2 "#FFFFFF"
1543 outline "#000000"
1544 ]
1545 LabelGraphics
1546 [
1547 text "true"
1548 outline "#000000"
1549 fill "#FFFFFF"
1550 fontSize 16
1551 fontName "Monospace"
1552 autoSizePolicy "node_width"
1553 anchor "t"
1554 borderDistance 0.0
1555 ]
1556 LabelGraphics
1557 [
1558 text "
1559 "
1560 fontSize 14
1561 fontName "Consolas"
1562 alignment "left"
1563 anchor "tl"
1564 borderDistance 6
1565 ]
1566 ]
1567
1568 node
1569 [
1570 id 2
1571 graphics
1572 [
1573 w 50.6
1574 h 26
1575 type "rectangle"
1576 fill "#FFFFFF"
1577 fill2 "#FFFFFF"
1578 outline "#000000"
1579 ]
1580 LabelGraphics
1581 [
1582 text "false"
1583 outline "#000000"
1584 fill "#FFFFFF"
1585 fontSize 16
1586 fontName "Monospace"
1587 autoSizePolicy "node_width"
1588 anchor "t"
1589 borderDistance 0.0
1590 ]
1591 LabelGraphics
1592 [
1593 text "
1594 "
1595 fontSize 14
1596 fontName "Consolas"
1597 alignment "left"
1598 anchor "tl"
1599 borderDistance 6
1600 ]
1601 ]
1602
1603 node
1604 [
1605 id 3
1606 graphics
1607 [
1608 w 24.200000000000003
1609 h 26
1610 type "rectangle"
1611 fill "#FFFFFF"
1612 fill2 "#FFFFFF"
1613 outline "#000000"
1614 ]
1615 LabelGraphics
1616 [
1617 text "-1"
1618 outline "#000000"
1619 fill "#FFFFFF"
1620 fontSize 16
1621 fontName "Monospace"
1622 autoSizePolicy "node_width"
1623 anchor "t"
1624 borderDistance 0.0
1625 ]
1626 LabelGraphics
1627 [
1628 text "
1629 "
1630 fontSize 14
1631 fontName "Consolas"
1632 alignment "left"
1633 anchor "tl"
1634 borderDistance 6
1635 ]
1636 ]
1637
1638 node
1639 [
1640 id 4
1641 graphics
1642 [
1643 w 15.400000000000002
1644 h 26
1645 type "rectangle"
1646 fill "#FFFFFF"
1647 fill2 "#FFFFFF"
1648 outline "#000000"
1649 ]
1650 LabelGraphics
1651 [
1652 text "0"
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 "
1665 fontSize 14
1666 fontName "Consolas"
1667 alignment "left"
1668 anchor "tl"
1669 borderDistance 6
1670 ]
1671 ]
1672
1673 node
1674 [
1675 id 5
1676 graphics
1677 [
1678 w 15.400000000000002
1679 h 26
1680 type "rectangle"
1681 fill "#FFFFFF"
1682 fill2 "#FFFFFF"
1683 outline "#000000"
1684 ]
1685 LabelGraphics
1686 [
1687 text "1"
1688 outline "#000000"
1689 fill "#FFFFFF"
1690 fontSize 16
1691 fontName "Monospace"
1692 autoSizePolicy "node_width"
1693 anchor "t"
1694 borderDistance 0.0
1695 ]
1696 LabelGraphics
1697 [
1698 text "
1699 "
1700 fontSize 14
1701 fontName "Consolas"
1702 alignment "left"
1703 anchor "tl"
1704 borderDistance 6
1705 ]
1706 ]
1707
1708 node
1709 [
1710 id 6
1711 graphics
1712 [
1713 w 33.0
1714 h 26
1715 type "rectangle"
1716 fill "#FFFFFF"
1717 fill2 "#FFFFFF"
1718 outline "#000000"
1719 ]
1720 LabelGraphics
1721 [
1722 text ""A""
1723 outline "#000000"
1724 fill "#FFFFFF"
1725 fontSize 16
1726 fontName "Monospace"
1727 autoSizePolicy "node_width"
1728 anchor "t"
1729 borderDistance 0.0
1730 ]
1731 LabelGraphics
1732 [
1733 text "
1734 "
1735 fontSize 14
1736 fontName "Consolas"
1737 alignment "left"
1738 anchor "tl"
1739 borderDistance 6
1740 ]
1741 ]
1742
1743 node
1744 [
1745 id 7
1746 graphics
1747 [
1748 w 33.0
1749 h 26
1750 type "rectangle"
1751 fill "#FFFFFF"
1752 fill2 "#FFFFFF"
1753 outline "#000000"
1754 ]
1755 LabelGraphics
1756 [
1757 text ""B""
1758 outline "#000000"
1759 fill "#FFFFFF"
1760 fontSize 16
1761 fontName "Monospace"
1762 autoSizePolicy "node_width"
1763 anchor "t"
1764 borderDistance 0.0
1765 ]
1766 LabelGraphics
1767 [
1768 text "
1769 "
1770 fontSize 14
1771 fontName "Consolas"
1772 alignment "left"
1773 anchor "tl"
1774 borderDistance 6
1775 ]
1776 ]
1777
1778 node
1779 [
1780 id 8
1781 graphics
1782 [
1783 w 94.60000000000001
1784 h 26
1785 type "rectangle"
1786 fill "#FFFFFF"
1787 fill2 "#FFFFFF"
1788 outline "#000000"
1789 ]
1790 LabelGraphics
1791 [
1792 text ""nsPrefix""
1793 outline "#000000"
1794 fill "#FFFFFF"
1795 fontSize 16
1796 fontName "Monospace"
1797 autoSizePolicy "node_width"
1798 anchor "t"
1799 borderDistance 0.0
1800 ]
1801 LabelGraphics
1802 [
1803 text "
1804 "
1805 fontSize 14
1806 fontName "Consolas"
1807 alignment "left"
1808 anchor "tl"
1809 borderDistance 6
1810 ]
1811 ]
1812
1813 node
1814 [
1815 id 9
1816 graphics
1817 [
1818 w 68.2
1819 h 26
1820 type "rectangle"
1821 fill "#FFFFFF"
1822 fill2 "#FFFFFF"
1823 outline "#000000"
1824 ]
1825 LabelGraphics
1826 [
1827 text ""nsUri""
1828 outline "#000000"
1829 fill "#FFFFFF"
1830 fontSize 16
1831 fontName "Monospace"
1832 autoSizePolicy "node_width"
1833 anchor "t"
1834 borderDistance 0.0
1835 ]
1836 LabelGraphics
1837 [
1838 text "
1839 "
1840 fontSize 14
1841 fontName "Consolas"
1842 alignment "left"
1843 anchor "tl"
1844 borderDistance 6
1845 ]
1846 ]
1847
1848 node
1849 [
1850 id 10
1851 graphics
1852 [
1853 w 121.00000000000001
1854 h 26
1855 type "rectangle"
1856 fill "#FFFFFF"
1857 fill2 "#FFFFFF"
1858 outline "#000000"
1859 ]
1860 LabelGraphics
1861 [
1862 text ""packageName""
1863 outline "#000000"
1864 fill "#FFFFFF"
1865 fontSize 16
1866 fontName "Monospace"
1867 autoSizePolicy "node_width"
1868 anchor "t"
1869 borderDistance 0.0
1870 ]
1871 LabelGraphics
1872 [
1873 text "
1874 "
1875 fontSize 14
1876 fontName "Consolas"
1877 alignment "left"
1878 anchor "tl"
1879 borderDistance 6
1880 ]
1881 ]
1882
1883 node
1884 [
1885 id 11
1886 graphics
1887 [
1888 w 269.5
1889 h 124
1890 type "rectangle"
1891 fill "#FFFFFF"
1892 fill2 "#FFFFFF"
1893 outline "#000000"
1894 ]
1895 LabelGraphics
1896 [
1897 text "null"
1898 outline "#000000"
1899 fill "#FFFFFF"
1900 fontSize 16
1901 fontName "Monospace"
1902 autoSizePolicy "node_width"
1903 anchor "t"
1904 borderDistance 0.0
1905 ]
1906 LabelGraphics
1907 [
1908 text "
1909 EClassifier class
1910 EDataType class
1911 EEnum class
1912 EModelElement class
1913 ENamedElement class
1914 EModelElement class UndefinedPart
1915 ENamedElement class UndefinedPart
1916 "
1917 fontSize 14
1918 fontName "Consolas"
1919 alignment "left"
1920 anchor "tl"
1921 borderDistance 6
1922 ]
1923 ]
1924
1925 node
1926 [
1927 id 12
1928 graphics
1929 [
1930 w 269.5
1931 h 110
1932 type "rectangle"
1933 fill "#FFFFFF"
1934 fill2 "#FFFFFF"
1935 outline "#000000"
1936 ]
1937 LabelGraphics
1938 [
1939 text "null"
1940 outline "#000000"
1941 fill "#FFFFFF"
1942 fontSize 16
1943 fontName "Monospace"
1944 autoSizePolicy "node_width"
1945 anchor "t"
1946 borderDistance 0.0
1947 ]
1948 LabelGraphics
1949 [
1950 text "
1951 EClassifier class
1952 EDataType class
1953 EModelElement class
1954 ENamedElement class
1955 EModelElement class UndefinedPart
1956 ENamedElement class UndefinedPart
1957 "
1958 fontSize 14
1959 fontName "Consolas"
1960 alignment "left"
1961 anchor "tl"
1962 borderDistance 6
1963 ]
1964 ]
1965
1966 node
1967 [
1968 id 13
1969 graphics
1970 [
1971 w 269.5
1972 h 68
1973 type "rectangle"
1974 fill "#FFFFFF"
1975 fill2 "#FFFFFF"
1976 outline "#000000"
1977 ]
1978 LabelGraphics
1979 [
1980 text "null"
1981 outline "#000000"
1982 fill "#FFFFFF"
1983 fontSize 16
1984 fontName "Monospace"
1985 autoSizePolicy "node_width"
1986 anchor "t"
1987 borderDistance 0.0
1988 ]
1989 LabelGraphics
1990 [
1991 text "
1992 EAnnotation class
1993 EModelElement class
1994 EModelElement class UndefinedPart
1995 "
1996 fontSize 14
1997 fontName "Consolas"
1998 alignment "left"
1999 anchor "tl"
2000 borderDistance 6
2001 ]
2002 ]
2003
2004 node
2005 [
2006 id 14
2007 graphics
2008 [
2009 w 269.5
2010 h 124
2011 type "rectangle"
2012 fill "#FFFFFF"
2013 fill2 "#FFFFFF"
2014 outline "#000000"
2015 ]
2016 LabelGraphics
2017 [
2018 text "null"
2019 outline "#000000"
2020 fill "#FFFFFF"
2021 fontSize 16
2022 fontName "Monospace"
2023 autoSizePolicy "node_width"
2024 anchor "t"
2025 borderDistance 0.0
2026 ]
2027 LabelGraphics
2028 [
2029 text "
2030 EClassifier class
2031 EDataType class
2032 EEnum class
2033 EModelElement class
2034 ENamedElement class
2035 EModelElement class UndefinedPart
2036 ENamedElement class UndefinedPart
2037 "
2038 fontSize 14
2039 fontName "Consolas"
2040 alignment "left"
2041 anchor "tl"
2042 borderDistance 6
2043 ]
2044 ]
2045
2046 node
2047 [
2048 id 15
2049 graphics
2050 [
2051 w 269.5
2052 h 96
2053 type "rectangle"
2054 fill "#FFFFFF"
2055 fill2 "#FFFFFF"
2056 outline "#000000"
2057 ]
2058 LabelGraphics
2059 [
2060 text "null"
2061 outline "#000000"
2062 fill "#FFFFFF"
2063 fontSize 16
2064 fontName "Monospace"
2065 autoSizePolicy "node_width"
2066 anchor "t"
2067 borderDistance 0.0
2068 ]
2069 LabelGraphics
2070 [
2071 text "
2072 EEnumLiteral class
2073 EModelElement class
2074 ENamedElement class
2075 EModelElement class UndefinedPart
2076 ENamedElement class UndefinedPart
2077 "
2078 fontSize 14
2079 fontName "Consolas"
2080 alignment "left"
2081 anchor "tl"
2082 borderDistance 6
2083 ]
2084 ]
2085
2086 node
2087 [
2088 id 16
2089 graphics
2090 [
2091 w 112.2
2092 h 26
2093 type "rectangle"
2094 fill "#FFFFFF"
2095 fill2 "#FFFFFF"
2096 outline "#000000"
2097 ]
2098 LabelGraphics
2099 [
2100 text "New Integers"
2101 outline "#000000"
2102 fill "#FFFFFF"
2103 fontSize 16
2104 fontName "Monospace"
2105 autoSizePolicy "node_width"
2106 anchor "t"
2107 borderDistance 0.0
2108 ]
2109 LabelGraphics
2110 [
2111 text "
2112 "
2113 fontSize 14
2114 fontName "Consolas"
2115 alignment "left"
2116 anchor "tl"
2117 borderDistance 6
2118 ]
2119 ]
2120
2121 node
2122 [
2123 id 17
2124 graphics
2125 [
2126 w 85.80000000000001
2127 h 26
2128 type "rectangle"
2129 fill "#FFFFFF"
2130 fill2 "#FFFFFF"
2131 outline "#000000"
2132 ]
2133 LabelGraphics
2134 [
2135 text "New Reals"
2136 outline "#000000"
2137 fill "#FFFFFF"
2138 fontSize 16
2139 fontName "Monospace"
2140 autoSizePolicy "node_width"
2141 anchor "t"
2142 borderDistance 0.0
2143 ]
2144 LabelGraphics
2145 [
2146 text "
2147 "
2148 fontSize 14
2149 fontName "Consolas"
2150 alignment "left"
2151 anchor "tl"
2152 borderDistance 6
2153 ]
2154 ]
2155
2156 node
2157 [
2158 id 18
2159 graphics
2160 [
2161 w 103.4
2162 h 26
2163 type "rectangle"
2164 fill "#FFFFFF"
2165 fill2 "#FFFFFF"
2166 outline "#000000"
2167 ]
2168 LabelGraphics
2169 [
2170 text "New Strings"
2171 outline "#000000"
2172 fill "#FFFFFF"
2173 fontSize 16
2174 fontName "Monospace"
2175 autoSizePolicy "node_width"
2176 anchor "t"
2177 borderDistance 0.0
2178 ]
2179 LabelGraphics
2180 [
2181 text "
2182 "
2183 fontSize 14
2184 fontName "Consolas"
2185 alignment "left"
2186 anchor "tl"
2187 borderDistance 6
2188 ]
2189 ]
2190
2191 node
2192 [
2193 id 19
2194 graphics
2195 [
2196 w 103.4
2197 h 26
2198 type "rectangle"
2199 fill "#FFFFFF"
2200 fill2 "#FFFFFF"
2201 outline "#000000"
2202 ]
2203 LabelGraphics
2204 [
2205 text "New Objects"
2206 outline "#000000"
2207 fill "#FFFFFF"
2208 fontSize 16
2209 fontName "Monospace"
2210 autoSizePolicy "node_width"
2211 anchor "t"
2212 borderDistance 0.0
2213 ]
2214 LabelGraphics
2215 [
2216 text "
2217 "
2218 fontSize 14
2219 fontName "Consolas"
2220 alignment "left"
2221 anchor "tl"
2222 borderDistance 6
2223 ]
2224 ]
2225 edge
2226 [
2227 source 13
2228 target 0
2229 graphics
2230 [
2231 fill "#000000"
2232 targetArrow "standard"
2233 ]
2234 LabelGraphics
2235 [
2236 text "eModelElement reference EAnnotation"
2237 fontSize 14
2238 fontName "Consolas"
2239 configuration "AutoFlippingLabel"
2240 model "six_pos"
2241 position "thead"
2242 ]
2243 ]
2244 edge
2245 [
2246 source 11
2247 target 0
2248 graphics
2249 [
2250 fill "#000000"
2251 targetArrow "standard"
2252 ]
2253 LabelGraphics
2254 [
2255 text "ePackage reference EClassifier"
2256 fontSize 14
2257 fontName "Consolas"
2258 configuration "AutoFlippingLabel"
2259 model "six_pos"
2260 position "thead"
2261 ]
2262 ]
2263 edge
2264 [
2265 source 12
2266 target 0
2267 graphics
2268 [
2269 fill "#000000"
2270 targetArrow "standard"
2271 ]
2272 LabelGraphics
2273 [
2274 text "ePackage reference EClassifier"
2275 fontSize 14
2276 fontName "Consolas"
2277 configuration "AutoFlippingLabel"
2278 model "six_pos"
2279 position "thead"
2280 ]
2281 ]
2282 edge
2283 [
2284 source 14
2285 target 0
2286 graphics
2287 [
2288 fill "#000000"
2289 targetArrow "standard"
2290 ]
2291 LabelGraphics
2292 [
2293 text "ePackage reference EClassifier"
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 15
2305 graphics
2306 [
2307 fill "#000000"
2308 width 3
2309 targetArrow "standard"
2310 ]
2311 LabelGraphics
2312 [
2313 text "eLiterals reference EEnum"
2314 fontSize 14
2315 fontName "Consolas"
2316 configuration "AutoFlippingLabel"
2317 model "six_pos"
2318 position "thead"
2319 ]
2320 ]
2321 edge
2322 [
2323 source 15
2324 target 14
2325 graphics
2326 [
2327 fill "#000000"
2328 targetArrow "standard"
2329 ]
2330 LabelGraphics
2331 [
2332 text "eEnum reference EEnumLiteral"
2333 fontSize 14
2334 fontName "Consolas"
2335 configuration "AutoFlippingLabel"
2336 model "six_pos"
2337 position "thead"
2338 ]
2339 ]
2340 edge
2341 [
2342 source 0
2343 target 13
2344 graphics
2345 [
2346 fill "#000000"
2347 width 3
2348 targetArrow "standard"
2349 ]
2350 LabelGraphics
2351 [
2352 text "eAnnotations reference EModelElement"
2353 fontSize 14
2354 fontName "Consolas"
2355 configuration "AutoFlippingLabel"
2356 model "six_pos"
2357 position "thead"
2358 ]
2359 ]
2360 edge
2361 [
2362 source 0
2363 target 11
2364 graphics
2365 [
2366 fill "#000000"
2367 width 3
2368 targetArrow "standard"
2369 ]
2370 LabelGraphics
2371 [
2372 text "eClassifiers reference EPackage"
2373 fontSize 14
2374 fontName "Consolas"
2375 configuration "AutoFlippingLabel"
2376 model "six_pos"
2377 position "thead"
2378 ]
2379 ]
2380 edge
2381 [
2382 source 0
2383 target 12
2384 graphics
2385 [
2386 fill "#000000"
2387 width 3
2388 targetArrow "standard"
2389 ]
2390 LabelGraphics
2391 [
2392 text "eClassifiers reference EPackage"
2393 fontSize 14
2394 fontName "Consolas"
2395 configuration "AutoFlippingLabel"
2396 model "six_pos"
2397 position "thead"
2398 ]
2399 ]
2400 edge
2401 [
2402 source 0
2403 target 14
2404 graphics
2405 [
2406 fill "#000000"
2407 width 3
2408 targetArrow "standard"
2409 ]
2410 LabelGraphics
2411 [
2412 text "eClassifiers reference EPackage"
2413 fontSize 14
2414 fontName "Consolas"
2415 configuration "AutoFlippingLabel"
2416 model "six_pos"
2417 position "thead"
2418 ]
2419 ]
2420 edge
2421 [
2422 source 13
2423 target 9
2424 graphics
2425 [
2426 fill "#000000"
2427 targetArrow "standard"
2428 ]
2429 LabelGraphics
2430 [
2431 text "source attribute EAnnotation"
2432 fontSize 14
2433 fontName "Consolas"
2434 configuration "AutoFlippingLabel"
2435 model "six_pos"
2436 position "thead"
2437 ]
2438 ]
2439 edge
2440 [
2441 source 11
2442 target 6
2443 graphics
2444 [
2445 fill "#000000"
2446 targetArrow "standard"
2447 ]
2448 LabelGraphics
2449 [
2450 text "instanceClassName attribute EClassifier"
2451 fontSize 14
2452 fontName "Consolas"
2453 configuration "AutoFlippingLabel"
2454 model "six_pos"
2455 position "thead"
2456 ]
2457 ]
2458 edge
2459 [
2460 source 12
2461 target 10
2462 graphics
2463 [
2464 fill "#000000"
2465 targetArrow "standard"
2466 ]
2467 LabelGraphics
2468 [
2469 text "instanceTypeName attribute EClassifier"
2470 fontSize 14
2471 fontName "Consolas"
2472 configuration "AutoFlippingLabel"
2473 model "six_pos"
2474 position "thead"
2475 ]
2476 ]
2477 edge
2478 [
2479 source 14
2480 target 8
2481 graphics
2482 [
2483 fill "#000000"
2484 targetArrow "standard"
2485 ]
2486 LabelGraphics
2487 [
2488 text "instanceTypeName attribute EClassifier"
2489 fontSize 14
2490 fontName "Consolas"
2491 configuration "AutoFlippingLabel"
2492 model "six_pos"
2493 position "thead"
2494 ]
2495 ]
2496 edge
2497 [
2498 source 12
2499 target 2
2500 graphics
2501 [
2502 fill "#000000"
2503 targetArrow "standard"
2504 ]
2505 LabelGraphics
2506 [
2507 text "serializable attribute EDataType"
2508 fontSize 14
2509 fontName "Consolas"
2510 configuration "AutoFlippingLabel"
2511 model "six_pos"
2512 position "thead"
2513 ]
2514 ]
2515 edge
2516 [
2517 source 14
2518 target 2
2519 graphics
2520 [
2521 fill "#000000"
2522 targetArrow "standard"
2523 ]
2524 LabelGraphics
2525 [
2526 text "serializable attribute EDataType"
2527 fontSize 14
2528 fontName "Consolas"
2529 configuration "AutoFlippingLabel"
2530 model "six_pos"
2531 position "thead"
2532 ]
2533 ]
2534 edge
2535 [
2536 source 0
2537 target 10
2538 graphics
2539 [
2540 fill "#000000"
2541 targetArrow "standard"
2542 ]
2543 LabelGraphics
2544 [
2545 text "name attribute ENamedElement"
2546 fontSize 14
2547 fontName "Consolas"
2548 configuration "AutoFlippingLabel"
2549 model "six_pos"
2550 position "thead"
2551 ]
2552 ]
2553 edge
2554 [
2555 source 11
2556 target 10
2557 graphics
2558 [
2559 fill "#000000"
2560 targetArrow "standard"
2561 ]
2562 LabelGraphics
2563 [
2564 text "name attribute ENamedElement"
2565 fontSize 14
2566 fontName "Consolas"
2567 configuration "AutoFlippingLabel"
2568 model "six_pos"
2569 position "thead"
2570 ]
2571 ]
2572 edge
2573 [
2574 source 12
2575 target 9
2576 graphics
2577 [
2578 fill "#000000"
2579 targetArrow "standard"
2580 ]
2581 LabelGraphics
2582 [
2583 text "name attribute ENamedElement"
2584 fontSize 14
2585 fontName "Consolas"
2586 configuration "AutoFlippingLabel"
2587 model "six_pos"
2588 position "thead"
2589 ]
2590 ]
2591 edge
2592 [
2593 source 0
2594 target 9
2595 graphics
2596 [
2597 fill "#000000"
2598 targetArrow "standard"
2599 ]
2600 LabelGraphics
2601 [
2602 text "nsURI attribute EPackage"
2603 fontSize 14
2604 fontName "Consolas"
2605 configuration "AutoFlippingLabel"
2606 model "six_pos"
2607 position "thead"
2608 ]
2609 ]
2610 edge
2611 [
2612 source 0
2613 target 8
2614 graphics
2615 [
2616 fill "#000000"
2617 targetArrow "standard"
2618 ]
2619 LabelGraphics
2620 [
2621 text "nsPrefix attribute EPackage"
2622 fontSize 14
2623 fontName "Consolas"
2624 configuration "AutoFlippingLabel"
2625 model "six_pos"
2626 position "thead"
2627 ]
2628 ]
2629]
diff --git a/Tests/Ecore-Plugin/outputs/models/1.png b/Tests/Ecore-Plugin/outputs/models/1.png
new file mode 100644
index 00000000..39e53424
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/1.png
Binary files differ
diff --git a/Tests/Ecore-Plugin/outputs/models/1.xmi b/Tests/Ecore-Plugin/outputs/models/1.xmi
new file mode 100644
index 00000000..cfd0f3d5
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/1.xmi
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eAnnotations>
4 <details/>
5 <details/>
6 <details/>
7 <details/>
8 </eAnnotations>
9</ecore:EPackage>
diff --git a/Tests/Ecore-Plugin/outputs/models/2.gml b/Tests/Ecore-Plugin/outputs/models/2.gml
new file mode 100644
index 00000000..e7b87333
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/2.gml
@@ -0,0 +1,2667 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 254.10000000000002
9 h 110
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "o 1"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 EModelElement class DefinedPart
30 ENamedElement class DefinedPart
31 EPackage class DefinedPart
32 EModelElement class
33 ENamedElement class
34 EPackage class
35 "
36 fontSize 14
37 fontName "Consolas"
38 alignment "left"
39 anchor "tl"
40 borderDistance 6
41 ]
42 ]
43
44 node
45 [
46 id 1
47 graphics
48 [
49 w 41.800000000000004
50 h 26
51 type "rectangle"
52 fill "#FFFFFF"
53 fill2 "#FFFFFF"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 text "true"
59 outline "#000000"
60 fill "#FFFFFF"
61 fontSize 16
62 fontName "Monospace"
63 autoSizePolicy "node_width"
64 anchor "t"
65 borderDistance 0.0
66 ]
67 LabelGraphics
68 [
69 text "
70 "
71 fontSize 14
72 fontName "Consolas"
73 alignment "left"
74 anchor "tl"
75 borderDistance 6
76 ]
77 ]
78
79 node
80 [
81 id 2
82 graphics
83 [
84 w 50.6
85 h 26
86 type "rectangle"
87 fill "#FFFFFF"
88 fill2 "#FFFFFF"
89 outline "#000000"
90 ]
91 LabelGraphics
92 [
93 text "false"
94 outline "#000000"
95 fill "#FFFFFF"
96 fontSize 16
97 fontName "Monospace"
98 autoSizePolicy "node_width"
99 anchor "t"
100 borderDistance 0.0
101 ]
102 LabelGraphics
103 [
104 text "
105 "
106 fontSize 14
107 fontName "Consolas"
108 alignment "left"
109 anchor "tl"
110 borderDistance 6
111 ]
112 ]
113
114 node
115 [
116 id 3
117 graphics
118 [
119 w 24.200000000000003
120 h 26
121 type "rectangle"
122 fill "#FFFFFF"
123 fill2 "#FFFFFF"
124 outline "#000000"
125 ]
126 LabelGraphics
127 [
128 text "-1"
129 outline "#000000"
130 fill "#FFFFFF"
131 fontSize 16
132 fontName "Monospace"
133 autoSizePolicy "node_width"
134 anchor "t"
135 borderDistance 0.0
136 ]
137 LabelGraphics
138 [
139 text "
140 "
141 fontSize 14
142 fontName "Consolas"
143 alignment "left"
144 anchor "tl"
145 borderDistance 6
146 ]
147 ]
148
149 node
150 [
151 id 4
152 graphics
153 [
154 w 15.400000000000002
155 h 26
156 type "rectangle"
157 fill "#FFFFFF"
158 fill2 "#FFFFFF"
159 outline "#000000"
160 ]
161 LabelGraphics
162 [
163 text "0"
164 outline "#000000"
165 fill "#FFFFFF"
166 fontSize 16
167 fontName "Monospace"
168 autoSizePolicy "node_width"
169 anchor "t"
170 borderDistance 0.0
171 ]
172 LabelGraphics
173 [
174 text "
175 "
176 fontSize 14
177 fontName "Consolas"
178 alignment "left"
179 anchor "tl"
180 borderDistance 6
181 ]
182 ]
183
184 node
185 [
186 id 5
187 graphics
188 [
189 w 15.400000000000002
190 h 26
191 type "rectangle"
192 fill "#FFFFFF"
193 fill2 "#FFFFFF"
194 outline "#000000"
195 ]
196 LabelGraphics
197 [
198 text "1"
199 outline "#000000"
200 fill "#FFFFFF"
201 fontSize 16
202 fontName "Monospace"
203 autoSizePolicy "node_width"
204 anchor "t"
205 borderDistance 0.0
206 ]
207 LabelGraphics
208 [
209 text "
210 "
211 fontSize 14
212 fontName "Consolas"
213 alignment "left"
214 anchor "tl"
215 borderDistance 6
216 ]
217 ]
218
219 node
220 [
221 id 6
222 graphics
223 [
224 w 33.0
225 h 26
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text ""A""
234 outline "#000000"
235 fill "#FFFFFF"
236 fontSize 16
237 fontName "Monospace"
238 autoSizePolicy "node_width"
239 anchor "t"
240 borderDistance 0.0
241 ]
242 LabelGraphics
243 [
244 text "
245 "
246 fontSize 14
247 fontName "Consolas"
248 alignment "left"
249 anchor "tl"
250 borderDistance 6
251 ]
252 ]
253
254 node
255 [
256 id 7
257 graphics
258 [
259 w 33.0
260 h 26
261 type "rectangle"
262 fill "#FFFFFF"
263 fill2 "#FFFFFF"
264 outline "#000000"
265 ]
266 LabelGraphics
267 [
268 text ""B""
269 outline "#000000"
270 fill "#FFFFFF"
271 fontSize 16
272 fontName "Monospace"
273 autoSizePolicy "node_width"
274 anchor "t"
275 borderDistance 0.0
276 ]
277 LabelGraphics
278 [
279 text "
280 "
281 fontSize 14
282 fontName "Consolas"
283 alignment "left"
284 anchor "tl"
285 borderDistance 6
286 ]
287 ]
288
289 node
290 [
291 id 8
292 graphics
293 [
294 w 269.5
295 h 68
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text "null"
304 outline "#000000"
305 fill "#FFFFFF"
306 fontSize 16
307 fontName "Monospace"
308 autoSizePolicy "node_width"
309 anchor "t"
310 borderDistance 0.0
311 ]
312 LabelGraphics
313 [
314 text "
315 EAnnotation class
316 EModelElement class
317 EModelElement class UndefinedPart
318 "
319 fontSize 14
320 fontName "Consolas"
321 alignment "left"
322 anchor "tl"
323 borderDistance 6
324 ]
325 ]
326
327 node
328 [
329 id 9
330 graphics
331 [
332 w 269.5
333 h 124
334 type "rectangle"
335 fill "#FFFFFF"
336 fill2 "#FFFFFF"
337 outline "#000000"
338 ]
339 LabelGraphics
340 [
341 text "null"
342 outline "#000000"
343 fill "#FFFFFF"
344 fontSize 16
345 fontName "Monospace"
346 autoSizePolicy "node_width"
347 anchor "t"
348 borderDistance 0.0
349 ]
350 LabelGraphics
351 [
352 text "
353 EClassifier class
354 EDataType class
355 EEnum class
356 EModelElement class
357 ENamedElement class
358 EModelElement class UndefinedPart
359 ENamedElement class UndefinedPart
360 "
361 fontSize 14
362 fontName "Consolas"
363 alignment "left"
364 anchor "tl"
365 borderDistance 6
366 ]
367 ]
368
369 node
370 [
371 id 10
372 graphics
373 [
374 w 269.5
375 h 68
376 type "rectangle"
377 fill "#FFFFFF"
378 fill2 "#FFFFFF"
379 outline "#000000"
380 ]
381 LabelGraphics
382 [
383 text "null"
384 outline "#000000"
385 fill "#FFFFFF"
386 fontSize 16
387 fontName "Monospace"
388 autoSizePolicy "node_width"
389 anchor "t"
390 borderDistance 0.0
391 ]
392 LabelGraphics
393 [
394 text "
395 EAnnotation class
396 EModelElement class
397 EModelElement class UndefinedPart
398 "
399 fontSize 14
400 fontName "Consolas"
401 alignment "left"
402 anchor "tl"
403 borderDistance 6
404 ]
405 ]
406
407 node
408 [
409 id 11
410 graphics
411 [
412 w 269.5
413 h 110
414 type "rectangle"
415 fill "#FFFFFF"
416 fill2 "#FFFFFF"
417 outline "#000000"
418 ]
419 LabelGraphics
420 [
421 text "null"
422 outline "#000000"
423 fill "#FFFFFF"
424 fontSize 16
425 fontName "Monospace"
426 autoSizePolicy "node_width"
427 anchor "t"
428 borderDistance 0.0
429 ]
430 LabelGraphics
431 [
432 text "
433 EClass class
434 EClassifier class
435 EModelElement class
436 ENamedElement class
437 EModelElement class UndefinedPart
438 ENamedElement class UndefinedPart
439 "
440 fontSize 14
441 fontName "Consolas"
442 alignment "left"
443 anchor "tl"
444 borderDistance 6
445 ]
446 ]
447
448 node
449 [
450 id 12
451 graphics
452 [
453 w 269.5
454 h 124
455 type "rectangle"
456 fill "#FFFFFF"
457 fill2 "#FFFFFF"
458 outline "#000000"
459 ]
460 LabelGraphics
461 [
462 text "null"
463 outline "#000000"
464 fill "#FFFFFF"
465 fontSize 16
466 fontName "Monospace"
467 autoSizePolicy "node_width"
468 anchor "t"
469 borderDistance 0.0
470 ]
471 LabelGraphics
472 [
473 text "
474 EModelElement class
475 ENamedElement class
476 EReference class
477 EStructuralFeature class
478 ETypedElement class
479 EModelElement class UndefinedPart
480 ENamedElement class UndefinedPart
481 "
482 fontSize 14
483 fontName "Consolas"
484 alignment "left"
485 anchor "tl"
486 borderDistance 6
487 ]
488 ]
489
490 node
491 [
492 id 13
493 graphics
494 [
495 w 112.2
496 h 26
497 type "rectangle"
498 fill "#FFFFFF"
499 fill2 "#FFFFFF"
500 outline "#000000"
501 ]
502 LabelGraphics
503 [
504 text "New Integers"
505 outline "#000000"
506 fill "#FFFFFF"
507 fontSize 16
508 fontName "Monospace"
509 autoSizePolicy "node_width"
510 anchor "t"
511 borderDistance 0.0
512 ]
513 LabelGraphics
514 [
515 text "
516 "
517 fontSize 14
518 fontName "Consolas"
519 alignment "left"
520 anchor "tl"
521 borderDistance 6
522 ]
523 ]
524
525 node
526 [
527 id 14
528 graphics
529 [
530 w 85.80000000000001
531 h 26
532 type "rectangle"
533 fill "#FFFFFF"
534 fill2 "#FFFFFF"
535 outline "#000000"
536 ]
537 LabelGraphics
538 [
539 text "New Reals"
540 outline "#000000"
541 fill "#FFFFFF"
542 fontSize 16
543 fontName "Monospace"
544 autoSizePolicy "node_width"
545 anchor "t"
546 borderDistance 0.0
547 ]
548 LabelGraphics
549 [
550 text "
551 "
552 fontSize 14
553 fontName "Consolas"
554 alignment "left"
555 anchor "tl"
556 borderDistance 6
557 ]
558 ]
559
560 node
561 [
562 id 15
563 graphics
564 [
565 w 103.4
566 h 26
567 type "rectangle"
568 fill "#FFFFFF"
569 fill2 "#FFFFFF"
570 outline "#000000"
571 ]
572 LabelGraphics
573 [
574 text "New Strings"
575 outline "#000000"
576 fill "#FFFFFF"
577 fontSize 16
578 fontName "Monospace"
579 autoSizePolicy "node_width"
580 anchor "t"
581 borderDistance 0.0
582 ]
583 LabelGraphics
584 [
585 text "
586 "
587 fontSize 14
588 fontName "Consolas"
589 alignment "left"
590 anchor "tl"
591 borderDistance 6
592 ]
593 ]
594
595 node
596 [
597 id 16
598 graphics
599 [
600 w 103.4
601 h 26
602 type "rectangle"
603 fill "#FFFFFF"
604 fill2 "#FFFFFF"
605 outline "#000000"
606 ]
607 LabelGraphics
608 [
609 text "New Objects"
610 outline "#000000"
611 fill "#FFFFFF"
612 fontSize 16
613 fontName "Monospace"
614 autoSizePolicy "node_width"
615 anchor "t"
616 borderDistance 0.0
617 ]
618 LabelGraphics
619 [
620 text "
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629 edge
630 [
631 source 8
632 target 0
633 graphics
634 [
635 fill "#000000"
636 targetArrow "standard"
637 ]
638 LabelGraphics
639 [
640 text "eModelElement reference EAnnotation"
641 fontSize 14
642 fontName "Consolas"
643 configuration "AutoFlippingLabel"
644 model "six_pos"
645 position "thead"
646 ]
647 ]
648 edge
649 [
650 source 10
651 target 0
652 graphics
653 [
654 fill "#000000"
655 targetArrow "standard"
656 ]
657 LabelGraphics
658 [
659 text "eModelElement reference EAnnotation"
660 fontSize 14
661 fontName "Consolas"
662 configuration "AutoFlippingLabel"
663 model "six_pos"
664 position "thead"
665 ]
666 ]
667 edge
668 [
669 source 11
670 target 11
671 graphics
672 [
673 fill "#000000"
674 targetArrow "standard"
675 ]
676 LabelGraphics
677 [
678 text "eSuperTypes reference EClass"
679 fontSize 14
680 fontName "Consolas"
681 configuration "AutoFlippingLabel"
682 model "six_pos"
683 position "thead"
684 ]
685 ]
686 edge
687 [
688 source 11
689 target 12
690 graphics
691 [
692 fill "#000000"
693 targetArrow "standard"
694 ]
695 LabelGraphics
696 [
697 text "eReferences reference EClass"
698 fontSize 14
699 fontName "Consolas"
700 configuration "AutoFlippingLabel"
701 model "six_pos"
702 position "thead"
703 ]
704 ]
705 edge
706 [
707 source 11
708 target 12
709 graphics
710 [
711 fill "#000000"
712 targetArrow "standard"
713 ]
714 LabelGraphics
715 [
716 text "eAllStructuralFeatures reference EClass"
717 fontSize 14
718 fontName "Consolas"
719 configuration "AutoFlippingLabel"
720 model "six_pos"
721 position "thead"
722 ]
723 ]
724 edge
725 [
726 source 11
727 target 11
728 graphics
729 [
730 fill "#000000"
731 targetArrow "standard"
732 ]
733 LabelGraphics
734 [
735 text "eAllSuperTypes reference EClass"
736 fontSize 14
737 fontName "Consolas"
738 configuration "AutoFlippingLabel"
739 model "six_pos"
740 position "thead"
741 ]
742 ]
743 edge
744 [
745 source 11
746 target 12
747 graphics
748 [
749 fill "#000000"
750 width 3
751 targetArrow "standard"
752 ]
753 LabelGraphics
754 [
755 text "eStructuralFeatures reference EClass"
756 fontSize 14
757 fontName "Consolas"
758 configuration "AutoFlippingLabel"
759 model "six_pos"
760 position "thead"
761 ]
762 ]
763 edge
764 [
765 source 9
766 target 0
767 graphics
768 [
769 fill "#000000"
770 targetArrow "standard"
771 ]
772 LabelGraphics
773 [
774 text "ePackage reference EClassifier"
775 fontSize 14
776 fontName "Consolas"
777 configuration "AutoFlippingLabel"
778 model "six_pos"
779 position "thead"
780 ]
781 ]
782 edge
783 [
784 source 11
785 target 0
786 graphics
787 [
788 fill "#000000"
789 targetArrow "standard"
790 ]
791 LabelGraphics
792 [
793 text "ePackage reference EClassifier"
794 fontSize 14
795 fontName "Consolas"
796 configuration "AutoFlippingLabel"
797 model "six_pos"
798 position "thead"
799 ]
800 ]
801 edge
802 [
803 source 0
804 target 8
805 graphics
806 [
807 fill "#000000"
808 width 3
809 targetArrow "standard"
810 ]
811 LabelGraphics
812 [
813 text "eAnnotations reference EModelElement"
814 fontSize 14
815 fontName "Consolas"
816 configuration "AutoFlippingLabel"
817 model "six_pos"
818 position "thead"
819 ]
820 ]
821 edge
822 [
823 source 0
824 target 10
825 graphics
826 [
827 fill "#000000"
828 width 3
829 targetArrow "standard"
830 ]
831 LabelGraphics
832 [
833 text "eAnnotations reference EModelElement"
834 fontSize 14
835 fontName "Consolas"
836 configuration "AutoFlippingLabel"
837 model "six_pos"
838 position "thead"
839 ]
840 ]
841 edge
842 [
843 source 0
844 target 9
845 graphics
846 [
847 fill "#000000"
848 width 3
849 targetArrow "standard"
850 ]
851 LabelGraphics
852 [
853 text "eClassifiers reference EPackage"
854 fontSize 14
855 fontName "Consolas"
856 configuration "AutoFlippingLabel"
857 model "six_pos"
858 position "thead"
859 ]
860 ]
861 edge
862 [
863 source 0
864 target 11
865 graphics
866 [
867 fill "#000000"
868 width 3
869 targetArrow "standard"
870 ]
871 LabelGraphics
872 [
873 text "eClassifiers reference EPackage"
874 fontSize 14
875 fontName "Consolas"
876 configuration "AutoFlippingLabel"
877 model "six_pos"
878 position "thead"
879 ]
880 ]
881 edge
882 [
883 source 12
884 target 12
885 graphics
886 [
887 fill "#000000"
888 targetArrow "standard"
889 ]
890 LabelGraphics
891 [
892 text "eOpposite reference EReference"
893 fontSize 14
894 fontName "Consolas"
895 configuration "AutoFlippingLabel"
896 model "six_pos"
897 position "thead"
898 ]
899 ]
900 edge
901 [
902 source 12
903 target 11
904 graphics
905 [
906 fill "#000000"
907 targetArrow "standard"
908 ]
909 LabelGraphics
910 [
911 text "eReferenceType reference EReference"
912 fontSize 14
913 fontName "Consolas"
914 configuration "AutoFlippingLabel"
915 model "six_pos"
916 position "thead"
917 ]
918 ]
919 edge
920 [
921 source 12
922 target 11
923 graphics
924 [
925 fill "#000000"
926 targetArrow "standard"
927 ]
928 LabelGraphics
929 [
930 text "eContainingClass reference EStructuralFeature"
931 fontSize 14
932 fontName "Consolas"
933 configuration "AutoFlippingLabel"
934 model "six_pos"
935 position "thead"
936 ]
937 ]
938 edge
939 [
940 source 12
941 target 11
942 graphics
943 [
944 fill "#000000"
945 targetArrow "standard"
946 ]
947 LabelGraphics
948 [
949 text "eType reference ETypedElement"
950 fontSize 14
951 fontName "Consolas"
952 configuration "AutoFlippingLabel"
953 model "six_pos"
954 position "thead"
955 ]
956 ]
957 edge
958 [
959 source 8
960 target 7
961 graphics
962 [
963 fill "#000000"
964 targetArrow "standard"
965 ]
966 LabelGraphics
967 [
968 text "source attribute EAnnotation"
969 fontSize 14
970 fontName "Consolas"
971 configuration "AutoFlippingLabel"
972 model "six_pos"
973 position "thead"
974 ]
975 ]
976 edge
977 [
978 source 10
979 target 6
980 graphics
981 [
982 fill "#000000"
983 targetArrow "standard"
984 ]
985 LabelGraphics
986 [
987 text "source attribute EAnnotation"
988 fontSize 14
989 fontName "Consolas"
990 configuration "AutoFlippingLabel"
991 model "six_pos"
992 position "thead"
993 ]
994 ]
995 edge
996 [
997 source 11
998 target 2
999 graphics
1000 [
1001 fill "#000000"
1002 targetArrow "standard"
1003 ]
1004 LabelGraphics
1005 [
1006 text "abstract attribute EClass"
1007 fontSize 14
1008 fontName "Consolas"
1009 configuration "AutoFlippingLabel"
1010 model "six_pos"
1011 position "thead"
1012 ]
1013 ]
1014 edge
1015 [
1016 source 11
1017 target 1
1018 graphics
1019 [
1020 fill "#000000"
1021 targetArrow "standard"
1022 ]
1023 LabelGraphics
1024 [
1025 text "interface attribute EClass"
1026 fontSize 14
1027 fontName "Consolas"
1028 configuration "AutoFlippingLabel"
1029 model "six_pos"
1030 position "thead"
1031 ]
1032 ]
1033 edge
1034 [
1035 source 11
1036 target 7
1037 graphics
1038 [
1039 fill "#000000"
1040 targetArrow "standard"
1041 ]
1042 LabelGraphics
1043 [
1044 text "instanceClassName attribute EClassifier"
1045 fontSize 14
1046 fontName "Consolas"
1047 configuration "AutoFlippingLabel"
1048 model "six_pos"
1049 position "thead"
1050 ]
1051 ]
1052 edge
1053 [
1054 source 11
1055 target 7
1056 graphics
1057 [
1058 fill "#000000"
1059 targetArrow "standard"
1060 ]
1061 LabelGraphics
1062 [
1063 text "instanceTypeName attribute EClassifier"
1064 fontSize 14
1065 fontName "Consolas"
1066 configuration "AutoFlippingLabel"
1067 model "six_pos"
1068 position "thead"
1069 ]
1070 ]
1071 edge
1072 [
1073 source 9
1074 target 7
1075 graphics
1076 [
1077 fill "#000000"
1078 targetArrow "standard"
1079 ]
1080 LabelGraphics
1081 [
1082 text "instanceTypeName attribute EClassifier"
1083 fontSize 14
1084 fontName "Consolas"
1085 configuration "AutoFlippingLabel"
1086 model "six_pos"
1087 position "thead"
1088 ]
1089 ]
1090 edge
1091 [
1092 source 9
1093 target 2
1094 graphics
1095 [
1096 fill "#000000"
1097 targetArrow "standard"
1098 ]
1099 LabelGraphics
1100 [
1101 text "serializable attribute EDataType"
1102 fontSize 14
1103 fontName "Consolas"
1104 configuration "AutoFlippingLabel"
1105 model "six_pos"
1106 position "thead"
1107 ]
1108 ]
1109 edge
1110 [
1111 source 0
1112 target 7
1113 graphics
1114 [
1115 fill "#000000"
1116 targetArrow "standard"
1117 ]
1118 LabelGraphics
1119 [
1120 text "name attribute ENamedElement"
1121 fontSize 14
1122 fontName "Consolas"
1123 configuration "AutoFlippingLabel"
1124 model "six_pos"
1125 position "thead"
1126 ]
1127 ]
1128 edge
1129 [
1130 source 12
1131 target 6
1132 graphics
1133 [
1134 fill "#000000"
1135 targetArrow "standard"
1136 ]
1137 LabelGraphics
1138 [
1139 text "name attribute ENamedElement"
1140 fontSize 14
1141 fontName "Consolas"
1142 configuration "AutoFlippingLabel"
1143 model "six_pos"
1144 position "thead"
1145 ]
1146 ]
1147 edge
1148 [
1149 source 11
1150 target 7
1151 graphics
1152 [
1153 fill "#000000"
1154 targetArrow "standard"
1155 ]
1156 LabelGraphics
1157 [
1158 text "name attribute ENamedElement"
1159 fontSize 14
1160 fontName "Consolas"
1161 configuration "AutoFlippingLabel"
1162 model "six_pos"
1163 position "thead"
1164 ]
1165 ]
1166 edge
1167 [
1168 source 9
1169 target 7
1170 graphics
1171 [
1172 fill "#000000"
1173 targetArrow "standard"
1174 ]
1175 LabelGraphics
1176 [
1177 text "name attribute ENamedElement"
1178 fontSize 14
1179 fontName "Consolas"
1180 configuration "AutoFlippingLabel"
1181 model "six_pos"
1182 position "thead"
1183 ]
1184 ]
1185 edge
1186 [
1187 source 0
1188 target 7
1189 graphics
1190 [
1191 fill "#000000"
1192 targetArrow "standard"
1193 ]
1194 LabelGraphics
1195 [
1196 text "nsURI attribute EPackage"
1197 fontSize 14
1198 fontName "Consolas"
1199 configuration "AutoFlippingLabel"
1200 model "six_pos"
1201 position "thead"
1202 ]
1203 ]
1204 edge
1205 [
1206 source 0
1207 target 7
1208 graphics
1209 [
1210 fill "#000000"
1211 targetArrow "standard"
1212 ]
1213 LabelGraphics
1214 [
1215 text "nsPrefix attribute EPackage"
1216 fontSize 14
1217 fontName "Consolas"
1218 configuration "AutoFlippingLabel"
1219 model "six_pos"
1220 position "thead"
1221 ]
1222 ]
1223 edge
1224 [
1225 source 12
1226 target 2
1227 graphics
1228 [
1229 fill "#000000"
1230 targetArrow "standard"
1231 ]
1232 LabelGraphics
1233 [
1234 text "containment attribute EReference"
1235 fontSize 14
1236 fontName "Consolas"
1237 configuration "AutoFlippingLabel"
1238 model "six_pos"
1239 position "thead"
1240 ]
1241 ]
1242 edge
1243 [
1244 source 12
1245 target 2
1246 graphics
1247 [
1248 fill "#000000"
1249 targetArrow "standard"
1250 ]
1251 LabelGraphics
1252 [
1253 text "container attribute EReference"
1254 fontSize 14
1255 fontName "Consolas"
1256 configuration "AutoFlippingLabel"
1257 model "six_pos"
1258 position "thead"
1259 ]
1260 ]
1261 edge
1262 [
1263 source 12
1264 target 2
1265 graphics
1266 [
1267 fill "#000000"
1268 targetArrow "standard"
1269 ]
1270 LabelGraphics
1271 [
1272 text "resolveProxies attribute EReference"
1273 fontSize 14
1274 fontName "Consolas"
1275 configuration "AutoFlippingLabel"
1276 model "six_pos"
1277 position "thead"
1278 ]
1279 ]
1280 edge
1281 [
1282 source 12
1283 target 2
1284 graphics
1285 [
1286 fill "#000000"
1287 targetArrow "standard"
1288 ]
1289 LabelGraphics
1290 [
1291 text "changeable attribute EStructuralFeature"
1292 fontSize 14
1293 fontName "Consolas"
1294 configuration "AutoFlippingLabel"
1295 model "six_pos"
1296 position "thead"
1297 ]
1298 ]
1299 edge
1300 [
1301 source 12
1302 target 2
1303 graphics
1304 [
1305 fill "#000000"
1306 targetArrow "standard"
1307 ]
1308 LabelGraphics
1309 [
1310 text "volatile attribute EStructuralFeature"
1311 fontSize 14
1312 fontName "Consolas"
1313 configuration "AutoFlippingLabel"
1314 model "six_pos"
1315 position "thead"
1316 ]
1317 ]
1318 edge
1319 [
1320 source 12
1321 target 1
1322 graphics
1323 [
1324 fill "#000000"
1325 targetArrow "standard"
1326 ]
1327 LabelGraphics
1328 [
1329 text "transient attribute EStructuralFeature"
1330 fontSize 14
1331 fontName "Consolas"
1332 configuration "AutoFlippingLabel"
1333 model "six_pos"
1334 position "thead"
1335 ]
1336 ]
1337 edge
1338 [
1339 source 12
1340 target 7
1341 graphics
1342 [
1343 fill "#000000"
1344 targetArrow "standard"
1345 ]
1346 LabelGraphics
1347 [
1348 text "defaultValueLiteral attribute EStructuralFeature"
1349 fontSize 14
1350 fontName "Consolas"
1351 configuration "AutoFlippingLabel"
1352 model "six_pos"
1353 position "thead"
1354 ]
1355 ]
1356 edge
1357 [
1358 source 12
1359 target 2
1360 graphics
1361 [
1362 fill "#000000"
1363 targetArrow "standard"
1364 ]
1365 LabelGraphics
1366 [
1367 text "unsettable attribute EStructuralFeature"
1368 fontSize 14
1369 fontName "Consolas"
1370 configuration "AutoFlippingLabel"
1371 model "six_pos"
1372 position "thead"
1373 ]
1374 ]
1375 edge
1376 [
1377 source 12
1378 target 1
1379 graphics
1380 [
1381 fill "#000000"
1382 targetArrow "standard"
1383 ]
1384 LabelGraphics
1385 [
1386 text "derived attribute EStructuralFeature"
1387 fontSize 14
1388 fontName "Consolas"
1389 configuration "AutoFlippingLabel"
1390 model "six_pos"
1391 position "thead"
1392 ]
1393 ]
1394 edge
1395 [
1396 source 12
1397 target 1
1398 graphics
1399 [
1400 fill "#000000"
1401 targetArrow "standard"
1402 ]
1403 LabelGraphics
1404 [
1405 text "ordered attribute ETypedElement"
1406 fontSize 14
1407 fontName "Consolas"
1408 configuration "AutoFlippingLabel"
1409 model "six_pos"
1410 position "thead"
1411 ]
1412 ]
1413 edge
1414 [
1415 source 12
1416 target 1
1417 graphics
1418 [
1419 fill "#000000"
1420 targetArrow "standard"
1421 ]
1422 LabelGraphics
1423 [
1424 text "unique attribute ETypedElement"
1425 fontSize 14
1426 fontName "Consolas"
1427 configuration "AutoFlippingLabel"
1428 model "six_pos"
1429 position "thead"
1430 ]
1431 ]
1432 edge
1433 [
1434 source 12
1435 target 4
1436 graphics
1437 [
1438 fill "#000000"
1439 targetArrow "standard"
1440 ]
1441 LabelGraphics
1442 [
1443 text "lowerBound attribute ETypedElement"
1444 fontSize 14
1445 fontName "Consolas"
1446 configuration "AutoFlippingLabel"
1447 model "six_pos"
1448 position "thead"
1449 ]
1450 ]
1451 edge
1452 [
1453 source 12
1454 target 5
1455 graphics
1456 [
1457 fill "#000000"
1458 targetArrow "standard"
1459 ]
1460 LabelGraphics
1461 [
1462 text "upperBound attribute ETypedElement"
1463 fontSize 14
1464 fontName "Consolas"
1465 configuration "AutoFlippingLabel"
1466 model "six_pos"
1467 position "thead"
1468 ]
1469 ]
1470 edge
1471 [
1472 source 12
1473 target 1
1474 graphics
1475 [
1476 fill "#000000"
1477 targetArrow "standard"
1478 ]
1479 LabelGraphics
1480 [
1481 text "many attribute ETypedElement"
1482 fontSize 14
1483 fontName "Consolas"
1484 configuration "AutoFlippingLabel"
1485 model "six_pos"
1486 position "thead"
1487 ]
1488 ]
1489 edge
1490 [
1491 source 12
1492 target 2
1493 graphics
1494 [
1495 fill "#000000"
1496 targetArrow "standard"
1497 ]
1498 LabelGraphics
1499 [
1500 text "required attribute ETypedElement"
1501 fontSize 14
1502 fontName "Consolas"
1503 configuration "AutoFlippingLabel"
1504 model "six_pos"
1505 position "thead"
1506 ]
1507 ]
1508]
1509graph
1510[
1511 node
1512 [
1513 id 0
1514 graphics
1515 [
1516 w 254.10000000000002
1517 h 110
1518 type "rectangle"
1519 fill "#FFFFFF"
1520 fill2 "#FFFFFF"
1521 outline "#000000"
1522 ]
1523 LabelGraphics
1524 [
1525 text "o 1"
1526 outline "#000000"
1527 fill "#FFFFFF"
1528 fontSize 16
1529 fontName "Monospace"
1530 autoSizePolicy "node_width"
1531 anchor "t"
1532 borderDistance 0.0
1533 ]
1534 LabelGraphics
1535 [
1536 text "
1537 EModelElement class DefinedPart
1538 ENamedElement class DefinedPart
1539 EPackage class DefinedPart
1540 EModelElement class
1541 ENamedElement class
1542 EPackage class
1543 "
1544 fontSize 14
1545 fontName "Consolas"
1546 alignment "left"
1547 anchor "tl"
1548 borderDistance 6
1549 ]
1550 ]
1551
1552 node
1553 [
1554 id 1
1555 graphics
1556 [
1557 w 41.800000000000004
1558 h 26
1559 type "rectangle"
1560 fill "#FFFFFF"
1561 fill2 "#FFFFFF"
1562 outline "#000000"
1563 ]
1564 LabelGraphics
1565 [
1566 text "true"
1567 outline "#000000"
1568 fill "#FFFFFF"
1569 fontSize 16
1570 fontName "Monospace"
1571 autoSizePolicy "node_width"
1572 anchor "t"
1573 borderDistance 0.0
1574 ]
1575 LabelGraphics
1576 [
1577 text "
1578 "
1579 fontSize 14
1580 fontName "Consolas"
1581 alignment "left"
1582 anchor "tl"
1583 borderDistance 6
1584 ]
1585 ]
1586
1587 node
1588 [
1589 id 2
1590 graphics
1591 [
1592 w 50.6
1593 h 26
1594 type "rectangle"
1595 fill "#FFFFFF"
1596 fill2 "#FFFFFF"
1597 outline "#000000"
1598 ]
1599 LabelGraphics
1600 [
1601 text "false"
1602 outline "#000000"
1603 fill "#FFFFFF"
1604 fontSize 16
1605 fontName "Monospace"
1606 autoSizePolicy "node_width"
1607 anchor "t"
1608 borderDistance 0.0
1609 ]
1610 LabelGraphics
1611 [
1612 text "
1613 "
1614 fontSize 14
1615 fontName "Consolas"
1616 alignment "left"
1617 anchor "tl"
1618 borderDistance 6
1619 ]
1620 ]
1621
1622 node
1623 [
1624 id 3
1625 graphics
1626 [
1627 w 24.200000000000003
1628 h 26
1629 type "rectangle"
1630 fill "#FFFFFF"
1631 fill2 "#FFFFFF"
1632 outline "#000000"
1633 ]
1634 LabelGraphics
1635 [
1636 text "-1"
1637 outline "#000000"
1638 fill "#FFFFFF"
1639 fontSize 16
1640 fontName "Monospace"
1641 autoSizePolicy "node_width"
1642 anchor "t"
1643 borderDistance 0.0
1644 ]
1645 LabelGraphics
1646 [
1647 text "
1648 "
1649 fontSize 14
1650 fontName "Consolas"
1651 alignment "left"
1652 anchor "tl"
1653 borderDistance 6
1654 ]
1655 ]
1656
1657 node
1658 [
1659 id 4
1660 graphics
1661 [
1662 w 15.400000000000002
1663 h 26
1664 type "rectangle"
1665 fill "#FFFFFF"
1666 fill2 "#FFFFFF"
1667 outline "#000000"
1668 ]
1669 LabelGraphics
1670 [
1671 text "0"
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 "
1684 fontSize 14
1685 fontName "Consolas"
1686 alignment "left"
1687 anchor "tl"
1688 borderDistance 6
1689 ]
1690 ]
1691
1692 node
1693 [
1694 id 5
1695 graphics
1696 [
1697 w 15.400000000000002
1698 h 26
1699 type "rectangle"
1700 fill "#FFFFFF"
1701 fill2 "#FFFFFF"
1702 outline "#000000"
1703 ]
1704 LabelGraphics
1705 [
1706 text "1"
1707 outline "#000000"
1708 fill "#FFFFFF"
1709 fontSize 16
1710 fontName "Monospace"
1711 autoSizePolicy "node_width"
1712 anchor "t"
1713 borderDistance 0.0
1714 ]
1715 LabelGraphics
1716 [
1717 text "
1718 "
1719 fontSize 14
1720 fontName "Consolas"
1721 alignment "left"
1722 anchor "tl"
1723 borderDistance 6
1724 ]
1725 ]
1726
1727 node
1728 [
1729 id 6
1730 graphics
1731 [
1732 w 33.0
1733 h 26
1734 type "rectangle"
1735 fill "#FFFFFF"
1736 fill2 "#FFFFFF"
1737 outline "#000000"
1738 ]
1739 LabelGraphics
1740 [
1741 text ""A""
1742 outline "#000000"
1743 fill "#FFFFFF"
1744 fontSize 16
1745 fontName "Monospace"
1746 autoSizePolicy "node_width"
1747 anchor "t"
1748 borderDistance 0.0
1749 ]
1750 LabelGraphics
1751 [
1752 text "
1753 "
1754 fontSize 14
1755 fontName "Consolas"
1756 alignment "left"
1757 anchor "tl"
1758 borderDistance 6
1759 ]
1760 ]
1761
1762 node
1763 [
1764 id 7
1765 graphics
1766 [
1767 w 33.0
1768 h 26
1769 type "rectangle"
1770 fill "#FFFFFF"
1771 fill2 "#FFFFFF"
1772 outline "#000000"
1773 ]
1774 LabelGraphics
1775 [
1776 text ""B""
1777 outline "#000000"
1778 fill "#FFFFFF"
1779 fontSize 16
1780 fontName "Monospace"
1781 autoSizePolicy "node_width"
1782 anchor "t"
1783 borderDistance 0.0
1784 ]
1785 LabelGraphics
1786 [
1787 text "
1788 "
1789 fontSize 14
1790 fontName "Consolas"
1791 alignment "left"
1792 anchor "tl"
1793 borderDistance 6
1794 ]
1795 ]
1796
1797 node
1798 [
1799 id 8
1800 graphics
1801 [
1802 w 94.60000000000001
1803 h 26
1804 type "rectangle"
1805 fill "#FFFFFF"
1806 fill2 "#FFFFFF"
1807 outline "#000000"
1808 ]
1809 LabelGraphics
1810 [
1811 text ""nsPrefix""
1812 outline "#000000"
1813 fill "#FFFFFF"
1814 fontSize 16
1815 fontName "Monospace"
1816 autoSizePolicy "node_width"
1817 anchor "t"
1818 borderDistance 0.0
1819 ]
1820 LabelGraphics
1821 [
1822 text "
1823 "
1824 fontSize 14
1825 fontName "Consolas"
1826 alignment "left"
1827 anchor "tl"
1828 borderDistance 6
1829 ]
1830 ]
1831
1832 node
1833 [
1834 id 9
1835 graphics
1836 [
1837 w 68.2
1838 h 26
1839 type "rectangle"
1840 fill "#FFFFFF"
1841 fill2 "#FFFFFF"
1842 outline "#000000"
1843 ]
1844 LabelGraphics
1845 [
1846 text ""nsUri""
1847 outline "#000000"
1848 fill "#FFFFFF"
1849 fontSize 16
1850 fontName "Monospace"
1851 autoSizePolicy "node_width"
1852 anchor "t"
1853 borderDistance 0.0
1854 ]
1855 LabelGraphics
1856 [
1857 text "
1858 "
1859 fontSize 14
1860 fontName "Consolas"
1861 alignment "left"
1862 anchor "tl"
1863 borderDistance 6
1864 ]
1865 ]
1866
1867 node
1868 [
1869 id 10
1870 graphics
1871 [
1872 w 121.00000000000001
1873 h 26
1874 type "rectangle"
1875 fill "#FFFFFF"
1876 fill2 "#FFFFFF"
1877 outline "#000000"
1878 ]
1879 LabelGraphics
1880 [
1881 text ""packageName""
1882 outline "#000000"
1883 fill "#FFFFFF"
1884 fontSize 16
1885 fontName "Monospace"
1886 autoSizePolicy "node_width"
1887 anchor "t"
1888 borderDistance 0.0
1889 ]
1890 LabelGraphics
1891 [
1892 text "
1893 "
1894 fontSize 14
1895 fontName "Consolas"
1896 alignment "left"
1897 anchor "tl"
1898 borderDistance 6
1899 ]
1900 ]
1901
1902 node
1903 [
1904 id 11
1905 graphics
1906 [
1907 w 269.5
1908 h 124
1909 type "rectangle"
1910 fill "#FFFFFF"
1911 fill2 "#FFFFFF"
1912 outline "#000000"
1913 ]
1914 LabelGraphics
1915 [
1916 text "null"
1917 outline "#000000"
1918 fill "#FFFFFF"
1919 fontSize 16
1920 fontName "Monospace"
1921 autoSizePolicy "node_width"
1922 anchor "t"
1923 borderDistance 0.0
1924 ]
1925 LabelGraphics
1926 [
1927 text "
1928 EClassifier class
1929 EDataType class
1930 EEnum class
1931 EModelElement class
1932 ENamedElement class
1933 EModelElement class UndefinedPart
1934 ENamedElement class UndefinedPart
1935 "
1936 fontSize 14
1937 fontName "Consolas"
1938 alignment "left"
1939 anchor "tl"
1940 borderDistance 6
1941 ]
1942 ]
1943
1944 node
1945 [
1946 id 12
1947 graphics
1948 [
1949 w 269.5
1950 h 110
1951 type "rectangle"
1952 fill "#FFFFFF"
1953 fill2 "#FFFFFF"
1954 outline "#000000"
1955 ]
1956 LabelGraphics
1957 [
1958 text "null"
1959 outline "#000000"
1960 fill "#FFFFFF"
1961 fontSize 16
1962 fontName "Monospace"
1963 autoSizePolicy "node_width"
1964 anchor "t"
1965 borderDistance 0.0
1966 ]
1967 LabelGraphics
1968 [
1969 text "
1970 EClassifier class
1971 EDataType class
1972 EModelElement class
1973 ENamedElement class
1974 EModelElement class UndefinedPart
1975 ENamedElement class UndefinedPart
1976 "
1977 fontSize 14
1978 fontName "Consolas"
1979 alignment "left"
1980 anchor "tl"
1981 borderDistance 6
1982 ]
1983 ]
1984
1985 node
1986 [
1987 id 13
1988 graphics
1989 [
1990 w 269.5
1991 h 68
1992 type "rectangle"
1993 fill "#FFFFFF"
1994 fill2 "#FFFFFF"
1995 outline "#000000"
1996 ]
1997 LabelGraphics
1998 [
1999 text "null"
2000 outline "#000000"
2001 fill "#FFFFFF"
2002 fontSize 16
2003 fontName "Monospace"
2004 autoSizePolicy "node_width"
2005 anchor "t"
2006 borderDistance 0.0
2007 ]
2008 LabelGraphics
2009 [
2010 text "
2011 EAnnotation class
2012 EModelElement class
2013 EModelElement class UndefinedPart
2014 "
2015 fontSize 14
2016 fontName "Consolas"
2017 alignment "left"
2018 anchor "tl"
2019 borderDistance 6
2020 ]
2021 ]
2022
2023 node
2024 [
2025 id 14
2026 graphics
2027 [
2028 w 269.5
2029 h 124
2030 type "rectangle"
2031 fill "#FFFFFF"
2032 fill2 "#FFFFFF"
2033 outline "#000000"
2034 ]
2035 LabelGraphics
2036 [
2037 text "null"
2038 outline "#000000"
2039 fill "#FFFFFF"
2040 fontSize 16
2041 fontName "Monospace"
2042 autoSizePolicy "node_width"
2043 anchor "t"
2044 borderDistance 0.0
2045 ]
2046 LabelGraphics
2047 [
2048 text "
2049 EClassifier class
2050 EDataType class
2051 EEnum class
2052 EModelElement class
2053 ENamedElement class
2054 EModelElement class UndefinedPart
2055 ENamedElement class UndefinedPart
2056 "
2057 fontSize 14
2058 fontName "Consolas"
2059 alignment "left"
2060 anchor "tl"
2061 borderDistance 6
2062 ]
2063 ]
2064
2065 node
2066 [
2067 id 15
2068 graphics
2069 [
2070 w 269.5
2071 h 96
2072 type "rectangle"
2073 fill "#FFFFFF"
2074 fill2 "#FFFFFF"
2075 outline "#000000"
2076 ]
2077 LabelGraphics
2078 [
2079 text "null"
2080 outline "#000000"
2081 fill "#FFFFFF"
2082 fontSize 16
2083 fontName "Monospace"
2084 autoSizePolicy "node_width"
2085 anchor "t"
2086 borderDistance 0.0
2087 ]
2088 LabelGraphics
2089 [
2090 text "
2091 EEnumLiteral class
2092 EModelElement class
2093 ENamedElement class
2094 EModelElement class UndefinedPart
2095 ENamedElement class UndefinedPart
2096 "
2097 fontSize 14
2098 fontName "Consolas"
2099 alignment "left"
2100 anchor "tl"
2101 borderDistance 6
2102 ]
2103 ]
2104
2105 node
2106 [
2107 id 16
2108 graphics
2109 [
2110 w 112.2
2111 h 26
2112 type "rectangle"
2113 fill "#FFFFFF"
2114 fill2 "#FFFFFF"
2115 outline "#000000"
2116 ]
2117 LabelGraphics
2118 [
2119 text "New Integers"
2120 outline "#000000"
2121 fill "#FFFFFF"
2122 fontSize 16
2123 fontName "Monospace"
2124 autoSizePolicy "node_width"
2125 anchor "t"
2126 borderDistance 0.0
2127 ]
2128 LabelGraphics
2129 [
2130 text "
2131 "
2132 fontSize 14
2133 fontName "Consolas"
2134 alignment "left"
2135 anchor "tl"
2136 borderDistance 6
2137 ]
2138 ]
2139
2140 node
2141 [
2142 id 17
2143 graphics
2144 [
2145 w 85.80000000000001
2146 h 26
2147 type "rectangle"
2148 fill "#FFFFFF"
2149 fill2 "#FFFFFF"
2150 outline "#000000"
2151 ]
2152 LabelGraphics
2153 [
2154 text "New Reals"
2155 outline "#000000"
2156 fill "#FFFFFF"
2157 fontSize 16
2158 fontName "Monospace"
2159 autoSizePolicy "node_width"
2160 anchor "t"
2161 borderDistance 0.0
2162 ]
2163 LabelGraphics
2164 [
2165 text "
2166 "
2167 fontSize 14
2168 fontName "Consolas"
2169 alignment "left"
2170 anchor "tl"
2171 borderDistance 6
2172 ]
2173 ]
2174
2175 node
2176 [
2177 id 18
2178 graphics
2179 [
2180 w 103.4
2181 h 26
2182 type "rectangle"
2183 fill "#FFFFFF"
2184 fill2 "#FFFFFF"
2185 outline "#000000"
2186 ]
2187 LabelGraphics
2188 [
2189 text "New Strings"
2190 outline "#000000"
2191 fill "#FFFFFF"
2192 fontSize 16
2193 fontName "Monospace"
2194 autoSizePolicy "node_width"
2195 anchor "t"
2196 borderDistance 0.0
2197 ]
2198 LabelGraphics
2199 [
2200 text "
2201 "
2202 fontSize 14
2203 fontName "Consolas"
2204 alignment "left"
2205 anchor "tl"
2206 borderDistance 6
2207 ]
2208 ]
2209
2210 node
2211 [
2212 id 19
2213 graphics
2214 [
2215 w 103.4
2216 h 26
2217 type "rectangle"
2218 fill "#FFFFFF"
2219 fill2 "#FFFFFF"
2220 outline "#000000"
2221 ]
2222 LabelGraphics
2223 [
2224 text "New Objects"
2225 outline "#000000"
2226 fill "#FFFFFF"
2227 fontSize 16
2228 fontName "Monospace"
2229 autoSizePolicy "node_width"
2230 anchor "t"
2231 borderDistance 0.0
2232 ]
2233 LabelGraphics
2234 [
2235 text "
2236 "
2237 fontSize 14
2238 fontName "Consolas"
2239 alignment "left"
2240 anchor "tl"
2241 borderDistance 6
2242 ]
2243 ]
2244 edge
2245 [
2246 source 13
2247 target 0
2248 graphics
2249 [
2250 fill "#000000"
2251 targetArrow "standard"
2252 ]
2253 LabelGraphics
2254 [
2255 text "eModelElement reference EAnnotation"
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 0
2267 graphics
2268 [
2269 fill "#000000"
2270 targetArrow "standard"
2271 ]
2272 LabelGraphics
2273 [
2274 text "ePackage reference EClassifier"
2275 fontSize 14
2276 fontName "Consolas"
2277 configuration "AutoFlippingLabel"
2278 model "six_pos"
2279 position "thead"
2280 ]
2281 ]
2282 edge
2283 [
2284 source 12
2285 target 0
2286 graphics
2287 [
2288 fill "#000000"
2289 targetArrow "standard"
2290 ]
2291 LabelGraphics
2292 [
2293 text "ePackage reference EClassifier"
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 0
2305 graphics
2306 [
2307 fill "#000000"
2308 targetArrow "standard"
2309 ]
2310 LabelGraphics
2311 [
2312 text "ePackage reference EClassifier"
2313 fontSize 14
2314 fontName "Consolas"
2315 configuration "AutoFlippingLabel"
2316 model "six_pos"
2317 position "thead"
2318 ]
2319 ]
2320 edge
2321 [
2322 source 14
2323 target 15
2324 graphics
2325 [
2326 fill "#000000"
2327 width 3
2328 targetArrow "standard"
2329 ]
2330 LabelGraphics
2331 [
2332 text "eLiterals reference EEnum"
2333 fontSize 14
2334 fontName "Consolas"
2335 configuration "AutoFlippingLabel"
2336 model "six_pos"
2337 position "thead"
2338 ]
2339 ]
2340 edge
2341 [
2342 source 15
2343 target 14
2344 graphics
2345 [
2346 fill "#000000"
2347 targetArrow "standard"
2348 ]
2349 LabelGraphics
2350 [
2351 text "eEnum reference EEnumLiteral"
2352 fontSize 14
2353 fontName "Consolas"
2354 configuration "AutoFlippingLabel"
2355 model "six_pos"
2356 position "thead"
2357 ]
2358 ]
2359 edge
2360 [
2361 source 0
2362 target 13
2363 graphics
2364 [
2365 fill "#000000"
2366 width 3
2367 targetArrow "standard"
2368 ]
2369 LabelGraphics
2370 [
2371 text "eAnnotations reference EModelElement"
2372 fontSize 14
2373 fontName "Consolas"
2374 configuration "AutoFlippingLabel"
2375 model "six_pos"
2376 position "thead"
2377 ]
2378 ]
2379 edge
2380 [
2381 source 0
2382 target 11
2383 graphics
2384 [
2385 fill "#000000"
2386 width 3
2387 targetArrow "standard"
2388 ]
2389 LabelGraphics
2390 [
2391 text "eClassifiers reference EPackage"
2392 fontSize 14
2393 fontName "Consolas"
2394 configuration "AutoFlippingLabel"
2395 model "six_pos"
2396 position "thead"
2397 ]
2398 ]
2399 edge
2400 [
2401 source 0
2402 target 12
2403 graphics
2404 [
2405 fill "#000000"
2406 width 3
2407 targetArrow "standard"
2408 ]
2409 LabelGraphics
2410 [
2411 text "eClassifiers reference EPackage"
2412 fontSize 14
2413 fontName "Consolas"
2414 configuration "AutoFlippingLabel"
2415 model "six_pos"
2416 position "thead"
2417 ]
2418 ]
2419 edge
2420 [
2421 source 0
2422 target 14
2423 graphics
2424 [
2425 fill "#000000"
2426 width 3
2427 targetArrow "standard"
2428 ]
2429 LabelGraphics
2430 [
2431 text "eClassifiers reference EPackage"
2432 fontSize 14
2433 fontName "Consolas"
2434 configuration "AutoFlippingLabel"
2435 model "six_pos"
2436 position "thead"
2437 ]
2438 ]
2439 edge
2440 [
2441 source 13
2442 target 9
2443 graphics
2444 [
2445 fill "#000000"
2446 targetArrow "standard"
2447 ]
2448 LabelGraphics
2449 [
2450 text "source attribute EAnnotation"
2451 fontSize 14
2452 fontName "Consolas"
2453 configuration "AutoFlippingLabel"
2454 model "six_pos"
2455 position "thead"
2456 ]
2457 ]
2458 edge
2459 [
2460 source 11
2461 target 6
2462 graphics
2463 [
2464 fill "#000000"
2465 targetArrow "standard"
2466 ]
2467 LabelGraphics
2468 [
2469 text "instanceClassName attribute EClassifier"
2470 fontSize 14
2471 fontName "Consolas"
2472 configuration "AutoFlippingLabel"
2473 model "six_pos"
2474 position "thead"
2475 ]
2476 ]
2477 edge
2478 [
2479 source 12
2480 target 10
2481 graphics
2482 [
2483 fill "#000000"
2484 targetArrow "standard"
2485 ]
2486 LabelGraphics
2487 [
2488 text "instanceTypeName attribute EClassifier"
2489 fontSize 14
2490 fontName "Consolas"
2491 configuration "AutoFlippingLabel"
2492 model "six_pos"
2493 position "thead"
2494 ]
2495 ]
2496 edge
2497 [
2498 source 14
2499 target 8
2500 graphics
2501 [
2502 fill "#000000"
2503 targetArrow "standard"
2504 ]
2505 LabelGraphics
2506 [
2507 text "instanceTypeName attribute EClassifier"
2508 fontSize 14
2509 fontName "Consolas"
2510 configuration "AutoFlippingLabel"
2511 model "six_pos"
2512 position "thead"
2513 ]
2514 ]
2515 edge
2516 [
2517 source 12
2518 target 2
2519 graphics
2520 [
2521 fill "#000000"
2522 targetArrow "standard"
2523 ]
2524 LabelGraphics
2525 [
2526 text "serializable attribute EDataType"
2527 fontSize 14
2528 fontName "Consolas"
2529 configuration "AutoFlippingLabel"
2530 model "six_pos"
2531 position "thead"
2532 ]
2533 ]
2534 edge
2535 [
2536 source 14
2537 target 2
2538 graphics
2539 [
2540 fill "#000000"
2541 targetArrow "standard"
2542 ]
2543 LabelGraphics
2544 [
2545 text "serializable attribute EDataType"
2546 fontSize 14
2547 fontName "Consolas"
2548 configuration "AutoFlippingLabel"
2549 model "six_pos"
2550 position "thead"
2551 ]
2552 ]
2553 edge
2554 [
2555 source 0
2556 target 10
2557 graphics
2558 [
2559 fill "#000000"
2560 targetArrow "standard"
2561 ]
2562 LabelGraphics
2563 [
2564 text "name attribute ENamedElement"
2565 fontSize 14
2566 fontName "Consolas"
2567 configuration "AutoFlippingLabel"
2568 model "six_pos"
2569 position "thead"
2570 ]
2571 ]
2572 edge
2573 [
2574 source 11
2575 target 10
2576 graphics
2577 [
2578 fill "#000000"
2579 targetArrow "standard"
2580 ]
2581 LabelGraphics
2582 [
2583 text "name attribute ENamedElement"
2584 fontSize 14
2585 fontName "Consolas"
2586 configuration "AutoFlippingLabel"
2587 model "six_pos"
2588 position "thead"
2589 ]
2590 ]
2591 edge
2592 [
2593 source 12
2594 target 9
2595 graphics
2596 [
2597 fill "#000000"
2598 targetArrow "standard"
2599 ]
2600 LabelGraphics
2601 [
2602 text "name attribute ENamedElement"
2603 fontSize 14
2604 fontName "Consolas"
2605 configuration "AutoFlippingLabel"
2606 model "six_pos"
2607 position "thead"
2608 ]
2609 ]
2610 edge
2611 [
2612 source 14
2613 target 9
2614 graphics
2615 [
2616 fill "#000000"
2617 targetArrow "standard"
2618 ]
2619 LabelGraphics
2620 [
2621 text "name attribute ENamedElement"
2622 fontSize 14
2623 fontName "Consolas"
2624 configuration "AutoFlippingLabel"
2625 model "six_pos"
2626 position "thead"
2627 ]
2628 ]
2629 edge
2630 [
2631 source 0
2632 target 9
2633 graphics
2634 [
2635 fill "#000000"
2636 targetArrow "standard"
2637 ]
2638 LabelGraphics
2639 [
2640 text "nsURI attribute EPackage"
2641 fontSize 14
2642 fontName "Consolas"
2643 configuration "AutoFlippingLabel"
2644 model "six_pos"
2645 position "thead"
2646 ]
2647 ]
2648 edge
2649 [
2650 source 0
2651 target 8
2652 graphics
2653 [
2654 fill "#000000"
2655 targetArrow "standard"
2656 ]
2657 LabelGraphics
2658 [
2659 text "nsPrefix attribute EPackage"
2660 fontSize 14
2661 fontName "Consolas"
2662 configuration "AutoFlippingLabel"
2663 model "six_pos"
2664 position "thead"
2665 ]
2666 ]
2667]
diff --git a/Tests/Ecore-Plugin/outputs/models/2.png b/Tests/Ecore-Plugin/outputs/models/2.png
new file mode 100644
index 00000000..344b27e9
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/2.png
Binary files differ
diff --git a/Tests/Ecore-Plugin/outputs/models/2.xmi b/Tests/Ecore-Plugin/outputs/models/2.xmi
new file mode 100644
index 00000000..e5a2408a
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/2.xmi
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eAnnotations>
4 <details/>
5 <details/>
6 <details/>
7 <contents/>
8 </eAnnotations>
9</ecore:EPackage>
diff --git a/Tests/Ecore-Plugin/outputs/models/3.gml b/Tests/Ecore-Plugin/outputs/models/3.gml
new file mode 100644
index 00000000..eb6046af
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/3.gml
@@ -0,0 +1,2705 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 254.10000000000002
9 h 110
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "o 1"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 EModelElement class DefinedPart
30 ENamedElement class DefinedPart
31 EPackage class DefinedPart
32 EModelElement class
33 ENamedElement class
34 EPackage class
35 "
36 fontSize 14
37 fontName "Consolas"
38 alignment "left"
39 anchor "tl"
40 borderDistance 6
41 ]
42 ]
43
44 node
45 [
46 id 1
47 graphics
48 [
49 w 41.800000000000004
50 h 26
51 type "rectangle"
52 fill "#FFFFFF"
53 fill2 "#FFFFFF"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 text "true"
59 outline "#000000"
60 fill "#FFFFFF"
61 fontSize 16
62 fontName "Monospace"
63 autoSizePolicy "node_width"
64 anchor "t"
65 borderDistance 0.0
66 ]
67 LabelGraphics
68 [
69 text "
70 "
71 fontSize 14
72 fontName "Consolas"
73 alignment "left"
74 anchor "tl"
75 borderDistance 6
76 ]
77 ]
78
79 node
80 [
81 id 2
82 graphics
83 [
84 w 50.6
85 h 26
86 type "rectangle"
87 fill "#FFFFFF"
88 fill2 "#FFFFFF"
89 outline "#000000"
90 ]
91 LabelGraphics
92 [
93 text "false"
94 outline "#000000"
95 fill "#FFFFFF"
96 fontSize 16
97 fontName "Monospace"
98 autoSizePolicy "node_width"
99 anchor "t"
100 borderDistance 0.0
101 ]
102 LabelGraphics
103 [
104 text "
105 "
106 fontSize 14
107 fontName "Consolas"
108 alignment "left"
109 anchor "tl"
110 borderDistance 6
111 ]
112 ]
113
114 node
115 [
116 id 3
117 graphics
118 [
119 w 24.200000000000003
120 h 26
121 type "rectangle"
122 fill "#FFFFFF"
123 fill2 "#FFFFFF"
124 outline "#000000"
125 ]
126 LabelGraphics
127 [
128 text "-1"
129 outline "#000000"
130 fill "#FFFFFF"
131 fontSize 16
132 fontName "Monospace"
133 autoSizePolicy "node_width"
134 anchor "t"
135 borderDistance 0.0
136 ]
137 LabelGraphics
138 [
139 text "
140 "
141 fontSize 14
142 fontName "Consolas"
143 alignment "left"
144 anchor "tl"
145 borderDistance 6
146 ]
147 ]
148
149 node
150 [
151 id 4
152 graphics
153 [
154 w 15.400000000000002
155 h 26
156 type "rectangle"
157 fill "#FFFFFF"
158 fill2 "#FFFFFF"
159 outline "#000000"
160 ]
161 LabelGraphics
162 [
163 text "0"
164 outline "#000000"
165 fill "#FFFFFF"
166 fontSize 16
167 fontName "Monospace"
168 autoSizePolicy "node_width"
169 anchor "t"
170 borderDistance 0.0
171 ]
172 LabelGraphics
173 [
174 text "
175 "
176 fontSize 14
177 fontName "Consolas"
178 alignment "left"
179 anchor "tl"
180 borderDistance 6
181 ]
182 ]
183
184 node
185 [
186 id 5
187 graphics
188 [
189 w 15.400000000000002
190 h 26
191 type "rectangle"
192 fill "#FFFFFF"
193 fill2 "#FFFFFF"
194 outline "#000000"
195 ]
196 LabelGraphics
197 [
198 text "1"
199 outline "#000000"
200 fill "#FFFFFF"
201 fontSize 16
202 fontName "Monospace"
203 autoSizePolicy "node_width"
204 anchor "t"
205 borderDistance 0.0
206 ]
207 LabelGraphics
208 [
209 text "
210 "
211 fontSize 14
212 fontName "Consolas"
213 alignment "left"
214 anchor "tl"
215 borderDistance 6
216 ]
217 ]
218
219 node
220 [
221 id 6
222 graphics
223 [
224 w 33.0
225 h 26
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text ""A""
234 outline "#000000"
235 fill "#FFFFFF"
236 fontSize 16
237 fontName "Monospace"
238 autoSizePolicy "node_width"
239 anchor "t"
240 borderDistance 0.0
241 ]
242 LabelGraphics
243 [
244 text "
245 "
246 fontSize 14
247 fontName "Consolas"
248 alignment "left"
249 anchor "tl"
250 borderDistance 6
251 ]
252 ]
253
254 node
255 [
256 id 7
257 graphics
258 [
259 w 33.0
260 h 26
261 type "rectangle"
262 fill "#FFFFFF"
263 fill2 "#FFFFFF"
264 outline "#000000"
265 ]
266 LabelGraphics
267 [
268 text ""B""
269 outline "#000000"
270 fill "#FFFFFF"
271 fontSize 16
272 fontName "Monospace"
273 autoSizePolicy "node_width"
274 anchor "t"
275 borderDistance 0.0
276 ]
277 LabelGraphics
278 [
279 text "
280 "
281 fontSize 14
282 fontName "Consolas"
283 alignment "left"
284 anchor "tl"
285 borderDistance 6
286 ]
287 ]
288
289 node
290 [
291 id 8
292 graphics
293 [
294 w 269.5
295 h 68
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text "null"
304 outline "#000000"
305 fill "#FFFFFF"
306 fontSize 16
307 fontName "Monospace"
308 autoSizePolicy "node_width"
309 anchor "t"
310 borderDistance 0.0
311 ]
312 LabelGraphics
313 [
314 text "
315 EAnnotation class
316 EModelElement class
317 EModelElement class UndefinedPart
318 "
319 fontSize 14
320 fontName "Consolas"
321 alignment "left"
322 anchor "tl"
323 borderDistance 6
324 ]
325 ]
326
327 node
328 [
329 id 9
330 graphics
331 [
332 w 269.5
333 h 124
334 type "rectangle"
335 fill "#FFFFFF"
336 fill2 "#FFFFFF"
337 outline "#000000"
338 ]
339 LabelGraphics
340 [
341 text "null"
342 outline "#000000"
343 fill "#FFFFFF"
344 fontSize 16
345 fontName "Monospace"
346 autoSizePolicy "node_width"
347 anchor "t"
348 borderDistance 0.0
349 ]
350 LabelGraphics
351 [
352 text "
353 EClassifier class
354 EDataType class
355 EEnum class
356 EModelElement class
357 ENamedElement class
358 EModelElement class UndefinedPart
359 ENamedElement class UndefinedPart
360 "
361 fontSize 14
362 fontName "Consolas"
363 alignment "left"
364 anchor "tl"
365 borderDistance 6
366 ]
367 ]
368
369 node
370 [
371 id 10
372 graphics
373 [
374 w 269.5
375 h 68
376 type "rectangle"
377 fill "#FFFFFF"
378 fill2 "#FFFFFF"
379 outline "#000000"
380 ]
381 LabelGraphics
382 [
383 text "null"
384 outline "#000000"
385 fill "#FFFFFF"
386 fontSize 16
387 fontName "Monospace"
388 autoSizePolicy "node_width"
389 anchor "t"
390 borderDistance 0.0
391 ]
392 LabelGraphics
393 [
394 text "
395 EAnnotation class
396 EModelElement class
397 EModelElement class UndefinedPart
398 "
399 fontSize 14
400 fontName "Consolas"
401 alignment "left"
402 anchor "tl"
403 borderDistance 6
404 ]
405 ]
406
407 node
408 [
409 id 11
410 graphics
411 [
412 w 269.5
413 h 110
414 type "rectangle"
415 fill "#FFFFFF"
416 fill2 "#FFFFFF"
417 outline "#000000"
418 ]
419 LabelGraphics
420 [
421 text "null"
422 outline "#000000"
423 fill "#FFFFFF"
424 fontSize 16
425 fontName "Monospace"
426 autoSizePolicy "node_width"
427 anchor "t"
428 borderDistance 0.0
429 ]
430 LabelGraphics
431 [
432 text "
433 EClass class
434 EClassifier class
435 EModelElement class
436 ENamedElement class
437 EModelElement class UndefinedPart
438 ENamedElement class UndefinedPart
439 "
440 fontSize 14
441 fontName "Consolas"
442 alignment "left"
443 anchor "tl"
444 borderDistance 6
445 ]
446 ]
447
448 node
449 [
450 id 12
451 graphics
452 [
453 w 269.5
454 h 124
455 type "rectangle"
456 fill "#FFFFFF"
457 fill2 "#FFFFFF"
458 outline "#000000"
459 ]
460 LabelGraphics
461 [
462 text "null"
463 outline "#000000"
464 fill "#FFFFFF"
465 fontSize 16
466 fontName "Monospace"
467 autoSizePolicy "node_width"
468 anchor "t"
469 borderDistance 0.0
470 ]
471 LabelGraphics
472 [
473 text "
474 EModelElement class
475 ENamedElement class
476 EReference class
477 EStructuralFeature class
478 ETypedElement class
479 EModelElement class UndefinedPart
480 ENamedElement class UndefinedPart
481 "
482 fontSize 14
483 fontName "Consolas"
484 alignment "left"
485 anchor "tl"
486 borderDistance 6
487 ]
488 ]
489
490 node
491 [
492 id 13
493 graphics
494 [
495 w 112.2
496 h 26
497 type "rectangle"
498 fill "#FFFFFF"
499 fill2 "#FFFFFF"
500 outline "#000000"
501 ]
502 LabelGraphics
503 [
504 text "New Integers"
505 outline "#000000"
506 fill "#FFFFFF"
507 fontSize 16
508 fontName "Monospace"
509 autoSizePolicy "node_width"
510 anchor "t"
511 borderDistance 0.0
512 ]
513 LabelGraphics
514 [
515 text "
516 "
517 fontSize 14
518 fontName "Consolas"
519 alignment "left"
520 anchor "tl"
521 borderDistance 6
522 ]
523 ]
524
525 node
526 [
527 id 14
528 graphics
529 [
530 w 85.80000000000001
531 h 26
532 type "rectangle"
533 fill "#FFFFFF"
534 fill2 "#FFFFFF"
535 outline "#000000"
536 ]
537 LabelGraphics
538 [
539 text "New Reals"
540 outline "#000000"
541 fill "#FFFFFF"
542 fontSize 16
543 fontName "Monospace"
544 autoSizePolicy "node_width"
545 anchor "t"
546 borderDistance 0.0
547 ]
548 LabelGraphics
549 [
550 text "
551 "
552 fontSize 14
553 fontName "Consolas"
554 alignment "left"
555 anchor "tl"
556 borderDistance 6
557 ]
558 ]
559
560 node
561 [
562 id 15
563 graphics
564 [
565 w 103.4
566 h 26
567 type "rectangle"
568 fill "#FFFFFF"
569 fill2 "#FFFFFF"
570 outline "#000000"
571 ]
572 LabelGraphics
573 [
574 text "New Strings"
575 outline "#000000"
576 fill "#FFFFFF"
577 fontSize 16
578 fontName "Monospace"
579 autoSizePolicy "node_width"
580 anchor "t"
581 borderDistance 0.0
582 ]
583 LabelGraphics
584 [
585 text "
586 "
587 fontSize 14
588 fontName "Consolas"
589 alignment "left"
590 anchor "tl"
591 borderDistance 6
592 ]
593 ]
594
595 node
596 [
597 id 16
598 graphics
599 [
600 w 103.4
601 h 26
602 type "rectangle"
603 fill "#FFFFFF"
604 fill2 "#FFFFFF"
605 outline "#000000"
606 ]
607 LabelGraphics
608 [
609 text "New Objects"
610 outline "#000000"
611 fill "#FFFFFF"
612 fontSize 16
613 fontName "Monospace"
614 autoSizePolicy "node_width"
615 anchor "t"
616 borderDistance 0.0
617 ]
618 LabelGraphics
619 [
620 text "
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629 edge
630 [
631 source 8
632 target 0
633 graphics
634 [
635 fill "#000000"
636 targetArrow "standard"
637 ]
638 LabelGraphics
639 [
640 text "eModelElement reference EAnnotation"
641 fontSize 14
642 fontName "Consolas"
643 configuration "AutoFlippingLabel"
644 model "six_pos"
645 position "thead"
646 ]
647 ]
648 edge
649 [
650 source 10
651 target 0
652 graphics
653 [
654 fill "#000000"
655 targetArrow "standard"
656 ]
657 LabelGraphics
658 [
659 text "eModelElement reference EAnnotation"
660 fontSize 14
661 fontName "Consolas"
662 configuration "AutoFlippingLabel"
663 model "six_pos"
664 position "thead"
665 ]
666 ]
667 edge
668 [
669 source 11
670 target 11
671 graphics
672 [
673 fill "#000000"
674 targetArrow "standard"
675 ]
676 LabelGraphics
677 [
678 text "eSuperTypes reference EClass"
679 fontSize 14
680 fontName "Consolas"
681 configuration "AutoFlippingLabel"
682 model "six_pos"
683 position "thead"
684 ]
685 ]
686 edge
687 [
688 source 11
689 target 12
690 graphics
691 [
692 fill "#000000"
693 targetArrow "standard"
694 ]
695 LabelGraphics
696 [
697 text "eReferences reference EClass"
698 fontSize 14
699 fontName "Consolas"
700 configuration "AutoFlippingLabel"
701 model "six_pos"
702 position "thead"
703 ]
704 ]
705 edge
706 [
707 source 11
708 target 12
709 graphics
710 [
711 fill "#000000"
712 targetArrow "standard"
713 ]
714 LabelGraphics
715 [
716 text "eAllContainments reference EClass"
717 fontSize 14
718 fontName "Consolas"
719 configuration "AutoFlippingLabel"
720 model "six_pos"
721 position "thead"
722 ]
723 ]
724 edge
725 [
726 source 11
727 target 12
728 graphics
729 [
730 fill "#000000"
731 targetArrow "standard"
732 ]
733 LabelGraphics
734 [
735 text "eAllStructuralFeatures reference EClass"
736 fontSize 14
737 fontName "Consolas"
738 configuration "AutoFlippingLabel"
739 model "six_pos"
740 position "thead"
741 ]
742 ]
743 edge
744 [
745 source 11
746 target 11
747 graphics
748 [
749 fill "#000000"
750 targetArrow "standard"
751 ]
752 LabelGraphics
753 [
754 text "eAllSuperTypes reference EClass"
755 fontSize 14
756 fontName "Consolas"
757 configuration "AutoFlippingLabel"
758 model "six_pos"
759 position "thead"
760 ]
761 ]
762 edge
763 [
764 source 11
765 target 12
766 graphics
767 [
768 fill "#000000"
769 width 3
770 targetArrow "standard"
771 ]
772 LabelGraphics
773 [
774 text "eStructuralFeatures reference EClass"
775 fontSize 14
776 fontName "Consolas"
777 configuration "AutoFlippingLabel"
778 model "six_pos"
779 position "thead"
780 ]
781 ]
782 edge
783 [
784 source 9
785 target 0
786 graphics
787 [
788 fill "#000000"
789 targetArrow "standard"
790 ]
791 LabelGraphics
792 [
793 text "ePackage reference EClassifier"
794 fontSize 14
795 fontName "Consolas"
796 configuration "AutoFlippingLabel"
797 model "six_pos"
798 position "thead"
799 ]
800 ]
801 edge
802 [
803 source 11
804 target 0
805 graphics
806 [
807 fill "#000000"
808 targetArrow "standard"
809 ]
810 LabelGraphics
811 [
812 text "ePackage reference EClassifier"
813 fontSize 14
814 fontName "Consolas"
815 configuration "AutoFlippingLabel"
816 model "six_pos"
817 position "thead"
818 ]
819 ]
820 edge
821 [
822 source 0
823 target 8
824 graphics
825 [
826 fill "#000000"
827 width 3
828 targetArrow "standard"
829 ]
830 LabelGraphics
831 [
832 text "eAnnotations reference EModelElement"
833 fontSize 14
834 fontName "Consolas"
835 configuration "AutoFlippingLabel"
836 model "six_pos"
837 position "thead"
838 ]
839 ]
840 edge
841 [
842 source 0
843 target 10
844 graphics
845 [
846 fill "#000000"
847 width 3
848 targetArrow "standard"
849 ]
850 LabelGraphics
851 [
852 text "eAnnotations reference EModelElement"
853 fontSize 14
854 fontName "Consolas"
855 configuration "AutoFlippingLabel"
856 model "six_pos"
857 position "thead"
858 ]
859 ]
860 edge
861 [
862 source 0
863 target 9
864 graphics
865 [
866 fill "#000000"
867 width 3
868 targetArrow "standard"
869 ]
870 LabelGraphics
871 [
872 text "eClassifiers reference EPackage"
873 fontSize 14
874 fontName "Consolas"
875 configuration "AutoFlippingLabel"
876 model "six_pos"
877 position "thead"
878 ]
879 ]
880 edge
881 [
882 source 0
883 target 11
884 graphics
885 [
886 fill "#000000"
887 width 3
888 targetArrow "standard"
889 ]
890 LabelGraphics
891 [
892 text "eClassifiers reference EPackage"
893 fontSize 14
894 fontName "Consolas"
895 configuration "AutoFlippingLabel"
896 model "six_pos"
897 position "thead"
898 ]
899 ]
900 edge
901 [
902 source 12
903 target 12
904 graphics
905 [
906 fill "#000000"
907 targetArrow "standard"
908 ]
909 LabelGraphics
910 [
911 text "eOpposite reference EReference"
912 fontSize 14
913 fontName "Consolas"
914 configuration "AutoFlippingLabel"
915 model "six_pos"
916 position "thead"
917 ]
918 ]
919 edge
920 [
921 source 12
922 target 11
923 graphics
924 [
925 fill "#000000"
926 targetArrow "standard"
927 ]
928 LabelGraphics
929 [
930 text "eReferenceType reference EReference"
931 fontSize 14
932 fontName "Consolas"
933 configuration "AutoFlippingLabel"
934 model "six_pos"
935 position "thead"
936 ]
937 ]
938 edge
939 [
940 source 12
941 target 11
942 graphics
943 [
944 fill "#000000"
945 targetArrow "standard"
946 ]
947 LabelGraphics
948 [
949 text "eContainingClass reference EStructuralFeature"
950 fontSize 14
951 fontName "Consolas"
952 configuration "AutoFlippingLabel"
953 model "six_pos"
954 position "thead"
955 ]
956 ]
957 edge
958 [
959 source 12
960 target 11
961 graphics
962 [
963 fill "#000000"
964 targetArrow "standard"
965 ]
966 LabelGraphics
967 [
968 text "eType reference ETypedElement"
969 fontSize 14
970 fontName "Consolas"
971 configuration "AutoFlippingLabel"
972 model "six_pos"
973 position "thead"
974 ]
975 ]
976 edge
977 [
978 source 8
979 target 7
980 graphics
981 [
982 fill "#000000"
983 targetArrow "standard"
984 ]
985 LabelGraphics
986 [
987 text "source attribute EAnnotation"
988 fontSize 14
989 fontName "Consolas"
990 configuration "AutoFlippingLabel"
991 model "six_pos"
992 position "thead"
993 ]
994 ]
995 edge
996 [
997 source 10
998 target 6
999 graphics
1000 [
1001 fill "#000000"
1002 targetArrow "standard"
1003 ]
1004 LabelGraphics
1005 [
1006 text "source attribute EAnnotation"
1007 fontSize 14
1008 fontName "Consolas"
1009 configuration "AutoFlippingLabel"
1010 model "six_pos"
1011 position "thead"
1012 ]
1013 ]
1014 edge
1015 [
1016 source 11
1017 target 2
1018 graphics
1019 [
1020 fill "#000000"
1021 targetArrow "standard"
1022 ]
1023 LabelGraphics
1024 [
1025 text "abstract attribute EClass"
1026 fontSize 14
1027 fontName "Consolas"
1028 configuration "AutoFlippingLabel"
1029 model "six_pos"
1030 position "thead"
1031 ]
1032 ]
1033 edge
1034 [
1035 source 11
1036 target 1
1037 graphics
1038 [
1039 fill "#000000"
1040 targetArrow "standard"
1041 ]
1042 LabelGraphics
1043 [
1044 text "interface attribute EClass"
1045 fontSize 14
1046 fontName "Consolas"
1047 configuration "AutoFlippingLabel"
1048 model "six_pos"
1049 position "thead"
1050 ]
1051 ]
1052 edge
1053 [
1054 source 11
1055 target 7
1056 graphics
1057 [
1058 fill "#000000"
1059 targetArrow "standard"
1060 ]
1061 LabelGraphics
1062 [
1063 text "instanceClassName attribute EClassifier"
1064 fontSize 14
1065 fontName "Consolas"
1066 configuration "AutoFlippingLabel"
1067 model "six_pos"
1068 position "thead"
1069 ]
1070 ]
1071 edge
1072 [
1073 source 11
1074 target 7
1075 graphics
1076 [
1077 fill "#000000"
1078 targetArrow "standard"
1079 ]
1080 LabelGraphics
1081 [
1082 text "instanceTypeName attribute EClassifier"
1083 fontSize 14
1084 fontName "Consolas"
1085 configuration "AutoFlippingLabel"
1086 model "six_pos"
1087 position "thead"
1088 ]
1089 ]
1090 edge
1091 [
1092 source 9
1093 target 7
1094 graphics
1095 [
1096 fill "#000000"
1097 targetArrow "standard"
1098 ]
1099 LabelGraphics
1100 [
1101 text "instanceTypeName attribute EClassifier"
1102 fontSize 14
1103 fontName "Consolas"
1104 configuration "AutoFlippingLabel"
1105 model "six_pos"
1106 position "thead"
1107 ]
1108 ]
1109 edge
1110 [
1111 source 9
1112 target 2
1113 graphics
1114 [
1115 fill "#000000"
1116 targetArrow "standard"
1117 ]
1118 LabelGraphics
1119 [
1120 text "serializable attribute EDataType"
1121 fontSize 14
1122 fontName "Consolas"
1123 configuration "AutoFlippingLabel"
1124 model "six_pos"
1125 position "thead"
1126 ]
1127 ]
1128 edge
1129 [
1130 source 0
1131 target 7
1132 graphics
1133 [
1134 fill "#000000"
1135 targetArrow "standard"
1136 ]
1137 LabelGraphics
1138 [
1139 text "name attribute ENamedElement"
1140 fontSize 14
1141 fontName "Consolas"
1142 configuration "AutoFlippingLabel"
1143 model "six_pos"
1144 position "thead"
1145 ]
1146 ]
1147 edge
1148 [
1149 source 12
1150 target 6
1151 graphics
1152 [
1153 fill "#000000"
1154 targetArrow "standard"
1155 ]
1156 LabelGraphics
1157 [
1158 text "name attribute ENamedElement"
1159 fontSize 14
1160 fontName "Consolas"
1161 configuration "AutoFlippingLabel"
1162 model "six_pos"
1163 position "thead"
1164 ]
1165 ]
1166 edge
1167 [
1168 source 11
1169 target 7
1170 graphics
1171 [
1172 fill "#000000"
1173 targetArrow "standard"
1174 ]
1175 LabelGraphics
1176 [
1177 text "name attribute ENamedElement"
1178 fontSize 14
1179 fontName "Consolas"
1180 configuration "AutoFlippingLabel"
1181 model "six_pos"
1182 position "thead"
1183 ]
1184 ]
1185 edge
1186 [
1187 source 9
1188 target 7
1189 graphics
1190 [
1191 fill "#000000"
1192 targetArrow "standard"
1193 ]
1194 LabelGraphics
1195 [
1196 text "name attribute ENamedElement"
1197 fontSize 14
1198 fontName "Consolas"
1199 configuration "AutoFlippingLabel"
1200 model "six_pos"
1201 position "thead"
1202 ]
1203 ]
1204 edge
1205 [
1206 source 0
1207 target 7
1208 graphics
1209 [
1210 fill "#000000"
1211 targetArrow "standard"
1212 ]
1213 LabelGraphics
1214 [
1215 text "nsURI attribute EPackage"
1216 fontSize 14
1217 fontName "Consolas"
1218 configuration "AutoFlippingLabel"
1219 model "six_pos"
1220 position "thead"
1221 ]
1222 ]
1223 edge
1224 [
1225 source 0
1226 target 7
1227 graphics
1228 [
1229 fill "#000000"
1230 targetArrow "standard"
1231 ]
1232 LabelGraphics
1233 [
1234 text "nsPrefix attribute EPackage"
1235 fontSize 14
1236 fontName "Consolas"
1237 configuration "AutoFlippingLabel"
1238 model "six_pos"
1239 position "thead"
1240 ]
1241 ]
1242 edge
1243 [
1244 source 12
1245 target 2
1246 graphics
1247 [
1248 fill "#000000"
1249 targetArrow "standard"
1250 ]
1251 LabelGraphics
1252 [
1253 text "containment attribute EReference"
1254 fontSize 14
1255 fontName "Consolas"
1256 configuration "AutoFlippingLabel"
1257 model "six_pos"
1258 position "thead"
1259 ]
1260 ]
1261 edge
1262 [
1263 source 12
1264 target 2
1265 graphics
1266 [
1267 fill "#000000"
1268 targetArrow "standard"
1269 ]
1270 LabelGraphics
1271 [
1272 text "container attribute EReference"
1273 fontSize 14
1274 fontName "Consolas"
1275 configuration "AutoFlippingLabel"
1276 model "six_pos"
1277 position "thead"
1278 ]
1279 ]
1280 edge
1281 [
1282 source 12
1283 target 2
1284 graphics
1285 [
1286 fill "#000000"
1287 targetArrow "standard"
1288 ]
1289 LabelGraphics
1290 [
1291 text "resolveProxies attribute EReference"
1292 fontSize 14
1293 fontName "Consolas"
1294 configuration "AutoFlippingLabel"
1295 model "six_pos"
1296 position "thead"
1297 ]
1298 ]
1299 edge
1300 [
1301 source 12
1302 target 2
1303 graphics
1304 [
1305 fill "#000000"
1306 targetArrow "standard"
1307 ]
1308 LabelGraphics
1309 [
1310 text "changeable attribute EStructuralFeature"
1311 fontSize 14
1312 fontName "Consolas"
1313 configuration "AutoFlippingLabel"
1314 model "six_pos"
1315 position "thead"
1316 ]
1317 ]
1318 edge
1319 [
1320 source 12
1321 target 2
1322 graphics
1323 [
1324 fill "#000000"
1325 targetArrow "standard"
1326 ]
1327 LabelGraphics
1328 [
1329 text "volatile attribute EStructuralFeature"
1330 fontSize 14
1331 fontName "Consolas"
1332 configuration "AutoFlippingLabel"
1333 model "six_pos"
1334 position "thead"
1335 ]
1336 ]
1337 edge
1338 [
1339 source 12
1340 target 1
1341 graphics
1342 [
1343 fill "#000000"
1344 targetArrow "standard"
1345 ]
1346 LabelGraphics
1347 [
1348 text "transient attribute EStructuralFeature"
1349 fontSize 14
1350 fontName "Consolas"
1351 configuration "AutoFlippingLabel"
1352 model "six_pos"
1353 position "thead"
1354 ]
1355 ]
1356 edge
1357 [
1358 source 12
1359 target 7
1360 graphics
1361 [
1362 fill "#000000"
1363 targetArrow "standard"
1364 ]
1365 LabelGraphics
1366 [
1367 text "defaultValueLiteral attribute EStructuralFeature"
1368 fontSize 14
1369 fontName "Consolas"
1370 configuration "AutoFlippingLabel"
1371 model "six_pos"
1372 position "thead"
1373 ]
1374 ]
1375 edge
1376 [
1377 source 12
1378 target 2
1379 graphics
1380 [
1381 fill "#000000"
1382 targetArrow "standard"
1383 ]
1384 LabelGraphics
1385 [
1386 text "unsettable attribute EStructuralFeature"
1387 fontSize 14
1388 fontName "Consolas"
1389 configuration "AutoFlippingLabel"
1390 model "six_pos"
1391 position "thead"
1392 ]
1393 ]
1394 edge
1395 [
1396 source 12
1397 target 1
1398 graphics
1399 [
1400 fill "#000000"
1401 targetArrow "standard"
1402 ]
1403 LabelGraphics
1404 [
1405 text "derived attribute EStructuralFeature"
1406 fontSize 14
1407 fontName "Consolas"
1408 configuration "AutoFlippingLabel"
1409 model "six_pos"
1410 position "thead"
1411 ]
1412 ]
1413 edge
1414 [
1415 source 12
1416 target 1
1417 graphics
1418 [
1419 fill "#000000"
1420 targetArrow "standard"
1421 ]
1422 LabelGraphics
1423 [
1424 text "ordered attribute ETypedElement"
1425 fontSize 14
1426 fontName "Consolas"
1427 configuration "AutoFlippingLabel"
1428 model "six_pos"
1429 position "thead"
1430 ]
1431 ]
1432 edge
1433 [
1434 source 12
1435 target 1
1436 graphics
1437 [
1438 fill "#000000"
1439 targetArrow "standard"
1440 ]
1441 LabelGraphics
1442 [
1443 text "unique attribute ETypedElement"
1444 fontSize 14
1445 fontName "Consolas"
1446 configuration "AutoFlippingLabel"
1447 model "six_pos"
1448 position "thead"
1449 ]
1450 ]
1451 edge
1452 [
1453 source 12
1454 target 4
1455 graphics
1456 [
1457 fill "#000000"
1458 targetArrow "standard"
1459 ]
1460 LabelGraphics
1461 [
1462 text "lowerBound attribute ETypedElement"
1463 fontSize 14
1464 fontName "Consolas"
1465 configuration "AutoFlippingLabel"
1466 model "six_pos"
1467 position "thead"
1468 ]
1469 ]
1470 edge
1471 [
1472 source 12
1473 target 5
1474 graphics
1475 [
1476 fill "#000000"
1477 targetArrow "standard"
1478 ]
1479 LabelGraphics
1480 [
1481 text "upperBound attribute ETypedElement"
1482 fontSize 14
1483 fontName "Consolas"
1484 configuration "AutoFlippingLabel"
1485 model "six_pos"
1486 position "thead"
1487 ]
1488 ]
1489 edge
1490 [
1491 source 12
1492 target 1
1493 graphics
1494 [
1495 fill "#000000"
1496 targetArrow "standard"
1497 ]
1498 LabelGraphics
1499 [
1500 text "many attribute ETypedElement"
1501 fontSize 14
1502 fontName "Consolas"
1503 configuration "AutoFlippingLabel"
1504 model "six_pos"
1505 position "thead"
1506 ]
1507 ]
1508 edge
1509 [
1510 source 12
1511 target 2
1512 graphics
1513 [
1514 fill "#000000"
1515 targetArrow "standard"
1516 ]
1517 LabelGraphics
1518 [
1519 text "required attribute ETypedElement"
1520 fontSize 14
1521 fontName "Consolas"
1522 configuration "AutoFlippingLabel"
1523 model "six_pos"
1524 position "thead"
1525 ]
1526 ]
1527]
1528graph
1529[
1530 node
1531 [
1532 id 0
1533 graphics
1534 [
1535 w 254.10000000000002
1536 h 110
1537 type "rectangle"
1538 fill "#FFFFFF"
1539 fill2 "#FFFFFF"
1540 outline "#000000"
1541 ]
1542 LabelGraphics
1543 [
1544 text "o 1"
1545 outline "#000000"
1546 fill "#FFFFFF"
1547 fontSize 16
1548 fontName "Monospace"
1549 autoSizePolicy "node_width"
1550 anchor "t"
1551 borderDistance 0.0
1552 ]
1553 LabelGraphics
1554 [
1555 text "
1556 EModelElement class DefinedPart
1557 ENamedElement class DefinedPart
1558 EPackage class DefinedPart
1559 EModelElement class
1560 ENamedElement class
1561 EPackage class
1562 "
1563 fontSize 14
1564 fontName "Consolas"
1565 alignment "left"
1566 anchor "tl"
1567 borderDistance 6
1568 ]
1569 ]
1570
1571 node
1572 [
1573 id 1
1574 graphics
1575 [
1576 w 41.800000000000004
1577 h 26
1578 type "rectangle"
1579 fill "#FFFFFF"
1580 fill2 "#FFFFFF"
1581 outline "#000000"
1582 ]
1583 LabelGraphics
1584 [
1585 text "true"
1586 outline "#000000"
1587 fill "#FFFFFF"
1588 fontSize 16
1589 fontName "Monospace"
1590 autoSizePolicy "node_width"
1591 anchor "t"
1592 borderDistance 0.0
1593 ]
1594 LabelGraphics
1595 [
1596 text "
1597 "
1598 fontSize 14
1599 fontName "Consolas"
1600 alignment "left"
1601 anchor "tl"
1602 borderDistance 6
1603 ]
1604 ]
1605
1606 node
1607 [
1608 id 2
1609 graphics
1610 [
1611 w 50.6
1612 h 26
1613 type "rectangle"
1614 fill "#FFFFFF"
1615 fill2 "#FFFFFF"
1616 outline "#000000"
1617 ]
1618 LabelGraphics
1619 [
1620 text "false"
1621 outline "#000000"
1622 fill "#FFFFFF"
1623 fontSize 16
1624 fontName "Monospace"
1625 autoSizePolicy "node_width"
1626 anchor "t"
1627 borderDistance 0.0
1628 ]
1629 LabelGraphics
1630 [
1631 text "
1632 "
1633 fontSize 14
1634 fontName "Consolas"
1635 alignment "left"
1636 anchor "tl"
1637 borderDistance 6
1638 ]
1639 ]
1640
1641 node
1642 [
1643 id 3
1644 graphics
1645 [
1646 w 24.200000000000003
1647 h 26
1648 type "rectangle"
1649 fill "#FFFFFF"
1650 fill2 "#FFFFFF"
1651 outline "#000000"
1652 ]
1653 LabelGraphics
1654 [
1655 text "-1"
1656 outline "#000000"
1657 fill "#FFFFFF"
1658 fontSize 16
1659 fontName "Monospace"
1660 autoSizePolicy "node_width"
1661 anchor "t"
1662 borderDistance 0.0
1663 ]
1664 LabelGraphics
1665 [
1666 text "
1667 "
1668 fontSize 14
1669 fontName "Consolas"
1670 alignment "left"
1671 anchor "tl"
1672 borderDistance 6
1673 ]
1674 ]
1675
1676 node
1677 [
1678 id 4
1679 graphics
1680 [
1681 w 15.400000000000002
1682 h 26
1683 type "rectangle"
1684 fill "#FFFFFF"
1685 fill2 "#FFFFFF"
1686 outline "#000000"
1687 ]
1688 LabelGraphics
1689 [
1690 text "0"
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 "
1703 fontSize 14
1704 fontName "Consolas"
1705 alignment "left"
1706 anchor "tl"
1707 borderDistance 6
1708 ]
1709 ]
1710
1711 node
1712 [
1713 id 5
1714 graphics
1715 [
1716 w 15.400000000000002
1717 h 26
1718 type "rectangle"
1719 fill "#FFFFFF"
1720 fill2 "#FFFFFF"
1721 outline "#000000"
1722 ]
1723 LabelGraphics
1724 [
1725 text "1"
1726 outline "#000000"
1727 fill "#FFFFFF"
1728 fontSize 16
1729 fontName "Monospace"
1730 autoSizePolicy "node_width"
1731 anchor "t"
1732 borderDistance 0.0
1733 ]
1734 LabelGraphics
1735 [
1736 text "
1737 "
1738 fontSize 14
1739 fontName "Consolas"
1740 alignment "left"
1741 anchor "tl"
1742 borderDistance 6
1743 ]
1744 ]
1745
1746 node
1747 [
1748 id 6
1749 graphics
1750 [
1751 w 33.0
1752 h 26
1753 type "rectangle"
1754 fill "#FFFFFF"
1755 fill2 "#FFFFFF"
1756 outline "#000000"
1757 ]
1758 LabelGraphics
1759 [
1760 text ""A""
1761 outline "#000000"
1762 fill "#FFFFFF"
1763 fontSize 16
1764 fontName "Monospace"
1765 autoSizePolicy "node_width"
1766 anchor "t"
1767 borderDistance 0.0
1768 ]
1769 LabelGraphics
1770 [
1771 text "
1772 "
1773 fontSize 14
1774 fontName "Consolas"
1775 alignment "left"
1776 anchor "tl"
1777 borderDistance 6
1778 ]
1779 ]
1780
1781 node
1782 [
1783 id 7
1784 graphics
1785 [
1786 w 33.0
1787 h 26
1788 type "rectangle"
1789 fill "#FFFFFF"
1790 fill2 "#FFFFFF"
1791 outline "#000000"
1792 ]
1793 LabelGraphics
1794 [
1795 text ""B""
1796 outline "#000000"
1797 fill "#FFFFFF"
1798 fontSize 16
1799 fontName "Monospace"
1800 autoSizePolicy "node_width"
1801 anchor "t"
1802 borderDistance 0.0
1803 ]
1804 LabelGraphics
1805 [
1806 text "
1807 "
1808 fontSize 14
1809 fontName "Consolas"
1810 alignment "left"
1811 anchor "tl"
1812 borderDistance 6
1813 ]
1814 ]
1815
1816 node
1817 [
1818 id 8
1819 graphics
1820 [
1821 w 94.60000000000001
1822 h 26
1823 type "rectangle"
1824 fill "#FFFFFF"
1825 fill2 "#FFFFFF"
1826 outline "#000000"
1827 ]
1828 LabelGraphics
1829 [
1830 text ""nsPrefix""
1831 outline "#000000"
1832 fill "#FFFFFF"
1833 fontSize 16
1834 fontName "Monospace"
1835 autoSizePolicy "node_width"
1836 anchor "t"
1837 borderDistance 0.0
1838 ]
1839 LabelGraphics
1840 [
1841 text "
1842 "
1843 fontSize 14
1844 fontName "Consolas"
1845 alignment "left"
1846 anchor "tl"
1847 borderDistance 6
1848 ]
1849 ]
1850
1851 node
1852 [
1853 id 9
1854 graphics
1855 [
1856 w 68.2
1857 h 26
1858 type "rectangle"
1859 fill "#FFFFFF"
1860 fill2 "#FFFFFF"
1861 outline "#000000"
1862 ]
1863 LabelGraphics
1864 [
1865 text ""nsUri""
1866 outline "#000000"
1867 fill "#FFFFFF"
1868 fontSize 16
1869 fontName "Monospace"
1870 autoSizePolicy "node_width"
1871 anchor "t"
1872 borderDistance 0.0
1873 ]
1874 LabelGraphics
1875 [
1876 text "
1877 "
1878 fontSize 14
1879 fontName "Consolas"
1880 alignment "left"
1881 anchor "tl"
1882 borderDistance 6
1883 ]
1884 ]
1885
1886 node
1887 [
1888 id 10
1889 graphics
1890 [
1891 w 121.00000000000001
1892 h 26
1893 type "rectangle"
1894 fill "#FFFFFF"
1895 fill2 "#FFFFFF"
1896 outline "#000000"
1897 ]
1898 LabelGraphics
1899 [
1900 text ""packageName""
1901 outline "#000000"
1902 fill "#FFFFFF"
1903 fontSize 16
1904 fontName "Monospace"
1905 autoSizePolicy "node_width"
1906 anchor "t"
1907 borderDistance 0.0
1908 ]
1909 LabelGraphics
1910 [
1911 text "
1912 "
1913 fontSize 14
1914 fontName "Consolas"
1915 alignment "left"
1916 anchor "tl"
1917 borderDistance 6
1918 ]
1919 ]
1920
1921 node
1922 [
1923 id 11
1924 graphics
1925 [
1926 w 269.5
1927 h 124
1928 type "rectangle"
1929 fill "#FFFFFF"
1930 fill2 "#FFFFFF"
1931 outline "#000000"
1932 ]
1933 LabelGraphics
1934 [
1935 text "null"
1936 outline "#000000"
1937 fill "#FFFFFF"
1938 fontSize 16
1939 fontName "Monospace"
1940 autoSizePolicy "node_width"
1941 anchor "t"
1942 borderDistance 0.0
1943 ]
1944 LabelGraphics
1945 [
1946 text "
1947 EClassifier class
1948 EDataType class
1949 EEnum class
1950 EModelElement class
1951 ENamedElement class
1952 EModelElement class UndefinedPart
1953 ENamedElement class UndefinedPart
1954 "
1955 fontSize 14
1956 fontName "Consolas"
1957 alignment "left"
1958 anchor "tl"
1959 borderDistance 6
1960 ]
1961 ]
1962
1963 node
1964 [
1965 id 12
1966 graphics
1967 [
1968 w 269.5
1969 h 110
1970 type "rectangle"
1971 fill "#FFFFFF"
1972 fill2 "#FFFFFF"
1973 outline "#000000"
1974 ]
1975 LabelGraphics
1976 [
1977 text "null"
1978 outline "#000000"
1979 fill "#FFFFFF"
1980 fontSize 16
1981 fontName "Monospace"
1982 autoSizePolicy "node_width"
1983 anchor "t"
1984 borderDistance 0.0
1985 ]
1986 LabelGraphics
1987 [
1988 text "
1989 EClassifier class
1990 EDataType class
1991 EModelElement class
1992 ENamedElement class
1993 EModelElement class UndefinedPart
1994 ENamedElement class UndefinedPart
1995 "
1996 fontSize 14
1997 fontName "Consolas"
1998 alignment "left"
1999 anchor "tl"
2000 borderDistance 6
2001 ]
2002 ]
2003
2004 node
2005 [
2006 id 13
2007 graphics
2008 [
2009 w 269.5
2010 h 68
2011 type "rectangle"
2012 fill "#FFFFFF"
2013 fill2 "#FFFFFF"
2014 outline "#000000"
2015 ]
2016 LabelGraphics
2017 [
2018 text "null"
2019 outline "#000000"
2020 fill "#FFFFFF"
2021 fontSize 16
2022 fontName "Monospace"
2023 autoSizePolicy "node_width"
2024 anchor "t"
2025 borderDistance 0.0
2026 ]
2027 LabelGraphics
2028 [
2029 text "
2030 EAnnotation class
2031 EModelElement class
2032 EModelElement class UndefinedPart
2033 "
2034 fontSize 14
2035 fontName "Consolas"
2036 alignment "left"
2037 anchor "tl"
2038 borderDistance 6
2039 ]
2040 ]
2041
2042 node
2043 [
2044 id 14
2045 graphics
2046 [
2047 w 269.5
2048 h 124
2049 type "rectangle"
2050 fill "#FFFFFF"
2051 fill2 "#FFFFFF"
2052 outline "#000000"
2053 ]
2054 LabelGraphics
2055 [
2056 text "null"
2057 outline "#000000"
2058 fill "#FFFFFF"
2059 fontSize 16
2060 fontName "Monospace"
2061 autoSizePolicy "node_width"
2062 anchor "t"
2063 borderDistance 0.0
2064 ]
2065 LabelGraphics
2066 [
2067 text "
2068 EClassifier class
2069 EDataType class
2070 EEnum class
2071 EModelElement class
2072 ENamedElement class
2073 EModelElement class UndefinedPart
2074 ENamedElement class UndefinedPart
2075 "
2076 fontSize 14
2077 fontName "Consolas"
2078 alignment "left"
2079 anchor "tl"
2080 borderDistance 6
2081 ]
2082 ]
2083
2084 node
2085 [
2086 id 15
2087 graphics
2088 [
2089 w 269.5
2090 h 96
2091 type "rectangle"
2092 fill "#FFFFFF"
2093 fill2 "#FFFFFF"
2094 outline "#000000"
2095 ]
2096 LabelGraphics
2097 [
2098 text "null"
2099 outline "#000000"
2100 fill "#FFFFFF"
2101 fontSize 16
2102 fontName "Monospace"
2103 autoSizePolicy "node_width"
2104 anchor "t"
2105 borderDistance 0.0
2106 ]
2107 LabelGraphics
2108 [
2109 text "
2110 EEnumLiteral class
2111 EModelElement class
2112 ENamedElement class
2113 EModelElement class UndefinedPart
2114 ENamedElement class UndefinedPart
2115 "
2116 fontSize 14
2117 fontName "Consolas"
2118 alignment "left"
2119 anchor "tl"
2120 borderDistance 6
2121 ]
2122 ]
2123
2124 node
2125 [
2126 id 16
2127 graphics
2128 [
2129 w 112.2
2130 h 26
2131 type "rectangle"
2132 fill "#FFFFFF"
2133 fill2 "#FFFFFF"
2134 outline "#000000"
2135 ]
2136 LabelGraphics
2137 [
2138 text "New Integers"
2139 outline "#000000"
2140 fill "#FFFFFF"
2141 fontSize 16
2142 fontName "Monospace"
2143 autoSizePolicy "node_width"
2144 anchor "t"
2145 borderDistance 0.0
2146 ]
2147 LabelGraphics
2148 [
2149 text "
2150 "
2151 fontSize 14
2152 fontName "Consolas"
2153 alignment "left"
2154 anchor "tl"
2155 borderDistance 6
2156 ]
2157 ]
2158
2159 node
2160 [
2161 id 17
2162 graphics
2163 [
2164 w 85.80000000000001
2165 h 26
2166 type "rectangle"
2167 fill "#FFFFFF"
2168 fill2 "#FFFFFF"
2169 outline "#000000"
2170 ]
2171 LabelGraphics
2172 [
2173 text "New Reals"
2174 outline "#000000"
2175 fill "#FFFFFF"
2176 fontSize 16
2177 fontName "Monospace"
2178 autoSizePolicy "node_width"
2179 anchor "t"
2180 borderDistance 0.0
2181 ]
2182 LabelGraphics
2183 [
2184 text "
2185 "
2186 fontSize 14
2187 fontName "Consolas"
2188 alignment "left"
2189 anchor "tl"
2190 borderDistance 6
2191 ]
2192 ]
2193
2194 node
2195 [
2196 id 18
2197 graphics
2198 [
2199 w 103.4
2200 h 26
2201 type "rectangle"
2202 fill "#FFFFFF"
2203 fill2 "#FFFFFF"
2204 outline "#000000"
2205 ]
2206 LabelGraphics
2207 [
2208 text "New Strings"
2209 outline "#000000"
2210 fill "#FFFFFF"
2211 fontSize 16
2212 fontName "Monospace"
2213 autoSizePolicy "node_width"
2214 anchor "t"
2215 borderDistance 0.0
2216 ]
2217 LabelGraphics
2218 [
2219 text "
2220 "
2221 fontSize 14
2222 fontName "Consolas"
2223 alignment "left"
2224 anchor "tl"
2225 borderDistance 6
2226 ]
2227 ]
2228
2229 node
2230 [
2231 id 19
2232 graphics
2233 [
2234 w 103.4
2235 h 26
2236 type "rectangle"
2237 fill "#FFFFFF"
2238 fill2 "#FFFFFF"
2239 outline "#000000"
2240 ]
2241 LabelGraphics
2242 [
2243 text "New Objects"
2244 outline "#000000"
2245 fill "#FFFFFF"
2246 fontSize 16
2247 fontName "Monospace"
2248 autoSizePolicy "node_width"
2249 anchor "t"
2250 borderDistance 0.0
2251 ]
2252 LabelGraphics
2253 [
2254 text "
2255 "
2256 fontSize 14
2257 fontName "Consolas"
2258 alignment "left"
2259 anchor "tl"
2260 borderDistance 6
2261 ]
2262 ]
2263 edge
2264 [
2265 source 13
2266 target 0
2267 graphics
2268 [
2269 fill "#000000"
2270 targetArrow "standard"
2271 ]
2272 LabelGraphics
2273 [
2274 text "eModelElement reference EAnnotation"
2275 fontSize 14
2276 fontName "Consolas"
2277 configuration "AutoFlippingLabel"
2278 model "six_pos"
2279 position "thead"
2280 ]
2281 ]
2282 edge
2283 [
2284 source 11
2285 target 0
2286 graphics
2287 [
2288 fill "#000000"
2289 targetArrow "standard"
2290 ]
2291 LabelGraphics
2292 [
2293 text "ePackage reference EClassifier"
2294 fontSize 14
2295 fontName "Consolas"
2296 configuration "AutoFlippingLabel"
2297 model "six_pos"
2298 position "thead"
2299 ]
2300 ]
2301 edge
2302 [
2303 source 12
2304 target 0
2305 graphics
2306 [
2307 fill "#000000"
2308 targetArrow "standard"
2309 ]
2310 LabelGraphics
2311 [
2312 text "ePackage reference EClassifier"
2313 fontSize 14
2314 fontName "Consolas"
2315 configuration "AutoFlippingLabel"
2316 model "six_pos"
2317 position "thead"
2318 ]
2319 ]
2320 edge
2321 [
2322 source 14
2323 target 0
2324 graphics
2325 [
2326 fill "#000000"
2327 targetArrow "standard"
2328 ]
2329 LabelGraphics
2330 [
2331 text "ePackage reference EClassifier"
2332 fontSize 14
2333 fontName "Consolas"
2334 configuration "AutoFlippingLabel"
2335 model "six_pos"
2336 position "thead"
2337 ]
2338 ]
2339 edge
2340 [
2341 source 14
2342 target 15
2343 graphics
2344 [
2345 fill "#000000"
2346 width 3
2347 targetArrow "standard"
2348 ]
2349 LabelGraphics
2350 [
2351 text "eLiterals reference EEnum"
2352 fontSize 14
2353 fontName "Consolas"
2354 configuration "AutoFlippingLabel"
2355 model "six_pos"
2356 position "thead"
2357 ]
2358 ]
2359 edge
2360 [
2361 source 15
2362 target 14
2363 graphics
2364 [
2365 fill "#000000"
2366 targetArrow "standard"
2367 ]
2368 LabelGraphics
2369 [
2370 text "eEnum reference EEnumLiteral"
2371 fontSize 14
2372 fontName "Consolas"
2373 configuration "AutoFlippingLabel"
2374 model "six_pos"
2375 position "thead"
2376 ]
2377 ]
2378 edge
2379 [
2380 source 0
2381 target 13
2382 graphics
2383 [
2384 fill "#000000"
2385 width 3
2386 targetArrow "standard"
2387 ]
2388 LabelGraphics
2389 [
2390 text "eAnnotations reference EModelElement"
2391 fontSize 14
2392 fontName "Consolas"
2393 configuration "AutoFlippingLabel"
2394 model "six_pos"
2395 position "thead"
2396 ]
2397 ]
2398 edge
2399 [
2400 source 0
2401 target 11
2402 graphics
2403 [
2404 fill "#000000"
2405 width 3
2406 targetArrow "standard"
2407 ]
2408 LabelGraphics
2409 [
2410 text "eClassifiers reference EPackage"
2411 fontSize 14
2412 fontName "Consolas"
2413 configuration "AutoFlippingLabel"
2414 model "six_pos"
2415 position "thead"
2416 ]
2417 ]
2418 edge
2419 [
2420 source 0
2421 target 12
2422 graphics
2423 [
2424 fill "#000000"
2425 width 3
2426 targetArrow "standard"
2427 ]
2428 LabelGraphics
2429 [
2430 text "eClassifiers reference EPackage"
2431 fontSize 14
2432 fontName "Consolas"
2433 configuration "AutoFlippingLabel"
2434 model "six_pos"
2435 position "thead"
2436 ]
2437 ]
2438 edge
2439 [
2440 source 0
2441 target 14
2442 graphics
2443 [
2444 fill "#000000"
2445 width 3
2446 targetArrow "standard"
2447 ]
2448 LabelGraphics
2449 [
2450 text "eClassifiers reference EPackage"
2451 fontSize 14
2452 fontName "Consolas"
2453 configuration "AutoFlippingLabel"
2454 model "six_pos"
2455 position "thead"
2456 ]
2457 ]
2458 edge
2459 [
2460 source 13
2461 target 9
2462 graphics
2463 [
2464 fill "#000000"
2465 targetArrow "standard"
2466 ]
2467 LabelGraphics
2468 [
2469 text "source attribute EAnnotation"
2470 fontSize 14
2471 fontName "Consolas"
2472 configuration "AutoFlippingLabel"
2473 model "six_pos"
2474 position "thead"
2475 ]
2476 ]
2477 edge
2478 [
2479 source 11
2480 target 6
2481 graphics
2482 [
2483 fill "#000000"
2484 targetArrow "standard"
2485 ]
2486 LabelGraphics
2487 [
2488 text "instanceClassName attribute EClassifier"
2489 fontSize 14
2490 fontName "Consolas"
2491 configuration "AutoFlippingLabel"
2492 model "six_pos"
2493 position "thead"
2494 ]
2495 ]
2496 edge
2497 [
2498 source 12
2499 target 10
2500 graphics
2501 [
2502 fill "#000000"
2503 targetArrow "standard"
2504 ]
2505 LabelGraphics
2506 [
2507 text "instanceTypeName attribute EClassifier"
2508 fontSize 14
2509 fontName "Consolas"
2510 configuration "AutoFlippingLabel"
2511 model "six_pos"
2512 position "thead"
2513 ]
2514 ]
2515 edge
2516 [
2517 source 14
2518 target 8
2519 graphics
2520 [
2521 fill "#000000"
2522 targetArrow "standard"
2523 ]
2524 LabelGraphics
2525 [
2526 text "instanceTypeName attribute EClassifier"
2527 fontSize 14
2528 fontName "Consolas"
2529 configuration "AutoFlippingLabel"
2530 model "six_pos"
2531 position "thead"
2532 ]
2533 ]
2534 edge
2535 [
2536 source 12
2537 target 2
2538 graphics
2539 [
2540 fill "#000000"
2541 targetArrow "standard"
2542 ]
2543 LabelGraphics
2544 [
2545 text "serializable attribute EDataType"
2546 fontSize 14
2547 fontName "Consolas"
2548 configuration "AutoFlippingLabel"
2549 model "six_pos"
2550 position "thead"
2551 ]
2552 ]
2553 edge
2554 [
2555 source 14
2556 target 2
2557 graphics
2558 [
2559 fill "#000000"
2560 targetArrow "standard"
2561 ]
2562 LabelGraphics
2563 [
2564 text "serializable attribute EDataType"
2565 fontSize 14
2566 fontName "Consolas"
2567 configuration "AutoFlippingLabel"
2568 model "six_pos"
2569 position "thead"
2570 ]
2571 ]
2572 edge
2573 [
2574 source 15
2575 target 8
2576 graphics
2577 [
2578 fill "#000000"
2579 targetArrow "standard"
2580 ]
2581 LabelGraphics
2582 [
2583 text "literal attribute EEnumLiteral"
2584 fontSize 14
2585 fontName "Consolas"
2586 configuration "AutoFlippingLabel"
2587 model "six_pos"
2588 position "thead"
2589 ]
2590 ]
2591 edge
2592 [
2593 source 0
2594 target 10
2595 graphics
2596 [
2597 fill "#000000"
2598 targetArrow "standard"
2599 ]
2600 LabelGraphics
2601 [
2602 text "name attribute ENamedElement"
2603 fontSize 14
2604 fontName "Consolas"
2605 configuration "AutoFlippingLabel"
2606 model "six_pos"
2607 position "thead"
2608 ]
2609 ]
2610 edge
2611 [
2612 source 11
2613 target 10
2614 graphics
2615 [
2616 fill "#000000"
2617 targetArrow "standard"
2618 ]
2619 LabelGraphics
2620 [
2621 text "name attribute ENamedElement"
2622 fontSize 14
2623 fontName "Consolas"
2624 configuration "AutoFlippingLabel"
2625 model "six_pos"
2626 position "thead"
2627 ]
2628 ]
2629 edge
2630 [
2631 source 12
2632 target 9
2633 graphics
2634 [
2635 fill "#000000"
2636 targetArrow "standard"
2637 ]
2638 LabelGraphics
2639 [
2640 text "name attribute ENamedElement"
2641 fontSize 14
2642 fontName "Consolas"
2643 configuration "AutoFlippingLabel"
2644 model "six_pos"
2645 position "thead"
2646 ]
2647 ]
2648 edge
2649 [
2650 source 14
2651 target 9
2652 graphics
2653 [
2654 fill "#000000"
2655 targetArrow "standard"
2656 ]
2657 LabelGraphics
2658 [
2659 text "name attribute ENamedElement"
2660 fontSize 14
2661 fontName "Consolas"
2662 configuration "AutoFlippingLabel"
2663 model "six_pos"
2664 position "thead"
2665 ]
2666 ]
2667 edge
2668 [
2669 source 0
2670 target 9
2671 graphics
2672 [
2673 fill "#000000"
2674 targetArrow "standard"
2675 ]
2676 LabelGraphics
2677 [
2678 text "nsURI attribute EPackage"
2679 fontSize 14
2680 fontName "Consolas"
2681 configuration "AutoFlippingLabel"
2682 model "six_pos"
2683 position "thead"
2684 ]
2685 ]
2686 edge
2687 [
2688 source 0
2689 target 8
2690 graphics
2691 [
2692 fill "#000000"
2693 targetArrow "standard"
2694 ]
2695 LabelGraphics
2696 [
2697 text "nsPrefix attribute EPackage"
2698 fontSize 14
2699 fontName "Consolas"
2700 configuration "AutoFlippingLabel"
2701 model "six_pos"
2702 position "thead"
2703 ]
2704 ]
2705]
diff --git a/Tests/Ecore-Plugin/outputs/models/3.png b/Tests/Ecore-Plugin/outputs/models/3.png
new file mode 100644
index 00000000..7044ba5e
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/3.png
Binary files differ
diff --git a/Tests/Ecore-Plugin/outputs/models/3.xmi b/Tests/Ecore-Plugin/outputs/models/3.xmi
new file mode 100644
index 00000000..fcf98122
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/3.xmi
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eAnnotations references="//%%%/@contents.0">
4 <details/>
5 <details/>
6 <details/>
7 <contents/>
8 </eAnnotations>
9</ecore:EPackage>
diff --git a/Tests/Ecore-Plugin/outputs/models/4.gml b/Tests/Ecore-Plugin/outputs/models/4.gml
new file mode 100644
index 00000000..5a17812b
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/4.gml
@@ -0,0 +1,2743 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 254.10000000000002
9 h 110
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "o 1"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 EModelElement class DefinedPart
30 ENamedElement class DefinedPart
31 EPackage class DefinedPart
32 EModelElement class
33 ENamedElement class
34 EPackage class
35 "
36 fontSize 14
37 fontName "Consolas"
38 alignment "left"
39 anchor "tl"
40 borderDistance 6
41 ]
42 ]
43
44 node
45 [
46 id 1
47 graphics
48 [
49 w 41.800000000000004
50 h 26
51 type "rectangle"
52 fill "#FFFFFF"
53 fill2 "#FFFFFF"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 text "true"
59 outline "#000000"
60 fill "#FFFFFF"
61 fontSize 16
62 fontName "Monospace"
63 autoSizePolicy "node_width"
64 anchor "t"
65 borderDistance 0.0
66 ]
67 LabelGraphics
68 [
69 text "
70 "
71 fontSize 14
72 fontName "Consolas"
73 alignment "left"
74 anchor "tl"
75 borderDistance 6
76 ]
77 ]
78
79 node
80 [
81 id 2
82 graphics
83 [
84 w 50.6
85 h 26
86 type "rectangle"
87 fill "#FFFFFF"
88 fill2 "#FFFFFF"
89 outline "#000000"
90 ]
91 LabelGraphics
92 [
93 text "false"
94 outline "#000000"
95 fill "#FFFFFF"
96 fontSize 16
97 fontName "Monospace"
98 autoSizePolicy "node_width"
99 anchor "t"
100 borderDistance 0.0
101 ]
102 LabelGraphics
103 [
104 text "
105 "
106 fontSize 14
107 fontName "Consolas"
108 alignment "left"
109 anchor "tl"
110 borderDistance 6
111 ]
112 ]
113
114 node
115 [
116 id 3
117 graphics
118 [
119 w 24.200000000000003
120 h 26
121 type "rectangle"
122 fill "#FFFFFF"
123 fill2 "#FFFFFF"
124 outline "#000000"
125 ]
126 LabelGraphics
127 [
128 text "-1"
129 outline "#000000"
130 fill "#FFFFFF"
131 fontSize 16
132 fontName "Monospace"
133 autoSizePolicy "node_width"
134 anchor "t"
135 borderDistance 0.0
136 ]
137 LabelGraphics
138 [
139 text "
140 "
141 fontSize 14
142 fontName "Consolas"
143 alignment "left"
144 anchor "tl"
145 borderDistance 6
146 ]
147 ]
148
149 node
150 [
151 id 4
152 graphics
153 [
154 w 15.400000000000002
155 h 26
156 type "rectangle"
157 fill "#FFFFFF"
158 fill2 "#FFFFFF"
159 outline "#000000"
160 ]
161 LabelGraphics
162 [
163 text "0"
164 outline "#000000"
165 fill "#FFFFFF"
166 fontSize 16
167 fontName "Monospace"
168 autoSizePolicy "node_width"
169 anchor "t"
170 borderDistance 0.0
171 ]
172 LabelGraphics
173 [
174 text "
175 "
176 fontSize 14
177 fontName "Consolas"
178 alignment "left"
179 anchor "tl"
180 borderDistance 6
181 ]
182 ]
183
184 node
185 [
186 id 5
187 graphics
188 [
189 w 15.400000000000002
190 h 26
191 type "rectangle"
192 fill "#FFFFFF"
193 fill2 "#FFFFFF"
194 outline "#000000"
195 ]
196 LabelGraphics
197 [
198 text "1"
199 outline "#000000"
200 fill "#FFFFFF"
201 fontSize 16
202 fontName "Monospace"
203 autoSizePolicy "node_width"
204 anchor "t"
205 borderDistance 0.0
206 ]
207 LabelGraphics
208 [
209 text "
210 "
211 fontSize 14
212 fontName "Consolas"
213 alignment "left"
214 anchor "tl"
215 borderDistance 6
216 ]
217 ]
218
219 node
220 [
221 id 6
222 graphics
223 [
224 w 33.0
225 h 26
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text ""A""
234 outline "#000000"
235 fill "#FFFFFF"
236 fontSize 16
237 fontName "Monospace"
238 autoSizePolicy "node_width"
239 anchor "t"
240 borderDistance 0.0
241 ]
242 LabelGraphics
243 [
244 text "
245 "
246 fontSize 14
247 fontName "Consolas"
248 alignment "left"
249 anchor "tl"
250 borderDistance 6
251 ]
252 ]
253
254 node
255 [
256 id 7
257 graphics
258 [
259 w 33.0
260 h 26
261 type "rectangle"
262 fill "#FFFFFF"
263 fill2 "#FFFFFF"
264 outline "#000000"
265 ]
266 LabelGraphics
267 [
268 text ""B""
269 outline "#000000"
270 fill "#FFFFFF"
271 fontSize 16
272 fontName "Monospace"
273 autoSizePolicy "node_width"
274 anchor "t"
275 borderDistance 0.0
276 ]
277 LabelGraphics
278 [
279 text "
280 "
281 fontSize 14
282 fontName "Consolas"
283 alignment "left"
284 anchor "tl"
285 borderDistance 6
286 ]
287 ]
288
289 node
290 [
291 id 8
292 graphics
293 [
294 w 269.5
295 h 68
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text "null"
304 outline "#000000"
305 fill "#FFFFFF"
306 fontSize 16
307 fontName "Monospace"
308 autoSizePolicy "node_width"
309 anchor "t"
310 borderDistance 0.0
311 ]
312 LabelGraphics
313 [
314 text "
315 EAnnotation class
316 EModelElement class
317 EModelElement class UndefinedPart
318 "
319 fontSize 14
320 fontName "Consolas"
321 alignment "left"
322 anchor "tl"
323 borderDistance 6
324 ]
325 ]
326
327 node
328 [
329 id 9
330 graphics
331 [
332 w 269.5
333 h 124
334 type "rectangle"
335 fill "#FFFFFF"
336 fill2 "#FFFFFF"
337 outline "#000000"
338 ]
339 LabelGraphics
340 [
341 text "null"
342 outline "#000000"
343 fill "#FFFFFF"
344 fontSize 16
345 fontName "Monospace"
346 autoSizePolicy "node_width"
347 anchor "t"
348 borderDistance 0.0
349 ]
350 LabelGraphics
351 [
352 text "
353 EClassifier class
354 EDataType class
355 EEnum class
356 EModelElement class
357 ENamedElement class
358 EModelElement class UndefinedPart
359 ENamedElement class UndefinedPart
360 "
361 fontSize 14
362 fontName "Consolas"
363 alignment "left"
364 anchor "tl"
365 borderDistance 6
366 ]
367 ]
368
369 node
370 [
371 id 10
372 graphics
373 [
374 w 269.5
375 h 68
376 type "rectangle"
377 fill "#FFFFFF"
378 fill2 "#FFFFFF"
379 outline "#000000"
380 ]
381 LabelGraphics
382 [
383 text "null"
384 outline "#000000"
385 fill "#FFFFFF"
386 fontSize 16
387 fontName "Monospace"
388 autoSizePolicy "node_width"
389 anchor "t"
390 borderDistance 0.0
391 ]
392 LabelGraphics
393 [
394 text "
395 EAnnotation class
396 EModelElement class
397 EModelElement class UndefinedPart
398 "
399 fontSize 14
400 fontName "Consolas"
401 alignment "left"
402 anchor "tl"
403 borderDistance 6
404 ]
405 ]
406
407 node
408 [
409 id 11
410 graphics
411 [
412 w 269.5
413 h 110
414 type "rectangle"
415 fill "#FFFFFF"
416 fill2 "#FFFFFF"
417 outline "#000000"
418 ]
419 LabelGraphics
420 [
421 text "null"
422 outline "#000000"
423 fill "#FFFFFF"
424 fontSize 16
425 fontName "Monospace"
426 autoSizePolicy "node_width"
427 anchor "t"
428 borderDistance 0.0
429 ]
430 LabelGraphics
431 [
432 text "
433 EClass class
434 EClassifier class
435 EModelElement class
436 ENamedElement class
437 EModelElement class UndefinedPart
438 ENamedElement class UndefinedPart
439 "
440 fontSize 14
441 fontName "Consolas"
442 alignment "left"
443 anchor "tl"
444 borderDistance 6
445 ]
446 ]
447
448 node
449 [
450 id 12
451 graphics
452 [
453 w 269.5
454 h 124
455 type "rectangle"
456 fill "#FFFFFF"
457 fill2 "#FFFFFF"
458 outline "#000000"
459 ]
460 LabelGraphics
461 [
462 text "null"
463 outline "#000000"
464 fill "#FFFFFF"
465 fontSize 16
466 fontName "Monospace"
467 autoSizePolicy "node_width"
468 anchor "t"
469 borderDistance 0.0
470 ]
471 LabelGraphics
472 [
473 text "
474 EModelElement class
475 ENamedElement class
476 EReference class
477 EStructuralFeature class
478 ETypedElement class
479 EModelElement class UndefinedPart
480 ENamedElement class UndefinedPart
481 "
482 fontSize 14
483 fontName "Consolas"
484 alignment "left"
485 anchor "tl"
486 borderDistance 6
487 ]
488 ]
489
490 node
491 [
492 id 13
493 graphics
494 [
495 w 112.2
496 h 26
497 type "rectangle"
498 fill "#FFFFFF"
499 fill2 "#FFFFFF"
500 outline "#000000"
501 ]
502 LabelGraphics
503 [
504 text "New Integers"
505 outline "#000000"
506 fill "#FFFFFF"
507 fontSize 16
508 fontName "Monospace"
509 autoSizePolicy "node_width"
510 anchor "t"
511 borderDistance 0.0
512 ]
513 LabelGraphics
514 [
515 text "
516 "
517 fontSize 14
518 fontName "Consolas"
519 alignment "left"
520 anchor "tl"
521 borderDistance 6
522 ]
523 ]
524
525 node
526 [
527 id 14
528 graphics
529 [
530 w 85.80000000000001
531 h 26
532 type "rectangle"
533 fill "#FFFFFF"
534 fill2 "#FFFFFF"
535 outline "#000000"
536 ]
537 LabelGraphics
538 [
539 text "New Reals"
540 outline "#000000"
541 fill "#FFFFFF"
542 fontSize 16
543 fontName "Monospace"
544 autoSizePolicy "node_width"
545 anchor "t"
546 borderDistance 0.0
547 ]
548 LabelGraphics
549 [
550 text "
551 "
552 fontSize 14
553 fontName "Consolas"
554 alignment "left"
555 anchor "tl"
556 borderDistance 6
557 ]
558 ]
559
560 node
561 [
562 id 15
563 graphics
564 [
565 w 103.4
566 h 26
567 type "rectangle"
568 fill "#FFFFFF"
569 fill2 "#FFFFFF"
570 outline "#000000"
571 ]
572 LabelGraphics
573 [
574 text "New Strings"
575 outline "#000000"
576 fill "#FFFFFF"
577 fontSize 16
578 fontName "Monospace"
579 autoSizePolicy "node_width"
580 anchor "t"
581 borderDistance 0.0
582 ]
583 LabelGraphics
584 [
585 text "
586 "
587 fontSize 14
588 fontName "Consolas"
589 alignment "left"
590 anchor "tl"
591 borderDistance 6
592 ]
593 ]
594
595 node
596 [
597 id 16
598 graphics
599 [
600 w 103.4
601 h 26
602 type "rectangle"
603 fill "#FFFFFF"
604 fill2 "#FFFFFF"
605 outline "#000000"
606 ]
607 LabelGraphics
608 [
609 text "New Objects"
610 outline "#000000"
611 fill "#FFFFFF"
612 fontSize 16
613 fontName "Monospace"
614 autoSizePolicy "node_width"
615 anchor "t"
616 borderDistance 0.0
617 ]
618 LabelGraphics
619 [
620 text "
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629 edge
630 [
631 source 8
632 target 0
633 graphics
634 [
635 fill "#000000"
636 targetArrow "standard"
637 ]
638 LabelGraphics
639 [
640 text "eModelElement reference EAnnotation"
641 fontSize 14
642 fontName "Consolas"
643 configuration "AutoFlippingLabel"
644 model "six_pos"
645 position "thead"
646 ]
647 ]
648 edge
649 [
650 source 10
651 target 0
652 graphics
653 [
654 fill "#000000"
655 targetArrow "standard"
656 ]
657 LabelGraphics
658 [
659 text "eModelElement reference EAnnotation"
660 fontSize 14
661 fontName "Consolas"
662 configuration "AutoFlippingLabel"
663 model "six_pos"
664 position "thead"
665 ]
666 ]
667 edge
668 [
669 source 11
670 target 11
671 graphics
672 [
673 fill "#000000"
674 targetArrow "standard"
675 ]
676 LabelGraphics
677 [
678 text "eSuperTypes reference EClass"
679 fontSize 14
680 fontName "Consolas"
681 configuration "AutoFlippingLabel"
682 model "six_pos"
683 position "thead"
684 ]
685 ]
686 edge
687 [
688 source 11
689 target 12
690 graphics
691 [
692 fill "#000000"
693 targetArrow "standard"
694 ]
695 LabelGraphics
696 [
697 text "eAllReferences reference EClass"
698 fontSize 14
699 fontName "Consolas"
700 configuration "AutoFlippingLabel"
701 model "six_pos"
702 position "thead"
703 ]
704 ]
705 edge
706 [
707 source 11
708 target 12
709 graphics
710 [
711 fill "#000000"
712 targetArrow "standard"
713 ]
714 LabelGraphics
715 [
716 text "eReferences reference EClass"
717 fontSize 14
718 fontName "Consolas"
719 configuration "AutoFlippingLabel"
720 model "six_pos"
721 position "thead"
722 ]
723 ]
724 edge
725 [
726 source 11
727 target 12
728 graphics
729 [
730 fill "#000000"
731 targetArrow "standard"
732 ]
733 LabelGraphics
734 [
735 text "eAllContainments reference EClass"
736 fontSize 14
737 fontName "Consolas"
738 configuration "AutoFlippingLabel"
739 model "six_pos"
740 position "thead"
741 ]
742 ]
743 edge
744 [
745 source 11
746 target 12
747 graphics
748 [
749 fill "#000000"
750 targetArrow "standard"
751 ]
752 LabelGraphics
753 [
754 text "eAllStructuralFeatures reference EClass"
755 fontSize 14
756 fontName "Consolas"
757 configuration "AutoFlippingLabel"
758 model "six_pos"
759 position "thead"
760 ]
761 ]
762 edge
763 [
764 source 11
765 target 11
766 graphics
767 [
768 fill "#000000"
769 targetArrow "standard"
770 ]
771 LabelGraphics
772 [
773 text "eAllSuperTypes reference EClass"
774 fontSize 14
775 fontName "Consolas"
776 configuration "AutoFlippingLabel"
777 model "six_pos"
778 position "thead"
779 ]
780 ]
781 edge
782 [
783 source 11
784 target 12
785 graphics
786 [
787 fill "#000000"
788 width 3
789 targetArrow "standard"
790 ]
791 LabelGraphics
792 [
793 text "eStructuralFeatures reference EClass"
794 fontSize 14
795 fontName "Consolas"
796 configuration "AutoFlippingLabel"
797 model "six_pos"
798 position "thead"
799 ]
800 ]
801 edge
802 [
803 source 9
804 target 0
805 graphics
806 [
807 fill "#000000"
808 targetArrow "standard"
809 ]
810 LabelGraphics
811 [
812 text "ePackage reference EClassifier"
813 fontSize 14
814 fontName "Consolas"
815 configuration "AutoFlippingLabel"
816 model "six_pos"
817 position "thead"
818 ]
819 ]
820 edge
821 [
822 source 11
823 target 0
824 graphics
825 [
826 fill "#000000"
827 targetArrow "standard"
828 ]
829 LabelGraphics
830 [
831 text "ePackage reference EClassifier"
832 fontSize 14
833 fontName "Consolas"
834 configuration "AutoFlippingLabel"
835 model "six_pos"
836 position "thead"
837 ]
838 ]
839 edge
840 [
841 source 0
842 target 8
843 graphics
844 [
845 fill "#000000"
846 width 3
847 targetArrow "standard"
848 ]
849 LabelGraphics
850 [
851 text "eAnnotations reference EModelElement"
852 fontSize 14
853 fontName "Consolas"
854 configuration "AutoFlippingLabel"
855 model "six_pos"
856 position "thead"
857 ]
858 ]
859 edge
860 [
861 source 0
862 target 10
863 graphics
864 [
865 fill "#000000"
866 width 3
867 targetArrow "standard"
868 ]
869 LabelGraphics
870 [
871 text "eAnnotations reference EModelElement"
872 fontSize 14
873 fontName "Consolas"
874 configuration "AutoFlippingLabel"
875 model "six_pos"
876 position "thead"
877 ]
878 ]
879 edge
880 [
881 source 0
882 target 9
883 graphics
884 [
885 fill "#000000"
886 width 3
887 targetArrow "standard"
888 ]
889 LabelGraphics
890 [
891 text "eClassifiers reference EPackage"
892 fontSize 14
893 fontName "Consolas"
894 configuration "AutoFlippingLabel"
895 model "six_pos"
896 position "thead"
897 ]
898 ]
899 edge
900 [
901 source 0
902 target 11
903 graphics
904 [
905 fill "#000000"
906 width 3
907 targetArrow "standard"
908 ]
909 LabelGraphics
910 [
911 text "eClassifiers reference EPackage"
912 fontSize 14
913 fontName "Consolas"
914 configuration "AutoFlippingLabel"
915 model "six_pos"
916 position "thead"
917 ]
918 ]
919 edge
920 [
921 source 12
922 target 12
923 graphics
924 [
925 fill "#000000"
926 targetArrow "standard"
927 ]
928 LabelGraphics
929 [
930 text "eOpposite reference EReference"
931 fontSize 14
932 fontName "Consolas"
933 configuration "AutoFlippingLabel"
934 model "six_pos"
935 position "thead"
936 ]
937 ]
938 edge
939 [
940 source 12
941 target 11
942 graphics
943 [
944 fill "#000000"
945 targetArrow "standard"
946 ]
947 LabelGraphics
948 [
949 text "eReferenceType reference EReference"
950 fontSize 14
951 fontName "Consolas"
952 configuration "AutoFlippingLabel"
953 model "six_pos"
954 position "thead"
955 ]
956 ]
957 edge
958 [
959 source 12
960 target 11
961 graphics
962 [
963 fill "#000000"
964 targetArrow "standard"
965 ]
966 LabelGraphics
967 [
968 text "eContainingClass reference EStructuralFeature"
969 fontSize 14
970 fontName "Consolas"
971 configuration "AutoFlippingLabel"
972 model "six_pos"
973 position "thead"
974 ]
975 ]
976 edge
977 [
978 source 12
979 target 11
980 graphics
981 [
982 fill "#000000"
983 targetArrow "standard"
984 ]
985 LabelGraphics
986 [
987 text "eType reference ETypedElement"
988 fontSize 14
989 fontName "Consolas"
990 configuration "AutoFlippingLabel"
991 model "six_pos"
992 position "thead"
993 ]
994 ]
995 edge
996 [
997 source 8
998 target 7
999 graphics
1000 [
1001 fill "#000000"
1002 targetArrow "standard"
1003 ]
1004 LabelGraphics
1005 [
1006 text "source attribute EAnnotation"
1007 fontSize 14
1008 fontName "Consolas"
1009 configuration "AutoFlippingLabel"
1010 model "six_pos"
1011 position "thead"
1012 ]
1013 ]
1014 edge
1015 [
1016 source 10
1017 target 6
1018 graphics
1019 [
1020 fill "#000000"
1021 targetArrow "standard"
1022 ]
1023 LabelGraphics
1024 [
1025 text "source attribute EAnnotation"
1026 fontSize 14
1027 fontName "Consolas"
1028 configuration "AutoFlippingLabel"
1029 model "six_pos"
1030 position "thead"
1031 ]
1032 ]
1033 edge
1034 [
1035 source 11
1036 target 2
1037 graphics
1038 [
1039 fill "#000000"
1040 targetArrow "standard"
1041 ]
1042 LabelGraphics
1043 [
1044 text "abstract attribute EClass"
1045 fontSize 14
1046 fontName "Consolas"
1047 configuration "AutoFlippingLabel"
1048 model "six_pos"
1049 position "thead"
1050 ]
1051 ]
1052 edge
1053 [
1054 source 11
1055 target 1
1056 graphics
1057 [
1058 fill "#000000"
1059 targetArrow "standard"
1060 ]
1061 LabelGraphics
1062 [
1063 text "interface attribute EClass"
1064 fontSize 14
1065 fontName "Consolas"
1066 configuration "AutoFlippingLabel"
1067 model "six_pos"
1068 position "thead"
1069 ]
1070 ]
1071 edge
1072 [
1073 source 11
1074 target 7
1075 graphics
1076 [
1077 fill "#000000"
1078 targetArrow "standard"
1079 ]
1080 LabelGraphics
1081 [
1082 text "instanceClassName attribute EClassifier"
1083 fontSize 14
1084 fontName "Consolas"
1085 configuration "AutoFlippingLabel"
1086 model "six_pos"
1087 position "thead"
1088 ]
1089 ]
1090 edge
1091 [
1092 source 11
1093 target 7
1094 graphics
1095 [
1096 fill "#000000"
1097 targetArrow "standard"
1098 ]
1099 LabelGraphics
1100 [
1101 text "instanceTypeName attribute EClassifier"
1102 fontSize 14
1103 fontName "Consolas"
1104 configuration "AutoFlippingLabel"
1105 model "six_pos"
1106 position "thead"
1107 ]
1108 ]
1109 edge
1110 [
1111 source 9
1112 target 7
1113 graphics
1114 [
1115 fill "#000000"
1116 targetArrow "standard"
1117 ]
1118 LabelGraphics
1119 [
1120 text "instanceTypeName attribute EClassifier"
1121 fontSize 14
1122 fontName "Consolas"
1123 configuration "AutoFlippingLabel"
1124 model "six_pos"
1125 position "thead"
1126 ]
1127 ]
1128 edge
1129 [
1130 source 9
1131 target 2
1132 graphics
1133 [
1134 fill "#000000"
1135 targetArrow "standard"
1136 ]
1137 LabelGraphics
1138 [
1139 text "serializable attribute EDataType"
1140 fontSize 14
1141 fontName "Consolas"
1142 configuration "AutoFlippingLabel"
1143 model "six_pos"
1144 position "thead"
1145 ]
1146 ]
1147 edge
1148 [
1149 source 0
1150 target 7
1151 graphics
1152 [
1153 fill "#000000"
1154 targetArrow "standard"
1155 ]
1156 LabelGraphics
1157 [
1158 text "name attribute ENamedElement"
1159 fontSize 14
1160 fontName "Consolas"
1161 configuration "AutoFlippingLabel"
1162 model "six_pos"
1163 position "thead"
1164 ]
1165 ]
1166 edge
1167 [
1168 source 12
1169 target 6
1170 graphics
1171 [
1172 fill "#000000"
1173 targetArrow "standard"
1174 ]
1175 LabelGraphics
1176 [
1177 text "name attribute ENamedElement"
1178 fontSize 14
1179 fontName "Consolas"
1180 configuration "AutoFlippingLabel"
1181 model "six_pos"
1182 position "thead"
1183 ]
1184 ]
1185 edge
1186 [
1187 source 11
1188 target 7
1189 graphics
1190 [
1191 fill "#000000"
1192 targetArrow "standard"
1193 ]
1194 LabelGraphics
1195 [
1196 text "name attribute ENamedElement"
1197 fontSize 14
1198 fontName "Consolas"
1199 configuration "AutoFlippingLabel"
1200 model "six_pos"
1201 position "thead"
1202 ]
1203 ]
1204 edge
1205 [
1206 source 9
1207 target 7
1208 graphics
1209 [
1210 fill "#000000"
1211 targetArrow "standard"
1212 ]
1213 LabelGraphics
1214 [
1215 text "name attribute ENamedElement"
1216 fontSize 14
1217 fontName "Consolas"
1218 configuration "AutoFlippingLabel"
1219 model "six_pos"
1220 position "thead"
1221 ]
1222 ]
1223 edge
1224 [
1225 source 0
1226 target 7
1227 graphics
1228 [
1229 fill "#000000"
1230 targetArrow "standard"
1231 ]
1232 LabelGraphics
1233 [
1234 text "nsURI attribute EPackage"
1235 fontSize 14
1236 fontName "Consolas"
1237 configuration "AutoFlippingLabel"
1238 model "six_pos"
1239 position "thead"
1240 ]
1241 ]
1242 edge
1243 [
1244 source 0
1245 target 7
1246 graphics
1247 [
1248 fill "#000000"
1249 targetArrow "standard"
1250 ]
1251 LabelGraphics
1252 [
1253 text "nsPrefix attribute EPackage"
1254 fontSize 14
1255 fontName "Consolas"
1256 configuration "AutoFlippingLabel"
1257 model "six_pos"
1258 position "thead"
1259 ]
1260 ]
1261 edge
1262 [
1263 source 12
1264 target 2
1265 graphics
1266 [
1267 fill "#000000"
1268 targetArrow "standard"
1269 ]
1270 LabelGraphics
1271 [
1272 text "containment attribute EReference"
1273 fontSize 14
1274 fontName "Consolas"
1275 configuration "AutoFlippingLabel"
1276 model "six_pos"
1277 position "thead"
1278 ]
1279 ]
1280 edge
1281 [
1282 source 12
1283 target 2
1284 graphics
1285 [
1286 fill "#000000"
1287 targetArrow "standard"
1288 ]
1289 LabelGraphics
1290 [
1291 text "container attribute EReference"
1292 fontSize 14
1293 fontName "Consolas"
1294 configuration "AutoFlippingLabel"
1295 model "six_pos"
1296 position "thead"
1297 ]
1298 ]
1299 edge
1300 [
1301 source 12
1302 target 2
1303 graphics
1304 [
1305 fill "#000000"
1306 targetArrow "standard"
1307 ]
1308 LabelGraphics
1309 [
1310 text "resolveProxies attribute EReference"
1311 fontSize 14
1312 fontName "Consolas"
1313 configuration "AutoFlippingLabel"
1314 model "six_pos"
1315 position "thead"
1316 ]
1317 ]
1318 edge
1319 [
1320 source 12
1321 target 2
1322 graphics
1323 [
1324 fill "#000000"
1325 targetArrow "standard"
1326 ]
1327 LabelGraphics
1328 [
1329 text "changeable attribute EStructuralFeature"
1330 fontSize 14
1331 fontName "Consolas"
1332 configuration "AutoFlippingLabel"
1333 model "six_pos"
1334 position "thead"
1335 ]
1336 ]
1337 edge
1338 [
1339 source 12
1340 target 2
1341 graphics
1342 [
1343 fill "#000000"
1344 targetArrow "standard"
1345 ]
1346 LabelGraphics
1347 [
1348 text "volatile attribute EStructuralFeature"
1349 fontSize 14
1350 fontName "Consolas"
1351 configuration "AutoFlippingLabel"
1352 model "six_pos"
1353 position "thead"
1354 ]
1355 ]
1356 edge
1357 [
1358 source 12
1359 target 1
1360 graphics
1361 [
1362 fill "#000000"
1363 targetArrow "standard"
1364 ]
1365 LabelGraphics
1366 [
1367 text "transient attribute EStructuralFeature"
1368 fontSize 14
1369 fontName "Consolas"
1370 configuration "AutoFlippingLabel"
1371 model "six_pos"
1372 position "thead"
1373 ]
1374 ]
1375 edge
1376 [
1377 source 12
1378 target 7
1379 graphics
1380 [
1381 fill "#000000"
1382 targetArrow "standard"
1383 ]
1384 LabelGraphics
1385 [
1386 text "defaultValueLiteral attribute EStructuralFeature"
1387 fontSize 14
1388 fontName "Consolas"
1389 configuration "AutoFlippingLabel"
1390 model "six_pos"
1391 position "thead"
1392 ]
1393 ]
1394 edge
1395 [
1396 source 12
1397 target 2
1398 graphics
1399 [
1400 fill "#000000"
1401 targetArrow "standard"
1402 ]
1403 LabelGraphics
1404 [
1405 text "unsettable attribute EStructuralFeature"
1406 fontSize 14
1407 fontName "Consolas"
1408 configuration "AutoFlippingLabel"
1409 model "six_pos"
1410 position "thead"
1411 ]
1412 ]
1413 edge
1414 [
1415 source 12
1416 target 1
1417 graphics
1418 [
1419 fill "#000000"
1420 targetArrow "standard"
1421 ]
1422 LabelGraphics
1423 [
1424 text "derived attribute EStructuralFeature"
1425 fontSize 14
1426 fontName "Consolas"
1427 configuration "AutoFlippingLabel"
1428 model "six_pos"
1429 position "thead"
1430 ]
1431 ]
1432 edge
1433 [
1434 source 12
1435 target 1
1436 graphics
1437 [
1438 fill "#000000"
1439 targetArrow "standard"
1440 ]
1441 LabelGraphics
1442 [
1443 text "ordered attribute ETypedElement"
1444 fontSize 14
1445 fontName "Consolas"
1446 configuration "AutoFlippingLabel"
1447 model "six_pos"
1448 position "thead"
1449 ]
1450 ]
1451 edge
1452 [
1453 source 12
1454 target 1
1455 graphics
1456 [
1457 fill "#000000"
1458 targetArrow "standard"
1459 ]
1460 LabelGraphics
1461 [
1462 text "unique attribute ETypedElement"
1463 fontSize 14
1464 fontName "Consolas"
1465 configuration "AutoFlippingLabel"
1466 model "six_pos"
1467 position "thead"
1468 ]
1469 ]
1470 edge
1471 [
1472 source 12
1473 target 4
1474 graphics
1475 [
1476 fill "#000000"
1477 targetArrow "standard"
1478 ]
1479 LabelGraphics
1480 [
1481 text "lowerBound attribute ETypedElement"
1482 fontSize 14
1483 fontName "Consolas"
1484 configuration "AutoFlippingLabel"
1485 model "six_pos"
1486 position "thead"
1487 ]
1488 ]
1489 edge
1490 [
1491 source 12
1492 target 5
1493 graphics
1494 [
1495 fill "#000000"
1496 targetArrow "standard"
1497 ]
1498 LabelGraphics
1499 [
1500 text "upperBound attribute ETypedElement"
1501 fontSize 14
1502 fontName "Consolas"
1503 configuration "AutoFlippingLabel"
1504 model "six_pos"
1505 position "thead"
1506 ]
1507 ]
1508 edge
1509 [
1510 source 12
1511 target 1
1512 graphics
1513 [
1514 fill "#000000"
1515 targetArrow "standard"
1516 ]
1517 LabelGraphics
1518 [
1519 text "many attribute ETypedElement"
1520 fontSize 14
1521 fontName "Consolas"
1522 configuration "AutoFlippingLabel"
1523 model "six_pos"
1524 position "thead"
1525 ]
1526 ]
1527 edge
1528 [
1529 source 12
1530 target 2
1531 graphics
1532 [
1533 fill "#000000"
1534 targetArrow "standard"
1535 ]
1536 LabelGraphics
1537 [
1538 text "required attribute ETypedElement"
1539 fontSize 14
1540 fontName "Consolas"
1541 configuration "AutoFlippingLabel"
1542 model "six_pos"
1543 position "thead"
1544 ]
1545 ]
1546]
1547graph
1548[
1549 node
1550 [
1551 id 0
1552 graphics
1553 [
1554 w 254.10000000000002
1555 h 110
1556 type "rectangle"
1557 fill "#FFFFFF"
1558 fill2 "#FFFFFF"
1559 outline "#000000"
1560 ]
1561 LabelGraphics
1562 [
1563 text "o 1"
1564 outline "#000000"
1565 fill "#FFFFFF"
1566 fontSize 16
1567 fontName "Monospace"
1568 autoSizePolicy "node_width"
1569 anchor "t"
1570 borderDistance 0.0
1571 ]
1572 LabelGraphics
1573 [
1574 text "
1575 EModelElement class DefinedPart
1576 ENamedElement class DefinedPart
1577 EPackage class DefinedPart
1578 EModelElement class
1579 ENamedElement class
1580 EPackage class
1581 "
1582 fontSize 14
1583 fontName "Consolas"
1584 alignment "left"
1585 anchor "tl"
1586 borderDistance 6
1587 ]
1588 ]
1589
1590 node
1591 [
1592 id 1
1593 graphics
1594 [
1595 w 41.800000000000004
1596 h 26
1597 type "rectangle"
1598 fill "#FFFFFF"
1599 fill2 "#FFFFFF"
1600 outline "#000000"
1601 ]
1602 LabelGraphics
1603 [
1604 text "true"
1605 outline "#000000"
1606 fill "#FFFFFF"
1607 fontSize 16
1608 fontName "Monospace"
1609 autoSizePolicy "node_width"
1610 anchor "t"
1611 borderDistance 0.0
1612 ]
1613 LabelGraphics
1614 [
1615 text "
1616 "
1617 fontSize 14
1618 fontName "Consolas"
1619 alignment "left"
1620 anchor "tl"
1621 borderDistance 6
1622 ]
1623 ]
1624
1625 node
1626 [
1627 id 2
1628 graphics
1629 [
1630 w 50.6
1631 h 26
1632 type "rectangle"
1633 fill "#FFFFFF"
1634 fill2 "#FFFFFF"
1635 outline "#000000"
1636 ]
1637 LabelGraphics
1638 [
1639 text "false"
1640 outline "#000000"
1641 fill "#FFFFFF"
1642 fontSize 16
1643 fontName "Monospace"
1644 autoSizePolicy "node_width"
1645 anchor "t"
1646 borderDistance 0.0
1647 ]
1648 LabelGraphics
1649 [
1650 text "
1651 "
1652 fontSize 14
1653 fontName "Consolas"
1654 alignment "left"
1655 anchor "tl"
1656 borderDistance 6
1657 ]
1658 ]
1659
1660 node
1661 [
1662 id 3
1663 graphics
1664 [
1665 w 24.200000000000003
1666 h 26
1667 type "rectangle"
1668 fill "#FFFFFF"
1669 fill2 "#FFFFFF"
1670 outline "#000000"
1671 ]
1672 LabelGraphics
1673 [
1674 text "-1"
1675 outline "#000000"
1676 fill "#FFFFFF"
1677 fontSize 16
1678 fontName "Monospace"
1679 autoSizePolicy "node_width"
1680 anchor "t"
1681 borderDistance 0.0
1682 ]
1683 LabelGraphics
1684 [
1685 text "
1686 "
1687 fontSize 14
1688 fontName "Consolas"
1689 alignment "left"
1690 anchor "tl"
1691 borderDistance 6
1692 ]
1693 ]
1694
1695 node
1696 [
1697 id 4
1698 graphics
1699 [
1700 w 15.400000000000002
1701 h 26
1702 type "rectangle"
1703 fill "#FFFFFF"
1704 fill2 "#FFFFFF"
1705 outline "#000000"
1706 ]
1707 LabelGraphics
1708 [
1709 text "0"
1710 outline "#000000"
1711 fill "#FFFFFF"
1712 fontSize 16
1713 fontName "Monospace"
1714 autoSizePolicy "node_width"
1715 anchor "t"
1716 borderDistance 0.0
1717 ]
1718 LabelGraphics
1719 [
1720 text "
1721 "
1722 fontSize 14
1723 fontName "Consolas"
1724 alignment "left"
1725 anchor "tl"
1726 borderDistance 6
1727 ]
1728 ]
1729
1730 node
1731 [
1732 id 5
1733 graphics
1734 [
1735 w 15.400000000000002
1736 h 26
1737 type "rectangle"
1738 fill "#FFFFFF"
1739 fill2 "#FFFFFF"
1740 outline "#000000"
1741 ]
1742 LabelGraphics
1743 [
1744 text "1"
1745 outline "#000000"
1746 fill "#FFFFFF"
1747 fontSize 16
1748 fontName "Monospace"
1749 autoSizePolicy "node_width"
1750 anchor "t"
1751 borderDistance 0.0
1752 ]
1753 LabelGraphics
1754 [
1755 text "
1756 "
1757 fontSize 14
1758 fontName "Consolas"
1759 alignment "left"
1760 anchor "tl"
1761 borderDistance 6
1762 ]
1763 ]
1764
1765 node
1766 [
1767 id 6
1768 graphics
1769 [
1770 w 33.0
1771 h 26
1772 type "rectangle"
1773 fill "#FFFFFF"
1774 fill2 "#FFFFFF"
1775 outline "#000000"
1776 ]
1777 LabelGraphics
1778 [
1779 text ""A""
1780 outline "#000000"
1781 fill "#FFFFFF"
1782 fontSize 16
1783 fontName "Monospace"
1784 autoSizePolicy "node_width"
1785 anchor "t"
1786 borderDistance 0.0
1787 ]
1788 LabelGraphics
1789 [
1790 text "
1791 "
1792 fontSize 14
1793 fontName "Consolas"
1794 alignment "left"
1795 anchor "tl"
1796 borderDistance 6
1797 ]
1798 ]
1799
1800 node
1801 [
1802 id 7
1803 graphics
1804 [
1805 w 33.0
1806 h 26
1807 type "rectangle"
1808 fill "#FFFFFF"
1809 fill2 "#FFFFFF"
1810 outline "#000000"
1811 ]
1812 LabelGraphics
1813 [
1814 text ""B""
1815 outline "#000000"
1816 fill "#FFFFFF"
1817 fontSize 16
1818 fontName "Monospace"
1819 autoSizePolicy "node_width"
1820 anchor "t"
1821 borderDistance 0.0
1822 ]
1823 LabelGraphics
1824 [
1825 text "
1826 "
1827 fontSize 14
1828 fontName "Consolas"
1829 alignment "left"
1830 anchor "tl"
1831 borderDistance 6
1832 ]
1833 ]
1834
1835 node
1836 [
1837 id 8
1838 graphics
1839 [
1840 w 94.60000000000001
1841 h 26
1842 type "rectangle"
1843 fill "#FFFFFF"
1844 fill2 "#FFFFFF"
1845 outline "#000000"
1846 ]
1847 LabelGraphics
1848 [
1849 text ""nsPrefix""
1850 outline "#000000"
1851 fill "#FFFFFF"
1852 fontSize 16
1853 fontName "Monospace"
1854 autoSizePolicy "node_width"
1855 anchor "t"
1856 borderDistance 0.0
1857 ]
1858 LabelGraphics
1859 [
1860 text "
1861 "
1862 fontSize 14
1863 fontName "Consolas"
1864 alignment "left"
1865 anchor "tl"
1866 borderDistance 6
1867 ]
1868 ]
1869
1870 node
1871 [
1872 id 9
1873 graphics
1874 [
1875 w 68.2
1876 h 26
1877 type "rectangle"
1878 fill "#FFFFFF"
1879 fill2 "#FFFFFF"
1880 outline "#000000"
1881 ]
1882 LabelGraphics
1883 [
1884 text ""nsUri""
1885 outline "#000000"
1886 fill "#FFFFFF"
1887 fontSize 16
1888 fontName "Monospace"
1889 autoSizePolicy "node_width"
1890 anchor "t"
1891 borderDistance 0.0
1892 ]
1893 LabelGraphics
1894 [
1895 text "
1896 "
1897 fontSize 14
1898 fontName "Consolas"
1899 alignment "left"
1900 anchor "tl"
1901 borderDistance 6
1902 ]
1903 ]
1904
1905 node
1906 [
1907 id 10
1908 graphics
1909 [
1910 w 121.00000000000001
1911 h 26
1912 type "rectangle"
1913 fill "#FFFFFF"
1914 fill2 "#FFFFFF"
1915 outline "#000000"
1916 ]
1917 LabelGraphics
1918 [
1919 text ""packageName""
1920 outline "#000000"
1921 fill "#FFFFFF"
1922 fontSize 16
1923 fontName "Monospace"
1924 autoSizePolicy "node_width"
1925 anchor "t"
1926 borderDistance 0.0
1927 ]
1928 LabelGraphics
1929 [
1930 text "
1931 "
1932 fontSize 14
1933 fontName "Consolas"
1934 alignment "left"
1935 anchor "tl"
1936 borderDistance 6
1937 ]
1938 ]
1939
1940 node
1941 [
1942 id 11
1943 graphics
1944 [
1945 w 269.5
1946 h 124
1947 type "rectangle"
1948 fill "#FFFFFF"
1949 fill2 "#FFFFFF"
1950 outline "#000000"
1951 ]
1952 LabelGraphics
1953 [
1954 text "null"
1955 outline "#000000"
1956 fill "#FFFFFF"
1957 fontSize 16
1958 fontName "Monospace"
1959 autoSizePolicy "node_width"
1960 anchor "t"
1961 borderDistance 0.0
1962 ]
1963 LabelGraphics
1964 [
1965 text "
1966 EClassifier class
1967 EDataType class
1968 EEnum class
1969 EModelElement class
1970 ENamedElement class
1971 EModelElement class UndefinedPart
1972 ENamedElement class UndefinedPart
1973 "
1974 fontSize 14
1975 fontName "Consolas"
1976 alignment "left"
1977 anchor "tl"
1978 borderDistance 6
1979 ]
1980 ]
1981
1982 node
1983 [
1984 id 12
1985 graphics
1986 [
1987 w 269.5
1988 h 110
1989 type "rectangle"
1990 fill "#FFFFFF"
1991 fill2 "#FFFFFF"
1992 outline "#000000"
1993 ]
1994 LabelGraphics
1995 [
1996 text "null"
1997 outline "#000000"
1998 fill "#FFFFFF"
1999 fontSize 16
2000 fontName "Monospace"
2001 autoSizePolicy "node_width"
2002 anchor "t"
2003 borderDistance 0.0
2004 ]
2005 LabelGraphics
2006 [
2007 text "
2008 EClassifier class
2009 EDataType class
2010 EModelElement class
2011 ENamedElement class
2012 EModelElement class UndefinedPart
2013 ENamedElement class UndefinedPart
2014 "
2015 fontSize 14
2016 fontName "Consolas"
2017 alignment "left"
2018 anchor "tl"
2019 borderDistance 6
2020 ]
2021 ]
2022
2023 node
2024 [
2025 id 13
2026 graphics
2027 [
2028 w 269.5
2029 h 68
2030 type "rectangle"
2031 fill "#FFFFFF"
2032 fill2 "#FFFFFF"
2033 outline "#000000"
2034 ]
2035 LabelGraphics
2036 [
2037 text "null"
2038 outline "#000000"
2039 fill "#FFFFFF"
2040 fontSize 16
2041 fontName "Monospace"
2042 autoSizePolicy "node_width"
2043 anchor "t"
2044 borderDistance 0.0
2045 ]
2046 LabelGraphics
2047 [
2048 text "
2049 EAnnotation class
2050 EModelElement class
2051 EModelElement class UndefinedPart
2052 "
2053 fontSize 14
2054 fontName "Consolas"
2055 alignment "left"
2056 anchor "tl"
2057 borderDistance 6
2058 ]
2059 ]
2060
2061 node
2062 [
2063 id 14
2064 graphics
2065 [
2066 w 269.5
2067 h 124
2068 type "rectangle"
2069 fill "#FFFFFF"
2070 fill2 "#FFFFFF"
2071 outline "#000000"
2072 ]
2073 LabelGraphics
2074 [
2075 text "null"
2076 outline "#000000"
2077 fill "#FFFFFF"
2078 fontSize 16
2079 fontName "Monospace"
2080 autoSizePolicy "node_width"
2081 anchor "t"
2082 borderDistance 0.0
2083 ]
2084 LabelGraphics
2085 [
2086 text "
2087 EClassifier class
2088 EDataType class
2089 EEnum class
2090 EModelElement class
2091 ENamedElement class
2092 EModelElement class UndefinedPart
2093 ENamedElement class UndefinedPart
2094 "
2095 fontSize 14
2096 fontName "Consolas"
2097 alignment "left"
2098 anchor "tl"
2099 borderDistance 6
2100 ]
2101 ]
2102
2103 node
2104 [
2105 id 15
2106 graphics
2107 [
2108 w 269.5
2109 h 96
2110 type "rectangle"
2111 fill "#FFFFFF"
2112 fill2 "#FFFFFF"
2113 outline "#000000"
2114 ]
2115 LabelGraphics
2116 [
2117 text "null"
2118 outline "#000000"
2119 fill "#FFFFFF"
2120 fontSize 16
2121 fontName "Monospace"
2122 autoSizePolicy "node_width"
2123 anchor "t"
2124 borderDistance 0.0
2125 ]
2126 LabelGraphics
2127 [
2128 text "
2129 EEnumLiteral class
2130 EModelElement class
2131 ENamedElement class
2132 EModelElement class UndefinedPart
2133 ENamedElement class UndefinedPart
2134 "
2135 fontSize 14
2136 fontName "Consolas"
2137 alignment "left"
2138 anchor "tl"
2139 borderDistance 6
2140 ]
2141 ]
2142
2143 node
2144 [
2145 id 16
2146 graphics
2147 [
2148 w 112.2
2149 h 26
2150 type "rectangle"
2151 fill "#FFFFFF"
2152 fill2 "#FFFFFF"
2153 outline "#000000"
2154 ]
2155 LabelGraphics
2156 [
2157 text "New Integers"
2158 outline "#000000"
2159 fill "#FFFFFF"
2160 fontSize 16
2161 fontName "Monospace"
2162 autoSizePolicy "node_width"
2163 anchor "t"
2164 borderDistance 0.0
2165 ]
2166 LabelGraphics
2167 [
2168 text "
2169 "
2170 fontSize 14
2171 fontName "Consolas"
2172 alignment "left"
2173 anchor "tl"
2174 borderDistance 6
2175 ]
2176 ]
2177
2178 node
2179 [
2180 id 17
2181 graphics
2182 [
2183 w 85.80000000000001
2184 h 26
2185 type "rectangle"
2186 fill "#FFFFFF"
2187 fill2 "#FFFFFF"
2188 outline "#000000"
2189 ]
2190 LabelGraphics
2191 [
2192 text "New Reals"
2193 outline "#000000"
2194 fill "#FFFFFF"
2195 fontSize 16
2196 fontName "Monospace"
2197 autoSizePolicy "node_width"
2198 anchor "t"
2199 borderDistance 0.0
2200 ]
2201 LabelGraphics
2202 [
2203 text "
2204 "
2205 fontSize 14
2206 fontName "Consolas"
2207 alignment "left"
2208 anchor "tl"
2209 borderDistance 6
2210 ]
2211 ]
2212
2213 node
2214 [
2215 id 18
2216 graphics
2217 [
2218 w 103.4
2219 h 26
2220 type "rectangle"
2221 fill "#FFFFFF"
2222 fill2 "#FFFFFF"
2223 outline "#000000"
2224 ]
2225 LabelGraphics
2226 [
2227 text "New Strings"
2228 outline "#000000"
2229 fill "#FFFFFF"
2230 fontSize 16
2231 fontName "Monospace"
2232 autoSizePolicy "node_width"
2233 anchor "t"
2234 borderDistance 0.0
2235 ]
2236 LabelGraphics
2237 [
2238 text "
2239 "
2240 fontSize 14
2241 fontName "Consolas"
2242 alignment "left"
2243 anchor "tl"
2244 borderDistance 6
2245 ]
2246 ]
2247
2248 node
2249 [
2250 id 19
2251 graphics
2252 [
2253 w 103.4
2254 h 26
2255 type "rectangle"
2256 fill "#FFFFFF"
2257 fill2 "#FFFFFF"
2258 outline "#000000"
2259 ]
2260 LabelGraphics
2261 [
2262 text "New Objects"
2263 outline "#000000"
2264 fill "#FFFFFF"
2265 fontSize 16
2266 fontName "Monospace"
2267 autoSizePolicy "node_width"
2268 anchor "t"
2269 borderDistance 0.0
2270 ]
2271 LabelGraphics
2272 [
2273 text "
2274 "
2275 fontSize 14
2276 fontName "Consolas"
2277 alignment "left"
2278 anchor "tl"
2279 borderDistance 6
2280 ]
2281 ]
2282 edge
2283 [
2284 source 13
2285 target 0
2286 graphics
2287 [
2288 fill "#000000"
2289 targetArrow "standard"
2290 ]
2291 LabelGraphics
2292 [
2293 text "eModelElement reference EAnnotation"
2294 fontSize 14
2295 fontName "Consolas"
2296 configuration "AutoFlippingLabel"
2297 model "six_pos"
2298 position "thead"
2299 ]
2300 ]
2301 edge
2302 [
2303 source 11
2304 target 0
2305 graphics
2306 [
2307 fill "#000000"
2308 targetArrow "standard"
2309 ]
2310 LabelGraphics
2311 [
2312 text "ePackage reference EClassifier"
2313 fontSize 14
2314 fontName "Consolas"
2315 configuration "AutoFlippingLabel"
2316 model "six_pos"
2317 position "thead"
2318 ]
2319 ]
2320 edge
2321 [
2322 source 12
2323 target 0
2324 graphics
2325 [
2326 fill "#000000"
2327 targetArrow "standard"
2328 ]
2329 LabelGraphics
2330 [
2331 text "ePackage reference EClassifier"
2332 fontSize 14
2333 fontName "Consolas"
2334 configuration "AutoFlippingLabel"
2335 model "six_pos"
2336 position "thead"
2337 ]
2338 ]
2339 edge
2340 [
2341 source 14
2342 target 0
2343 graphics
2344 [
2345 fill "#000000"
2346 targetArrow "standard"
2347 ]
2348 LabelGraphics
2349 [
2350 text "ePackage reference EClassifier"
2351 fontSize 14
2352 fontName "Consolas"
2353 configuration "AutoFlippingLabel"
2354 model "six_pos"
2355 position "thead"
2356 ]
2357 ]
2358 edge
2359 [
2360 source 14
2361 target 15
2362 graphics
2363 [
2364 fill "#000000"
2365 width 3
2366 targetArrow "standard"
2367 ]
2368 LabelGraphics
2369 [
2370 text "eLiterals reference EEnum"
2371 fontSize 14
2372 fontName "Consolas"
2373 configuration "AutoFlippingLabel"
2374 model "six_pos"
2375 position "thead"
2376 ]
2377 ]
2378 edge
2379 [
2380 source 15
2381 target 14
2382 graphics
2383 [
2384 fill "#000000"
2385 targetArrow "standard"
2386 ]
2387 LabelGraphics
2388 [
2389 text "eEnum reference EEnumLiteral"
2390 fontSize 14
2391 fontName "Consolas"
2392 configuration "AutoFlippingLabel"
2393 model "six_pos"
2394 position "thead"
2395 ]
2396 ]
2397 edge
2398 [
2399 source 0
2400 target 13
2401 graphics
2402 [
2403 fill "#000000"
2404 width 3
2405 targetArrow "standard"
2406 ]
2407 LabelGraphics
2408 [
2409 text "eAnnotations reference EModelElement"
2410 fontSize 14
2411 fontName "Consolas"
2412 configuration "AutoFlippingLabel"
2413 model "six_pos"
2414 position "thead"
2415 ]
2416 ]
2417 edge
2418 [
2419 source 0
2420 target 11
2421 graphics
2422 [
2423 fill "#000000"
2424 width 3
2425 targetArrow "standard"
2426 ]
2427 LabelGraphics
2428 [
2429 text "eClassifiers reference EPackage"
2430 fontSize 14
2431 fontName "Consolas"
2432 configuration "AutoFlippingLabel"
2433 model "six_pos"
2434 position "thead"
2435 ]
2436 ]
2437 edge
2438 [
2439 source 0
2440 target 12
2441 graphics
2442 [
2443 fill "#000000"
2444 width 3
2445 targetArrow "standard"
2446 ]
2447 LabelGraphics
2448 [
2449 text "eClassifiers reference EPackage"
2450 fontSize 14
2451 fontName "Consolas"
2452 configuration "AutoFlippingLabel"
2453 model "six_pos"
2454 position "thead"
2455 ]
2456 ]
2457 edge
2458 [
2459 source 0
2460 target 14
2461 graphics
2462 [
2463 fill "#000000"
2464 width 3
2465 targetArrow "standard"
2466 ]
2467 LabelGraphics
2468 [
2469 text "eClassifiers reference EPackage"
2470 fontSize 14
2471 fontName "Consolas"
2472 configuration "AutoFlippingLabel"
2473 model "six_pos"
2474 position "thead"
2475 ]
2476 ]
2477 edge
2478 [
2479 source 13
2480 target 9
2481 graphics
2482 [
2483 fill "#000000"
2484 targetArrow "standard"
2485 ]
2486 LabelGraphics
2487 [
2488 text "source attribute EAnnotation"
2489 fontSize 14
2490 fontName "Consolas"
2491 configuration "AutoFlippingLabel"
2492 model "six_pos"
2493 position "thead"
2494 ]
2495 ]
2496 edge
2497 [
2498 source 11
2499 target 6
2500 graphics
2501 [
2502 fill "#000000"
2503 targetArrow "standard"
2504 ]
2505 LabelGraphics
2506 [
2507 text "instanceClassName attribute EClassifier"
2508 fontSize 14
2509 fontName "Consolas"
2510 configuration "AutoFlippingLabel"
2511 model "six_pos"
2512 position "thead"
2513 ]
2514 ]
2515 edge
2516 [
2517 source 12
2518 target 10
2519 graphics
2520 [
2521 fill "#000000"
2522 targetArrow "standard"
2523 ]
2524 LabelGraphics
2525 [
2526 text "instanceTypeName attribute EClassifier"
2527 fontSize 14
2528 fontName "Consolas"
2529 configuration "AutoFlippingLabel"
2530 model "six_pos"
2531 position "thead"
2532 ]
2533 ]
2534 edge
2535 [
2536 source 14
2537 target 8
2538 graphics
2539 [
2540 fill "#000000"
2541 targetArrow "standard"
2542 ]
2543 LabelGraphics
2544 [
2545 text "instanceTypeName attribute EClassifier"
2546 fontSize 14
2547 fontName "Consolas"
2548 configuration "AutoFlippingLabel"
2549 model "six_pos"
2550 position "thead"
2551 ]
2552 ]
2553 edge
2554 [
2555 source 12
2556 target 2
2557 graphics
2558 [
2559 fill "#000000"
2560 targetArrow "standard"
2561 ]
2562 LabelGraphics
2563 [
2564 text "serializable attribute EDataType"
2565 fontSize 14
2566 fontName "Consolas"
2567 configuration "AutoFlippingLabel"
2568 model "six_pos"
2569 position "thead"
2570 ]
2571 ]
2572 edge
2573 [
2574 source 14
2575 target 2
2576 graphics
2577 [
2578 fill "#000000"
2579 targetArrow "standard"
2580 ]
2581 LabelGraphics
2582 [
2583 text "serializable attribute EDataType"
2584 fontSize 14
2585 fontName "Consolas"
2586 configuration "AutoFlippingLabel"
2587 model "six_pos"
2588 position "thead"
2589 ]
2590 ]
2591 edge
2592 [
2593 source 11
2594 target 1
2595 graphics
2596 [
2597 fill "#000000"
2598 targetArrow "standard"
2599 ]
2600 LabelGraphics
2601 [
2602 text "serializable attribute EDataType"
2603 fontSize 14
2604 fontName "Consolas"
2605 configuration "AutoFlippingLabel"
2606 model "six_pos"
2607 position "thead"
2608 ]
2609 ]
2610 edge
2611 [
2612 source 15
2613 target 8
2614 graphics
2615 [
2616 fill "#000000"
2617 targetArrow "standard"
2618 ]
2619 LabelGraphics
2620 [
2621 text "literal attribute EEnumLiteral"
2622 fontSize 14
2623 fontName "Consolas"
2624 configuration "AutoFlippingLabel"
2625 model "six_pos"
2626 position "thead"
2627 ]
2628 ]
2629 edge
2630 [
2631 source 0
2632 target 10
2633 graphics
2634 [
2635 fill "#000000"
2636 targetArrow "standard"
2637 ]
2638 LabelGraphics
2639 [
2640 text "name attribute ENamedElement"
2641 fontSize 14
2642 fontName "Consolas"
2643 configuration "AutoFlippingLabel"
2644 model "six_pos"
2645 position "thead"
2646 ]
2647 ]
2648 edge
2649 [
2650 source 11
2651 target 10
2652 graphics
2653 [
2654 fill "#000000"
2655 targetArrow "standard"
2656 ]
2657 LabelGraphics
2658 [
2659 text "name attribute ENamedElement"
2660 fontSize 14
2661 fontName "Consolas"
2662 configuration "AutoFlippingLabel"
2663 model "six_pos"
2664 position "thead"
2665 ]
2666 ]
2667 edge
2668 [
2669 source 12
2670 target 9
2671 graphics
2672 [
2673 fill "#000000"
2674 targetArrow "standard"
2675 ]
2676 LabelGraphics
2677 [
2678 text "name attribute ENamedElement"
2679 fontSize 14
2680 fontName "Consolas"
2681 configuration "AutoFlippingLabel"
2682 model "six_pos"
2683 position "thead"
2684 ]
2685 ]
2686 edge
2687 [
2688 source 14
2689 target 9
2690 graphics
2691 [
2692 fill "#000000"
2693 targetArrow "standard"
2694 ]
2695 LabelGraphics
2696 [
2697 text "name attribute ENamedElement"
2698 fontSize 14
2699 fontName "Consolas"
2700 configuration "AutoFlippingLabel"
2701 model "six_pos"
2702 position "thead"
2703 ]
2704 ]
2705 edge
2706 [
2707 source 0
2708 target 9
2709 graphics
2710 [
2711 fill "#000000"
2712 targetArrow "standard"
2713 ]
2714 LabelGraphics
2715 [
2716 text "nsURI attribute EPackage"
2717 fontSize 14
2718 fontName "Consolas"
2719 configuration "AutoFlippingLabel"
2720 model "six_pos"
2721 position "thead"
2722 ]
2723 ]
2724 edge
2725 [
2726 source 0
2727 target 8
2728 graphics
2729 [
2730 fill "#000000"
2731 targetArrow "standard"
2732 ]
2733 LabelGraphics
2734 [
2735 text "nsPrefix attribute EPackage"
2736 fontSize 14
2737 fontName "Consolas"
2738 configuration "AutoFlippingLabel"
2739 model "six_pos"
2740 position "thead"
2741 ]
2742 ]
2743]
diff --git a/Tests/Ecore-Plugin/outputs/models/4.png b/Tests/Ecore-Plugin/outputs/models/4.png
new file mode 100644
index 00000000..ae461ce6
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/4.png
Binary files differ
diff --git a/Tests/Ecore-Plugin/outputs/models/4.xmi b/Tests/Ecore-Plugin/outputs/models/4.xmi
new file mode 100644
index 00000000..dba5a3f6
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/4.xmi
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eAnnotations source="packageName">
4 <details/>
5 <details/>
6 <details/>
7 <contents/>
8 </eAnnotations>
9</ecore:EPackage>
diff --git a/Tests/Ecore-Plugin/outputs/models/5.gml b/Tests/Ecore-Plugin/outputs/models/5.gml
new file mode 100644
index 00000000..7eedbcf9
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/5.gml
@@ -0,0 +1,2781 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 254.10000000000002
9 h 110
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "o 1"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 EModelElement class DefinedPart
30 ENamedElement class DefinedPart
31 EPackage class DefinedPart
32 EModelElement class
33 ENamedElement class
34 EPackage class
35 "
36 fontSize 14
37 fontName "Consolas"
38 alignment "left"
39 anchor "tl"
40 borderDistance 6
41 ]
42 ]
43
44 node
45 [
46 id 1
47 graphics
48 [
49 w 41.800000000000004
50 h 26
51 type "rectangle"
52 fill "#FFFFFF"
53 fill2 "#FFFFFF"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 text "true"
59 outline "#000000"
60 fill "#FFFFFF"
61 fontSize 16
62 fontName "Monospace"
63 autoSizePolicy "node_width"
64 anchor "t"
65 borderDistance 0.0
66 ]
67 LabelGraphics
68 [
69 text "
70 "
71 fontSize 14
72 fontName "Consolas"
73 alignment "left"
74 anchor "tl"
75 borderDistance 6
76 ]
77 ]
78
79 node
80 [
81 id 2
82 graphics
83 [
84 w 50.6
85 h 26
86 type "rectangle"
87 fill "#FFFFFF"
88 fill2 "#FFFFFF"
89 outline "#000000"
90 ]
91 LabelGraphics
92 [
93 text "false"
94 outline "#000000"
95 fill "#FFFFFF"
96 fontSize 16
97 fontName "Monospace"
98 autoSizePolicy "node_width"
99 anchor "t"
100 borderDistance 0.0
101 ]
102 LabelGraphics
103 [
104 text "
105 "
106 fontSize 14
107 fontName "Consolas"
108 alignment "left"
109 anchor "tl"
110 borderDistance 6
111 ]
112 ]
113
114 node
115 [
116 id 3
117 graphics
118 [
119 w 24.200000000000003
120 h 26
121 type "rectangle"
122 fill "#FFFFFF"
123 fill2 "#FFFFFF"
124 outline "#000000"
125 ]
126 LabelGraphics
127 [
128 text "-1"
129 outline "#000000"
130 fill "#FFFFFF"
131 fontSize 16
132 fontName "Monospace"
133 autoSizePolicy "node_width"
134 anchor "t"
135 borderDistance 0.0
136 ]
137 LabelGraphics
138 [
139 text "
140 "
141 fontSize 14
142 fontName "Consolas"
143 alignment "left"
144 anchor "tl"
145 borderDistance 6
146 ]
147 ]
148
149 node
150 [
151 id 4
152 graphics
153 [
154 w 15.400000000000002
155 h 26
156 type "rectangle"
157 fill "#FFFFFF"
158 fill2 "#FFFFFF"
159 outline "#000000"
160 ]
161 LabelGraphics
162 [
163 text "0"
164 outline "#000000"
165 fill "#FFFFFF"
166 fontSize 16
167 fontName "Monospace"
168 autoSizePolicy "node_width"
169 anchor "t"
170 borderDistance 0.0
171 ]
172 LabelGraphics
173 [
174 text "
175 "
176 fontSize 14
177 fontName "Consolas"
178 alignment "left"
179 anchor "tl"
180 borderDistance 6
181 ]
182 ]
183
184 node
185 [
186 id 5
187 graphics
188 [
189 w 15.400000000000002
190 h 26
191 type "rectangle"
192 fill "#FFFFFF"
193 fill2 "#FFFFFF"
194 outline "#000000"
195 ]
196 LabelGraphics
197 [
198 text "1"
199 outline "#000000"
200 fill "#FFFFFF"
201 fontSize 16
202 fontName "Monospace"
203 autoSizePolicy "node_width"
204 anchor "t"
205 borderDistance 0.0
206 ]
207 LabelGraphics
208 [
209 text "
210 "
211 fontSize 14
212 fontName "Consolas"
213 alignment "left"
214 anchor "tl"
215 borderDistance 6
216 ]
217 ]
218
219 node
220 [
221 id 6
222 graphics
223 [
224 w 33.0
225 h 26
226 type "rectangle"
227 fill "#FFFFFF"
228 fill2 "#FFFFFF"
229 outline "#000000"
230 ]
231 LabelGraphics
232 [
233 text ""A""
234 outline "#000000"
235 fill "#FFFFFF"
236 fontSize 16
237 fontName "Monospace"
238 autoSizePolicy "node_width"
239 anchor "t"
240 borderDistance 0.0
241 ]
242 LabelGraphics
243 [
244 text "
245 "
246 fontSize 14
247 fontName "Consolas"
248 alignment "left"
249 anchor "tl"
250 borderDistance 6
251 ]
252 ]
253
254 node
255 [
256 id 7
257 graphics
258 [
259 w 33.0
260 h 26
261 type "rectangle"
262 fill "#FFFFFF"
263 fill2 "#FFFFFF"
264 outline "#000000"
265 ]
266 LabelGraphics
267 [
268 text ""B""
269 outline "#000000"
270 fill "#FFFFFF"
271 fontSize 16
272 fontName "Monospace"
273 autoSizePolicy "node_width"
274 anchor "t"
275 borderDistance 0.0
276 ]
277 LabelGraphics
278 [
279 text "
280 "
281 fontSize 14
282 fontName "Consolas"
283 alignment "left"
284 anchor "tl"
285 borderDistance 6
286 ]
287 ]
288
289 node
290 [
291 id 8
292 graphics
293 [
294 w 269.5
295 h 68
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text "null"
304 outline "#000000"
305 fill "#FFFFFF"
306 fontSize 16
307 fontName "Monospace"
308 autoSizePolicy "node_width"
309 anchor "t"
310 borderDistance 0.0
311 ]
312 LabelGraphics
313 [
314 text "
315 EAnnotation class
316 EModelElement class
317 EModelElement class UndefinedPart
318 "
319 fontSize 14
320 fontName "Consolas"
321 alignment "left"
322 anchor "tl"
323 borderDistance 6
324 ]
325 ]
326
327 node
328 [
329 id 9
330 graphics
331 [
332 w 269.5
333 h 124
334 type "rectangle"
335 fill "#FFFFFF"
336 fill2 "#FFFFFF"
337 outline "#000000"
338 ]
339 LabelGraphics
340 [
341 text "null"
342 outline "#000000"
343 fill "#FFFFFF"
344 fontSize 16
345 fontName "Monospace"
346 autoSizePolicy "node_width"
347 anchor "t"
348 borderDistance 0.0
349 ]
350 LabelGraphics
351 [
352 text "
353 EClassifier class
354 EDataType class
355 EEnum class
356 EModelElement class
357 ENamedElement class
358 EModelElement class UndefinedPart
359 ENamedElement class UndefinedPart
360 "
361 fontSize 14
362 fontName "Consolas"
363 alignment "left"
364 anchor "tl"
365 borderDistance 6
366 ]
367 ]
368
369 node
370 [
371 id 10
372 graphics
373 [
374 w 269.5
375 h 68
376 type "rectangle"
377 fill "#FFFFFF"
378 fill2 "#FFFFFF"
379 outline "#000000"
380 ]
381 LabelGraphics
382 [
383 text "null"
384 outline "#000000"
385 fill "#FFFFFF"
386 fontSize 16
387 fontName "Monospace"
388 autoSizePolicy "node_width"
389 anchor "t"
390 borderDistance 0.0
391 ]
392 LabelGraphics
393 [
394 text "
395 EAnnotation class
396 EModelElement class
397 EModelElement class UndefinedPart
398 "
399 fontSize 14
400 fontName "Consolas"
401 alignment "left"
402 anchor "tl"
403 borderDistance 6
404 ]
405 ]
406
407 node
408 [
409 id 11
410 graphics
411 [
412 w 269.5
413 h 110
414 type "rectangle"
415 fill "#FFFFFF"
416 fill2 "#FFFFFF"
417 outline "#000000"
418 ]
419 LabelGraphics
420 [
421 text "null"
422 outline "#000000"
423 fill "#FFFFFF"
424 fontSize 16
425 fontName "Monospace"
426 autoSizePolicy "node_width"
427 anchor "t"
428 borderDistance 0.0
429 ]
430 LabelGraphics
431 [
432 text "
433 EClass class
434 EClassifier class
435 EModelElement class
436 ENamedElement class
437 EModelElement class UndefinedPart
438 ENamedElement class UndefinedPart
439 "
440 fontSize 14
441 fontName "Consolas"
442 alignment "left"
443 anchor "tl"
444 borderDistance 6
445 ]
446 ]
447
448 node
449 [
450 id 12
451 graphics
452 [
453 w 269.5
454 h 124
455 type "rectangle"
456 fill "#FFFFFF"
457 fill2 "#FFFFFF"
458 outline "#000000"
459 ]
460 LabelGraphics
461 [
462 text "null"
463 outline "#000000"
464 fill "#FFFFFF"
465 fontSize 16
466 fontName "Monospace"
467 autoSizePolicy "node_width"
468 anchor "t"
469 borderDistance 0.0
470 ]
471 LabelGraphics
472 [
473 text "
474 EModelElement class
475 ENamedElement class
476 EReference class
477 EStructuralFeature class
478 ETypedElement class
479 EModelElement class UndefinedPart
480 ENamedElement class UndefinedPart
481 "
482 fontSize 14
483 fontName "Consolas"
484 alignment "left"
485 anchor "tl"
486 borderDistance 6
487 ]
488 ]
489
490 node
491 [
492 id 13
493 graphics
494 [
495 w 112.2
496 h 26
497 type "rectangle"
498 fill "#FFFFFF"
499 fill2 "#FFFFFF"
500 outline "#000000"
501 ]
502 LabelGraphics
503 [
504 text "New Integers"
505 outline "#000000"
506 fill "#FFFFFF"
507 fontSize 16
508 fontName "Monospace"
509 autoSizePolicy "node_width"
510 anchor "t"
511 borderDistance 0.0
512 ]
513 LabelGraphics
514 [
515 text "
516 "
517 fontSize 14
518 fontName "Consolas"
519 alignment "left"
520 anchor "tl"
521 borderDistance 6
522 ]
523 ]
524
525 node
526 [
527 id 14
528 graphics
529 [
530 w 85.80000000000001
531 h 26
532 type "rectangle"
533 fill "#FFFFFF"
534 fill2 "#FFFFFF"
535 outline "#000000"
536 ]
537 LabelGraphics
538 [
539 text "New Reals"
540 outline "#000000"
541 fill "#FFFFFF"
542 fontSize 16
543 fontName "Monospace"
544 autoSizePolicy "node_width"
545 anchor "t"
546 borderDistance 0.0
547 ]
548 LabelGraphics
549 [
550 text "
551 "
552 fontSize 14
553 fontName "Consolas"
554 alignment "left"
555 anchor "tl"
556 borderDistance 6
557 ]
558 ]
559
560 node
561 [
562 id 15
563 graphics
564 [
565 w 103.4
566 h 26
567 type "rectangle"
568 fill "#FFFFFF"
569 fill2 "#FFFFFF"
570 outline "#000000"
571 ]
572 LabelGraphics
573 [
574 text "New Strings"
575 outline "#000000"
576 fill "#FFFFFF"
577 fontSize 16
578 fontName "Monospace"
579 autoSizePolicy "node_width"
580 anchor "t"
581 borderDistance 0.0
582 ]
583 LabelGraphics
584 [
585 text "
586 "
587 fontSize 14
588 fontName "Consolas"
589 alignment "left"
590 anchor "tl"
591 borderDistance 6
592 ]
593 ]
594
595 node
596 [
597 id 16
598 graphics
599 [
600 w 103.4
601 h 26
602 type "rectangle"
603 fill "#FFFFFF"
604 fill2 "#FFFFFF"
605 outline "#000000"
606 ]
607 LabelGraphics
608 [
609 text "New Objects"
610 outline "#000000"
611 fill "#FFFFFF"
612 fontSize 16
613 fontName "Monospace"
614 autoSizePolicy "node_width"
615 anchor "t"
616 borderDistance 0.0
617 ]
618 LabelGraphics
619 [
620 text "
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6
627 ]
628 ]
629 edge
630 [
631 source 8
632 target 0
633 graphics
634 [
635 fill "#000000"
636 targetArrow "standard"
637 ]
638 LabelGraphics
639 [
640 text "eModelElement reference EAnnotation"
641 fontSize 14
642 fontName "Consolas"
643 configuration "AutoFlippingLabel"
644 model "six_pos"
645 position "thead"
646 ]
647 ]
648 edge
649 [
650 source 10
651 target 0
652 graphics
653 [
654 fill "#000000"
655 targetArrow "standard"
656 ]
657 LabelGraphics
658 [
659 text "eModelElement reference EAnnotation"
660 fontSize 14
661 fontName "Consolas"
662 configuration "AutoFlippingLabel"
663 model "six_pos"
664 position "thead"
665 ]
666 ]
667 edge
668 [
669 source 11
670 target 11
671 graphics
672 [
673 fill "#000000"
674 targetArrow "standard"
675 ]
676 LabelGraphics
677 [
678 text "eSuperTypes reference EClass"
679 fontSize 14
680 fontName "Consolas"
681 configuration "AutoFlippingLabel"
682 model "six_pos"
683 position "thead"
684 ]
685 ]
686 edge
687 [
688 source 11
689 target 12
690 graphics
691 [
692 fill "#000000"
693 targetArrow "standard"
694 ]
695 LabelGraphics
696 [
697 text "eAllReferences reference EClass"
698 fontSize 14
699 fontName "Consolas"
700 configuration "AutoFlippingLabel"
701 model "six_pos"
702 position "thead"
703 ]
704 ]
705 edge
706 [
707 source 11
708 target 12
709 graphics
710 [
711 fill "#000000"
712 targetArrow "standard"
713 ]
714 LabelGraphics
715 [
716 text "eReferences reference EClass"
717 fontSize 14
718 fontName "Consolas"
719 configuration "AutoFlippingLabel"
720 model "six_pos"
721 position "thead"
722 ]
723 ]
724 edge
725 [
726 source 11
727 target 12
728 graphics
729 [
730 fill "#000000"
731 targetArrow "standard"
732 ]
733 LabelGraphics
734 [
735 text "eAllContainments reference EClass"
736 fontSize 14
737 fontName "Consolas"
738 configuration "AutoFlippingLabel"
739 model "six_pos"
740 position "thead"
741 ]
742 ]
743 edge
744 [
745 source 11
746 target 12
747 graphics
748 [
749 fill "#000000"
750 targetArrow "standard"
751 ]
752 LabelGraphics
753 [
754 text "eAllStructuralFeatures reference EClass"
755 fontSize 14
756 fontName "Consolas"
757 configuration "AutoFlippingLabel"
758 model "six_pos"
759 position "thead"
760 ]
761 ]
762 edge
763 [
764 source 11
765 target 11
766 graphics
767 [
768 fill "#000000"
769 targetArrow "standard"
770 ]
771 LabelGraphics
772 [
773 text "eAllSuperTypes reference EClass"
774 fontSize 14
775 fontName "Consolas"
776 configuration "AutoFlippingLabel"
777 model "six_pos"
778 position "thead"
779 ]
780 ]
781 edge
782 [
783 source 11
784 target 12
785 graphics
786 [
787 fill "#000000"
788 width 3
789 targetArrow "standard"
790 ]
791 LabelGraphics
792 [
793 text "eStructuralFeatures reference EClass"
794 fontSize 14
795 fontName "Consolas"
796 configuration "AutoFlippingLabel"
797 model "six_pos"
798 position "thead"
799 ]
800 ]
801 edge
802 [
803 source 9
804 target 0
805 graphics
806 [
807 fill "#000000"
808 targetArrow "standard"
809 ]
810 LabelGraphics
811 [
812 text "ePackage reference EClassifier"
813 fontSize 14
814 fontName "Consolas"
815 configuration "AutoFlippingLabel"
816 model "six_pos"
817 position "thead"
818 ]
819 ]
820 edge
821 [
822 source 11
823 target 0
824 graphics
825 [
826 fill "#000000"
827 targetArrow "standard"
828 ]
829 LabelGraphics
830 [
831 text "ePackage reference EClassifier"
832 fontSize 14
833 fontName "Consolas"
834 configuration "AutoFlippingLabel"
835 model "six_pos"
836 position "thead"
837 ]
838 ]
839 edge
840 [
841 source 0
842 target 8
843 graphics
844 [
845 fill "#000000"
846 width 3
847 targetArrow "standard"
848 ]
849 LabelGraphics
850 [
851 text "eAnnotations reference EModelElement"
852 fontSize 14
853 fontName "Consolas"
854 configuration "AutoFlippingLabel"
855 model "six_pos"
856 position "thead"
857 ]
858 ]
859 edge
860 [
861 source 0
862 target 10
863 graphics
864 [
865 fill "#000000"
866 width 3
867 targetArrow "standard"
868 ]
869 LabelGraphics
870 [
871 text "eAnnotations reference EModelElement"
872 fontSize 14
873 fontName "Consolas"
874 configuration "AutoFlippingLabel"
875 model "six_pos"
876 position "thead"
877 ]
878 ]
879 edge
880 [
881 source 0
882 target 9
883 graphics
884 [
885 fill "#000000"
886 width 3
887 targetArrow "standard"
888 ]
889 LabelGraphics
890 [
891 text "eClassifiers reference EPackage"
892 fontSize 14
893 fontName "Consolas"
894 configuration "AutoFlippingLabel"
895 model "six_pos"
896 position "thead"
897 ]
898 ]
899 edge
900 [
901 source 0
902 target 11
903 graphics
904 [
905 fill "#000000"
906 width 3
907 targetArrow "standard"
908 ]
909 LabelGraphics
910 [
911 text "eClassifiers reference EPackage"
912 fontSize 14
913 fontName "Consolas"
914 configuration "AutoFlippingLabel"
915 model "six_pos"
916 position "thead"
917 ]
918 ]
919 edge
920 [
921 source 12
922 target 12
923 graphics
924 [
925 fill "#000000"
926 targetArrow "standard"
927 ]
928 LabelGraphics
929 [
930 text "eOpposite reference EReference"
931 fontSize 14
932 fontName "Consolas"
933 configuration "AutoFlippingLabel"
934 model "six_pos"
935 position "thead"
936 ]
937 ]
938 edge
939 [
940 source 12
941 target 11
942 graphics
943 [
944 fill "#000000"
945 targetArrow "standard"
946 ]
947 LabelGraphics
948 [
949 text "eReferenceType reference EReference"
950 fontSize 14
951 fontName "Consolas"
952 configuration "AutoFlippingLabel"
953 model "six_pos"
954 position "thead"
955 ]
956 ]
957 edge
958 [
959 source 12
960 target 11
961 graphics
962 [
963 fill "#000000"
964 targetArrow "standard"
965 ]
966 LabelGraphics
967 [
968 text "eContainingClass reference EStructuralFeature"
969 fontSize 14
970 fontName "Consolas"
971 configuration "AutoFlippingLabel"
972 model "six_pos"
973 position "thead"
974 ]
975 ]
976 edge
977 [
978 source 12
979 target 11
980 graphics
981 [
982 fill "#000000"
983 targetArrow "standard"
984 ]
985 LabelGraphics
986 [
987 text "eType reference ETypedElement"
988 fontSize 14
989 fontName "Consolas"
990 configuration "AutoFlippingLabel"
991 model "six_pos"
992 position "thead"
993 ]
994 ]
995 edge
996 [
997 source 8
998 target 7
999 graphics
1000 [
1001 fill "#000000"
1002 targetArrow "standard"
1003 ]
1004 LabelGraphics
1005 [
1006 text "source attribute EAnnotation"
1007 fontSize 14
1008 fontName "Consolas"
1009 configuration "AutoFlippingLabel"
1010 model "six_pos"
1011 position "thead"
1012 ]
1013 ]
1014 edge
1015 [
1016 source 10
1017 target 6
1018 graphics
1019 [
1020 fill "#000000"
1021 targetArrow "standard"
1022 ]
1023 LabelGraphics
1024 [
1025 text "source attribute EAnnotation"
1026 fontSize 14
1027 fontName "Consolas"
1028 configuration "AutoFlippingLabel"
1029 model "six_pos"
1030 position "thead"
1031 ]
1032 ]
1033 edge
1034 [
1035 source 11
1036 target 2
1037 graphics
1038 [
1039 fill "#000000"
1040 targetArrow "standard"
1041 ]
1042 LabelGraphics
1043 [
1044 text "abstract attribute EClass"
1045 fontSize 14
1046 fontName "Consolas"
1047 configuration "AutoFlippingLabel"
1048 model "six_pos"
1049 position "thead"
1050 ]
1051 ]
1052 edge
1053 [
1054 source 11
1055 target 1
1056 graphics
1057 [
1058 fill "#000000"
1059 targetArrow "standard"
1060 ]
1061 LabelGraphics
1062 [
1063 text "interface attribute EClass"
1064 fontSize 14
1065 fontName "Consolas"
1066 configuration "AutoFlippingLabel"
1067 model "six_pos"
1068 position "thead"
1069 ]
1070 ]
1071 edge
1072 [
1073 source 11
1074 target 7
1075 graphics
1076 [
1077 fill "#000000"
1078 targetArrow "standard"
1079 ]
1080 LabelGraphics
1081 [
1082 text "instanceClassName attribute EClassifier"
1083 fontSize 14
1084 fontName "Consolas"
1085 configuration "AutoFlippingLabel"
1086 model "six_pos"
1087 position "thead"
1088 ]
1089 ]
1090 edge
1091 [
1092 source 9
1093 target 7
1094 graphics
1095 [
1096 fill "#000000"
1097 targetArrow "standard"
1098 ]
1099 LabelGraphics
1100 [
1101 text "instanceClassName attribute EClassifier"
1102 fontSize 14
1103 fontName "Consolas"
1104 configuration "AutoFlippingLabel"
1105 model "six_pos"
1106 position "thead"
1107 ]
1108 ]
1109 edge
1110 [
1111 source 11
1112 target 7
1113 graphics
1114 [
1115 fill "#000000"
1116 targetArrow "standard"
1117 ]
1118 LabelGraphics
1119 [
1120 text "instanceTypeName attribute EClassifier"
1121 fontSize 14
1122 fontName "Consolas"
1123 configuration "AutoFlippingLabel"
1124 model "six_pos"
1125 position "thead"
1126 ]
1127 ]
1128 edge
1129 [
1130 source 9
1131 target 7
1132 graphics
1133 [
1134 fill "#000000"
1135 targetArrow "standard"
1136 ]
1137 LabelGraphics
1138 [
1139 text "instanceTypeName attribute EClassifier"
1140 fontSize 14
1141 fontName "Consolas"
1142 configuration "AutoFlippingLabel"
1143 model "six_pos"
1144 position "thead"
1145 ]
1146 ]
1147 edge
1148 [
1149 source 9
1150 target 2
1151 graphics
1152 [
1153 fill "#000000"
1154 targetArrow "standard"
1155 ]
1156 LabelGraphics
1157 [
1158 text "serializable attribute EDataType"
1159 fontSize 14
1160 fontName "Consolas"
1161 configuration "AutoFlippingLabel"
1162 model "six_pos"
1163 position "thead"
1164 ]
1165 ]
1166 edge
1167 [
1168 source 0
1169 target 7
1170 graphics
1171 [
1172 fill "#000000"
1173 targetArrow "standard"
1174 ]
1175 LabelGraphics
1176 [
1177 text "name attribute ENamedElement"
1178 fontSize 14
1179 fontName "Consolas"
1180 configuration "AutoFlippingLabel"
1181 model "six_pos"
1182 position "thead"
1183 ]
1184 ]
1185 edge
1186 [
1187 source 12
1188 target 6
1189 graphics
1190 [
1191 fill "#000000"
1192 targetArrow "standard"
1193 ]
1194 LabelGraphics
1195 [
1196 text "name attribute ENamedElement"
1197 fontSize 14
1198 fontName "Consolas"
1199 configuration "AutoFlippingLabel"
1200 model "six_pos"
1201 position "thead"
1202 ]
1203 ]
1204 edge
1205 [
1206 source 11
1207 target 7
1208 graphics
1209 [
1210 fill "#000000"
1211 targetArrow "standard"
1212 ]
1213 LabelGraphics
1214 [
1215 text "name attribute ENamedElement"
1216 fontSize 14
1217 fontName "Consolas"
1218 configuration "AutoFlippingLabel"
1219 model "six_pos"
1220 position "thead"
1221 ]
1222 ]
1223 edge
1224 [
1225 source 9
1226 target 7
1227 graphics
1228 [
1229 fill "#000000"
1230 targetArrow "standard"
1231 ]
1232 LabelGraphics
1233 [
1234 text "name attribute ENamedElement"
1235 fontSize 14
1236 fontName "Consolas"
1237 configuration "AutoFlippingLabel"
1238 model "six_pos"
1239 position "thead"
1240 ]
1241 ]
1242 edge
1243 [
1244 source 0
1245 target 7
1246 graphics
1247 [
1248 fill "#000000"
1249 targetArrow "standard"
1250 ]
1251 LabelGraphics
1252 [
1253 text "nsURI attribute EPackage"
1254 fontSize 14
1255 fontName "Consolas"
1256 configuration "AutoFlippingLabel"
1257 model "six_pos"
1258 position "thead"
1259 ]
1260 ]
1261 edge
1262 [
1263 source 0
1264 target 7
1265 graphics
1266 [
1267 fill "#000000"
1268 targetArrow "standard"
1269 ]
1270 LabelGraphics
1271 [
1272 text "nsPrefix attribute EPackage"
1273 fontSize 14
1274 fontName "Consolas"
1275 configuration "AutoFlippingLabel"
1276 model "six_pos"
1277 position "thead"
1278 ]
1279 ]
1280 edge
1281 [
1282 source 12
1283 target 2
1284 graphics
1285 [
1286 fill "#000000"
1287 targetArrow "standard"
1288 ]
1289 LabelGraphics
1290 [
1291 text "containment attribute EReference"
1292 fontSize 14
1293 fontName "Consolas"
1294 configuration "AutoFlippingLabel"
1295 model "six_pos"
1296 position "thead"
1297 ]
1298 ]
1299 edge
1300 [
1301 source 12
1302 target 2
1303 graphics
1304 [
1305 fill "#000000"
1306 targetArrow "standard"
1307 ]
1308 LabelGraphics
1309 [
1310 text "container attribute EReference"
1311 fontSize 14
1312 fontName "Consolas"
1313 configuration "AutoFlippingLabel"
1314 model "six_pos"
1315 position "thead"
1316 ]
1317 ]
1318 edge
1319 [
1320 source 12
1321 target 2
1322 graphics
1323 [
1324 fill "#000000"
1325 targetArrow "standard"
1326 ]
1327 LabelGraphics
1328 [
1329 text "resolveProxies attribute EReference"
1330 fontSize 14
1331 fontName "Consolas"
1332 configuration "AutoFlippingLabel"
1333 model "six_pos"
1334 position "thead"
1335 ]
1336 ]
1337 edge
1338 [
1339 source 12
1340 target 2
1341 graphics
1342 [
1343 fill "#000000"
1344 targetArrow "standard"
1345 ]
1346 LabelGraphics
1347 [
1348 text "changeable attribute EStructuralFeature"
1349 fontSize 14
1350 fontName "Consolas"
1351 configuration "AutoFlippingLabel"
1352 model "six_pos"
1353 position "thead"
1354 ]
1355 ]
1356 edge
1357 [
1358 source 12
1359 target 2
1360 graphics
1361 [
1362 fill "#000000"
1363 targetArrow "standard"
1364 ]
1365 LabelGraphics
1366 [
1367 text "volatile attribute EStructuralFeature"
1368 fontSize 14
1369 fontName "Consolas"
1370 configuration "AutoFlippingLabel"
1371 model "six_pos"
1372 position "thead"
1373 ]
1374 ]
1375 edge
1376 [
1377 source 12
1378 target 1
1379 graphics
1380 [
1381 fill "#000000"
1382 targetArrow "standard"
1383 ]
1384 LabelGraphics
1385 [
1386 text "transient attribute EStructuralFeature"
1387 fontSize 14
1388 fontName "Consolas"
1389 configuration "AutoFlippingLabel"
1390 model "six_pos"
1391 position "thead"
1392 ]
1393 ]
1394 edge
1395 [
1396 source 12
1397 target 7
1398 graphics
1399 [
1400 fill "#000000"
1401 targetArrow "standard"
1402 ]
1403 LabelGraphics
1404 [
1405 text "defaultValueLiteral attribute EStructuralFeature"
1406 fontSize 14
1407 fontName "Consolas"
1408 configuration "AutoFlippingLabel"
1409 model "six_pos"
1410 position "thead"
1411 ]
1412 ]
1413 edge
1414 [
1415 source 12
1416 target 2
1417 graphics
1418 [
1419 fill "#000000"
1420 targetArrow "standard"
1421 ]
1422 LabelGraphics
1423 [
1424 text "unsettable attribute EStructuralFeature"
1425 fontSize 14
1426 fontName "Consolas"
1427 configuration "AutoFlippingLabel"
1428 model "six_pos"
1429 position "thead"
1430 ]
1431 ]
1432 edge
1433 [
1434 source 12
1435 target 1
1436 graphics
1437 [
1438 fill "#000000"
1439 targetArrow "standard"
1440 ]
1441 LabelGraphics
1442 [
1443 text "derived attribute EStructuralFeature"
1444 fontSize 14
1445 fontName "Consolas"
1446 configuration "AutoFlippingLabel"
1447 model "six_pos"
1448 position "thead"
1449 ]
1450 ]
1451 edge
1452 [
1453 source 12
1454 target 1
1455 graphics
1456 [
1457 fill "#000000"
1458 targetArrow "standard"
1459 ]
1460 LabelGraphics
1461 [
1462 text "ordered attribute ETypedElement"
1463 fontSize 14
1464 fontName "Consolas"
1465 configuration "AutoFlippingLabel"
1466 model "six_pos"
1467 position "thead"
1468 ]
1469 ]
1470 edge
1471 [
1472 source 12
1473 target 1
1474 graphics
1475 [
1476 fill "#000000"
1477 targetArrow "standard"
1478 ]
1479 LabelGraphics
1480 [
1481 text "unique attribute ETypedElement"
1482 fontSize 14
1483 fontName "Consolas"
1484 configuration "AutoFlippingLabel"
1485 model "six_pos"
1486 position "thead"
1487 ]
1488 ]
1489 edge
1490 [
1491 source 12
1492 target 4
1493 graphics
1494 [
1495 fill "#000000"
1496 targetArrow "standard"
1497 ]
1498 LabelGraphics
1499 [
1500 text "lowerBound attribute ETypedElement"
1501 fontSize 14
1502 fontName "Consolas"
1503 configuration "AutoFlippingLabel"
1504 model "six_pos"
1505 position "thead"
1506 ]
1507 ]
1508 edge
1509 [
1510 source 12
1511 target 5
1512 graphics
1513 [
1514 fill "#000000"
1515 targetArrow "standard"
1516 ]
1517 LabelGraphics
1518 [
1519 text "upperBound attribute ETypedElement"
1520 fontSize 14
1521 fontName "Consolas"
1522 configuration "AutoFlippingLabel"
1523 model "six_pos"
1524 position "thead"
1525 ]
1526 ]
1527 edge
1528 [
1529 source 12
1530 target 1
1531 graphics
1532 [
1533 fill "#000000"
1534 targetArrow "standard"
1535 ]
1536 LabelGraphics
1537 [
1538 text "many attribute ETypedElement"
1539 fontSize 14
1540 fontName "Consolas"
1541 configuration "AutoFlippingLabel"
1542 model "six_pos"
1543 position "thead"
1544 ]
1545 ]
1546 edge
1547 [
1548 source 12
1549 target 2
1550 graphics
1551 [
1552 fill "#000000"
1553 targetArrow "standard"
1554 ]
1555 LabelGraphics
1556 [
1557 text "required attribute ETypedElement"
1558 fontSize 14
1559 fontName "Consolas"
1560 configuration "AutoFlippingLabel"
1561 model "six_pos"
1562 position "thead"
1563 ]
1564 ]
1565]
1566graph
1567[
1568 node
1569 [
1570 id 0
1571 graphics
1572 [
1573 w 254.10000000000002
1574 h 110
1575 type "rectangle"
1576 fill "#FFFFFF"
1577 fill2 "#FFFFFF"
1578 outline "#000000"
1579 ]
1580 LabelGraphics
1581 [
1582 text "o 1"
1583 outline "#000000"
1584 fill "#FFFFFF"
1585 fontSize 16
1586 fontName "Monospace"
1587 autoSizePolicy "node_width"
1588 anchor "t"
1589 borderDistance 0.0
1590 ]
1591 LabelGraphics
1592 [
1593 text "
1594 EModelElement class DefinedPart
1595 ENamedElement class DefinedPart
1596 EPackage class DefinedPart
1597 EModelElement class
1598 ENamedElement class
1599 EPackage class
1600 "
1601 fontSize 14
1602 fontName "Consolas"
1603 alignment "left"
1604 anchor "tl"
1605 borderDistance 6
1606 ]
1607 ]
1608
1609 node
1610 [
1611 id 1
1612 graphics
1613 [
1614 w 41.800000000000004
1615 h 26
1616 type "rectangle"
1617 fill "#FFFFFF"
1618 fill2 "#FFFFFF"
1619 outline "#000000"
1620 ]
1621 LabelGraphics
1622 [
1623 text "true"
1624 outline "#000000"
1625 fill "#FFFFFF"
1626 fontSize 16
1627 fontName "Monospace"
1628 autoSizePolicy "node_width"
1629 anchor "t"
1630 borderDistance 0.0
1631 ]
1632 LabelGraphics
1633 [
1634 text "
1635 "
1636 fontSize 14
1637 fontName "Consolas"
1638 alignment "left"
1639 anchor "tl"
1640 borderDistance 6
1641 ]
1642 ]
1643
1644 node
1645 [
1646 id 2
1647 graphics
1648 [
1649 w 50.6
1650 h 26
1651 type "rectangle"
1652 fill "#FFFFFF"
1653 fill2 "#FFFFFF"
1654 outline "#000000"
1655 ]
1656 LabelGraphics
1657 [
1658 text "false"
1659 outline "#000000"
1660 fill "#FFFFFF"
1661 fontSize 16
1662 fontName "Monospace"
1663 autoSizePolicy "node_width"
1664 anchor "t"
1665 borderDistance 0.0
1666 ]
1667 LabelGraphics
1668 [
1669 text "
1670 "
1671 fontSize 14
1672 fontName "Consolas"
1673 alignment "left"
1674 anchor "tl"
1675 borderDistance 6
1676 ]
1677 ]
1678
1679 node
1680 [
1681 id 3
1682 graphics
1683 [
1684 w 24.200000000000003
1685 h 26
1686 type "rectangle"
1687 fill "#FFFFFF"
1688 fill2 "#FFFFFF"
1689 outline "#000000"
1690 ]
1691 LabelGraphics
1692 [
1693 text "-1"
1694 outline "#000000"
1695 fill "#FFFFFF"
1696 fontSize 16
1697 fontName "Monospace"
1698 autoSizePolicy "node_width"
1699 anchor "t"
1700 borderDistance 0.0
1701 ]
1702 LabelGraphics
1703 [
1704 text "
1705 "
1706 fontSize 14
1707 fontName "Consolas"
1708 alignment "left"
1709 anchor "tl"
1710 borderDistance 6
1711 ]
1712 ]
1713
1714 node
1715 [
1716 id 4
1717 graphics
1718 [
1719 w 15.400000000000002
1720 h 26
1721 type "rectangle"
1722 fill "#FFFFFF"
1723 fill2 "#FFFFFF"
1724 outline "#000000"
1725 ]
1726 LabelGraphics
1727 [
1728 text "0"
1729 outline "#000000"
1730 fill "#FFFFFF"
1731 fontSize 16
1732 fontName "Monospace"
1733 autoSizePolicy "node_width"
1734 anchor "t"
1735 borderDistance 0.0
1736 ]
1737 LabelGraphics
1738 [
1739 text "
1740 "
1741 fontSize 14
1742 fontName "Consolas"
1743 alignment "left"
1744 anchor "tl"
1745 borderDistance 6
1746 ]
1747 ]
1748
1749 node
1750 [
1751 id 5
1752 graphics
1753 [
1754 w 15.400000000000002
1755 h 26
1756 type "rectangle"
1757 fill "#FFFFFF"
1758 fill2 "#FFFFFF"
1759 outline "#000000"
1760 ]
1761 LabelGraphics
1762 [
1763 text "1"
1764 outline "#000000"
1765 fill "#FFFFFF"
1766 fontSize 16
1767 fontName "Monospace"
1768 autoSizePolicy "node_width"
1769 anchor "t"
1770 borderDistance 0.0
1771 ]
1772 LabelGraphics
1773 [
1774 text "
1775 "
1776 fontSize 14
1777 fontName "Consolas"
1778 alignment "left"
1779 anchor "tl"
1780 borderDistance 6
1781 ]
1782 ]
1783
1784 node
1785 [
1786 id 6
1787 graphics
1788 [
1789 w 33.0
1790 h 26
1791 type "rectangle"
1792 fill "#FFFFFF"
1793 fill2 "#FFFFFF"
1794 outline "#000000"
1795 ]
1796 LabelGraphics
1797 [
1798 text ""A""
1799 outline "#000000"
1800 fill "#FFFFFF"
1801 fontSize 16
1802 fontName "Monospace"
1803 autoSizePolicy "node_width"
1804 anchor "t"
1805 borderDistance 0.0
1806 ]
1807 LabelGraphics
1808 [
1809 text "
1810 "
1811 fontSize 14
1812 fontName "Consolas"
1813 alignment "left"
1814 anchor "tl"
1815 borderDistance 6
1816 ]
1817 ]
1818
1819 node
1820 [
1821 id 7
1822 graphics
1823 [
1824 w 33.0
1825 h 26
1826 type "rectangle"
1827 fill "#FFFFFF"
1828 fill2 "#FFFFFF"
1829 outline "#000000"
1830 ]
1831 LabelGraphics
1832 [
1833 text ""B""
1834 outline "#000000"
1835 fill "#FFFFFF"
1836 fontSize 16
1837 fontName "Monospace"
1838 autoSizePolicy "node_width"
1839 anchor "t"
1840 borderDistance 0.0
1841 ]
1842 LabelGraphics
1843 [
1844 text "
1845 "
1846 fontSize 14
1847 fontName "Consolas"
1848 alignment "left"
1849 anchor "tl"
1850 borderDistance 6
1851 ]
1852 ]
1853
1854 node
1855 [
1856 id 8
1857 graphics
1858 [
1859 w 94.60000000000001
1860 h 26
1861 type "rectangle"
1862 fill "#FFFFFF"
1863 fill2 "#FFFFFF"
1864 outline "#000000"
1865 ]
1866 LabelGraphics
1867 [
1868 text ""nsPrefix""
1869 outline "#000000"
1870 fill "#FFFFFF"
1871 fontSize 16
1872 fontName "Monospace"
1873 autoSizePolicy "node_width"
1874 anchor "t"
1875 borderDistance 0.0
1876 ]
1877 LabelGraphics
1878 [
1879 text "
1880 "
1881 fontSize 14
1882 fontName "Consolas"
1883 alignment "left"
1884 anchor "tl"
1885 borderDistance 6
1886 ]
1887 ]
1888
1889 node
1890 [
1891 id 9
1892 graphics
1893 [
1894 w 68.2
1895 h 26
1896 type "rectangle"
1897 fill "#FFFFFF"
1898 fill2 "#FFFFFF"
1899 outline "#000000"
1900 ]
1901 LabelGraphics
1902 [
1903 text ""nsUri""
1904 outline "#000000"
1905 fill "#FFFFFF"
1906 fontSize 16
1907 fontName "Monospace"
1908 autoSizePolicy "node_width"
1909 anchor "t"
1910 borderDistance 0.0
1911 ]
1912 LabelGraphics
1913 [
1914 text "
1915 "
1916 fontSize 14
1917 fontName "Consolas"
1918 alignment "left"
1919 anchor "tl"
1920 borderDistance 6
1921 ]
1922 ]
1923
1924 node
1925 [
1926 id 10
1927 graphics
1928 [
1929 w 121.00000000000001
1930 h 26
1931 type "rectangle"
1932 fill "#FFFFFF"
1933 fill2 "#FFFFFF"
1934 outline "#000000"
1935 ]
1936 LabelGraphics
1937 [
1938 text ""packageName""
1939 outline "#000000"
1940 fill "#FFFFFF"
1941 fontSize 16
1942 fontName "Monospace"
1943 autoSizePolicy "node_width"
1944 anchor "t"
1945 borderDistance 0.0
1946 ]
1947 LabelGraphics
1948 [
1949 text "
1950 "
1951 fontSize 14
1952 fontName "Consolas"
1953 alignment "left"
1954 anchor "tl"
1955 borderDistance 6
1956 ]
1957 ]
1958
1959 node
1960 [
1961 id 11
1962 graphics
1963 [
1964 w 269.5
1965 h 124
1966 type "rectangle"
1967 fill "#FFFFFF"
1968 fill2 "#FFFFFF"
1969 outline "#000000"
1970 ]
1971 LabelGraphics
1972 [
1973 text "null"
1974 outline "#000000"
1975 fill "#FFFFFF"
1976 fontSize 16
1977 fontName "Monospace"
1978 autoSizePolicy "node_width"
1979 anchor "t"
1980 borderDistance 0.0
1981 ]
1982 LabelGraphics
1983 [
1984 text "
1985 EClassifier class
1986 EDataType class
1987 EEnum class
1988 EModelElement class
1989 ENamedElement class
1990 EModelElement class UndefinedPart
1991 ENamedElement class UndefinedPart
1992 "
1993 fontSize 14
1994 fontName "Consolas"
1995 alignment "left"
1996 anchor "tl"
1997 borderDistance 6
1998 ]
1999 ]
2000
2001 node
2002 [
2003 id 12
2004 graphics
2005 [
2006 w 269.5
2007 h 110
2008 type "rectangle"
2009 fill "#FFFFFF"
2010 fill2 "#FFFFFF"
2011 outline "#000000"
2012 ]
2013 LabelGraphics
2014 [
2015 text "null"
2016 outline "#000000"
2017 fill "#FFFFFF"
2018 fontSize 16
2019 fontName "Monospace"
2020 autoSizePolicy "node_width"
2021 anchor "t"
2022 borderDistance 0.0
2023 ]
2024 LabelGraphics
2025 [
2026 text "
2027 EClassifier class
2028 EDataType class
2029 EModelElement class
2030 ENamedElement class
2031 EModelElement class UndefinedPart
2032 ENamedElement class UndefinedPart
2033 "
2034 fontSize 14
2035 fontName "Consolas"
2036 alignment "left"
2037 anchor "tl"
2038 borderDistance 6
2039 ]
2040 ]
2041
2042 node
2043 [
2044 id 13
2045 graphics
2046 [
2047 w 269.5
2048 h 68
2049 type "rectangle"
2050 fill "#FFFFFF"
2051 fill2 "#FFFFFF"
2052 outline "#000000"
2053 ]
2054 LabelGraphics
2055 [
2056 text "null"
2057 outline "#000000"
2058 fill "#FFFFFF"
2059 fontSize 16
2060 fontName "Monospace"
2061 autoSizePolicy "node_width"
2062 anchor "t"
2063 borderDistance 0.0
2064 ]
2065 LabelGraphics
2066 [
2067 text "
2068 EAnnotation class
2069 EModelElement class
2070 EModelElement class UndefinedPart
2071 "
2072 fontSize 14
2073 fontName "Consolas"
2074 alignment "left"
2075 anchor "tl"
2076 borderDistance 6
2077 ]
2078 ]
2079
2080 node
2081 [
2082 id 14
2083 graphics
2084 [
2085 w 269.5
2086 h 124
2087 type "rectangle"
2088 fill "#FFFFFF"
2089 fill2 "#FFFFFF"
2090 outline "#000000"
2091 ]
2092 LabelGraphics
2093 [
2094 text "null"
2095 outline "#000000"
2096 fill "#FFFFFF"
2097 fontSize 16
2098 fontName "Monospace"
2099 autoSizePolicy "node_width"
2100 anchor "t"
2101 borderDistance 0.0
2102 ]
2103 LabelGraphics
2104 [
2105 text "
2106 EClassifier class
2107 EDataType class
2108 EEnum class
2109 EModelElement class
2110 ENamedElement class
2111 EModelElement class UndefinedPart
2112 ENamedElement class UndefinedPart
2113 "
2114 fontSize 14
2115 fontName "Consolas"
2116 alignment "left"
2117 anchor "tl"
2118 borderDistance 6
2119 ]
2120 ]
2121
2122 node
2123 [
2124 id 15
2125 graphics
2126 [
2127 w 269.5
2128 h 96
2129 type "rectangle"
2130 fill "#FFFFFF"
2131 fill2 "#FFFFFF"
2132 outline "#000000"
2133 ]
2134 LabelGraphics
2135 [
2136 text "null"
2137 outline "#000000"
2138 fill "#FFFFFF"
2139 fontSize 16
2140 fontName "Monospace"
2141 autoSizePolicy "node_width"
2142 anchor "t"
2143 borderDistance 0.0
2144 ]
2145 LabelGraphics
2146 [
2147 text "
2148 EEnumLiteral class
2149 EModelElement class
2150 ENamedElement class
2151 EModelElement class UndefinedPart
2152 ENamedElement class UndefinedPart
2153 "
2154 fontSize 14
2155 fontName "Consolas"
2156 alignment "left"
2157 anchor "tl"
2158 borderDistance 6
2159 ]
2160 ]
2161
2162 node
2163 [
2164 id 16
2165 graphics
2166 [
2167 w 112.2
2168 h 26
2169 type "rectangle"
2170 fill "#FFFFFF"
2171 fill2 "#FFFFFF"
2172 outline "#000000"
2173 ]
2174 LabelGraphics
2175 [
2176 text "New Integers"
2177 outline "#000000"
2178 fill "#FFFFFF"
2179 fontSize 16
2180 fontName "Monospace"
2181 autoSizePolicy "node_width"
2182 anchor "t"
2183 borderDistance 0.0
2184 ]
2185 LabelGraphics
2186 [
2187 text "
2188 "
2189 fontSize 14
2190 fontName "Consolas"
2191 alignment "left"
2192 anchor "tl"
2193 borderDistance 6
2194 ]
2195 ]
2196
2197 node
2198 [
2199 id 17
2200 graphics
2201 [
2202 w 85.80000000000001
2203 h 26
2204 type "rectangle"
2205 fill "#FFFFFF"
2206 fill2 "#FFFFFF"
2207 outline "#000000"
2208 ]
2209 LabelGraphics
2210 [
2211 text "New Reals"
2212 outline "#000000"
2213 fill "#FFFFFF"
2214 fontSize 16
2215 fontName "Monospace"
2216 autoSizePolicy "node_width"
2217 anchor "t"
2218 borderDistance 0.0
2219 ]
2220 LabelGraphics
2221 [
2222 text "
2223 "
2224 fontSize 14
2225 fontName "Consolas"
2226 alignment "left"
2227 anchor "tl"
2228 borderDistance 6
2229 ]
2230 ]
2231
2232 node
2233 [
2234 id 18
2235 graphics
2236 [
2237 w 103.4
2238 h 26
2239 type "rectangle"
2240 fill "#FFFFFF"
2241 fill2 "#FFFFFF"
2242 outline "#000000"
2243 ]
2244 LabelGraphics
2245 [
2246 text "New Strings"
2247 outline "#000000"
2248 fill "#FFFFFF"
2249 fontSize 16
2250 fontName "Monospace"
2251 autoSizePolicy "node_width"
2252 anchor "t"
2253 borderDistance 0.0
2254 ]
2255 LabelGraphics
2256 [
2257 text "
2258 "
2259 fontSize 14
2260 fontName "Consolas"
2261 alignment "left"
2262 anchor "tl"
2263 borderDistance 6
2264 ]
2265 ]
2266
2267 node
2268 [
2269 id 19
2270 graphics
2271 [
2272 w 103.4
2273 h 26
2274 type "rectangle"
2275 fill "#FFFFFF"
2276 fill2 "#FFFFFF"
2277 outline "#000000"
2278 ]
2279 LabelGraphics
2280 [
2281 text "New Objects"
2282 outline "#000000"
2283 fill "#FFFFFF"
2284 fontSize 16
2285 fontName "Monospace"
2286 autoSizePolicy "node_width"
2287 anchor "t"
2288 borderDistance 0.0
2289 ]
2290 LabelGraphics
2291 [
2292 text "
2293 "
2294 fontSize 14
2295 fontName "Consolas"
2296 alignment "left"
2297 anchor "tl"
2298 borderDistance 6
2299 ]
2300 ]
2301 edge
2302 [
2303 source 13
2304 target 0
2305 graphics
2306 [
2307 fill "#000000"
2308 targetArrow "standard"
2309 ]
2310 LabelGraphics
2311 [
2312 text "eModelElement reference EAnnotation"
2313 fontSize 14
2314 fontName "Consolas"
2315 configuration "AutoFlippingLabel"
2316 model "six_pos"
2317 position "thead"
2318 ]
2319 ]
2320 edge
2321 [
2322 source 11
2323 target 0
2324 graphics
2325 [
2326 fill "#000000"
2327 targetArrow "standard"
2328 ]
2329 LabelGraphics
2330 [
2331 text "ePackage reference EClassifier"
2332 fontSize 14
2333 fontName "Consolas"
2334 configuration "AutoFlippingLabel"
2335 model "six_pos"
2336 position "thead"
2337 ]
2338 ]
2339 edge
2340 [
2341 source 12
2342 target 0
2343 graphics
2344 [
2345 fill "#000000"
2346 targetArrow "standard"
2347 ]
2348 LabelGraphics
2349 [
2350 text "ePackage reference EClassifier"
2351 fontSize 14
2352 fontName "Consolas"
2353 configuration "AutoFlippingLabel"
2354 model "six_pos"
2355 position "thead"
2356 ]
2357 ]
2358 edge
2359 [
2360 source 14
2361 target 0
2362 graphics
2363 [
2364 fill "#000000"
2365 targetArrow "standard"
2366 ]
2367 LabelGraphics
2368 [
2369 text "ePackage reference EClassifier"
2370 fontSize 14
2371 fontName "Consolas"
2372 configuration "AutoFlippingLabel"
2373 model "six_pos"
2374 position "thead"
2375 ]
2376 ]
2377 edge
2378 [
2379 source 14
2380 target 15
2381 graphics
2382 [
2383 fill "#000000"
2384 width 3
2385 targetArrow "standard"
2386 ]
2387 LabelGraphics
2388 [
2389 text "eLiterals reference EEnum"
2390 fontSize 14
2391 fontName "Consolas"
2392 configuration "AutoFlippingLabel"
2393 model "six_pos"
2394 position "thead"
2395 ]
2396 ]
2397 edge
2398 [
2399 source 15
2400 target 14
2401 graphics
2402 [
2403 fill "#000000"
2404 targetArrow "standard"
2405 ]
2406 LabelGraphics
2407 [
2408 text "eEnum reference EEnumLiteral"
2409 fontSize 14
2410 fontName "Consolas"
2411 configuration "AutoFlippingLabel"
2412 model "six_pos"
2413 position "thead"
2414 ]
2415 ]
2416 edge
2417 [
2418 source 0
2419 target 13
2420 graphics
2421 [
2422 fill "#000000"
2423 width 3
2424 targetArrow "standard"
2425 ]
2426 LabelGraphics
2427 [
2428 text "eAnnotations reference EModelElement"
2429 fontSize 14
2430 fontName "Consolas"
2431 configuration "AutoFlippingLabel"
2432 model "six_pos"
2433 position "thead"
2434 ]
2435 ]
2436 edge
2437 [
2438 source 0
2439 target 11
2440 graphics
2441 [
2442 fill "#000000"
2443 width 3
2444 targetArrow "standard"
2445 ]
2446 LabelGraphics
2447 [
2448 text "eClassifiers reference EPackage"
2449 fontSize 14
2450 fontName "Consolas"
2451 configuration "AutoFlippingLabel"
2452 model "six_pos"
2453 position "thead"
2454 ]
2455 ]
2456 edge
2457 [
2458 source 0
2459 target 12
2460 graphics
2461 [
2462 fill "#000000"
2463 width 3
2464 targetArrow "standard"
2465 ]
2466 LabelGraphics
2467 [
2468 text "eClassifiers reference EPackage"
2469 fontSize 14
2470 fontName "Consolas"
2471 configuration "AutoFlippingLabel"
2472 model "six_pos"
2473 position "thead"
2474 ]
2475 ]
2476 edge
2477 [
2478 source 0
2479 target 14
2480 graphics
2481 [
2482 fill "#000000"
2483 width 3
2484 targetArrow "standard"
2485 ]
2486 LabelGraphics
2487 [
2488 text "eClassifiers reference EPackage"
2489 fontSize 14
2490 fontName "Consolas"
2491 configuration "AutoFlippingLabel"
2492 model "six_pos"
2493 position "thead"
2494 ]
2495 ]
2496 edge
2497 [
2498 source 13
2499 target 9
2500 graphics
2501 [
2502 fill "#000000"
2503 targetArrow "standard"
2504 ]
2505 LabelGraphics
2506 [
2507 text "source attribute EAnnotation"
2508 fontSize 14
2509 fontName "Consolas"
2510 configuration "AutoFlippingLabel"
2511 model "six_pos"
2512 position "thead"
2513 ]
2514 ]
2515 edge
2516 [
2517 source 11
2518 target 6
2519 graphics
2520 [
2521 fill "#000000"
2522 targetArrow "standard"
2523 ]
2524 LabelGraphics
2525 [
2526 text "instanceClassName attribute EClassifier"
2527 fontSize 14
2528 fontName "Consolas"
2529 configuration "AutoFlippingLabel"
2530 model "six_pos"
2531 position "thead"
2532 ]
2533 ]
2534 edge
2535 [
2536 source 12
2537 target 10
2538 graphics
2539 [
2540 fill "#000000"
2541 targetArrow "standard"
2542 ]
2543 LabelGraphics
2544 [
2545 text "instanceTypeName attribute EClassifier"
2546 fontSize 14
2547 fontName "Consolas"
2548 configuration "AutoFlippingLabel"
2549 model "six_pos"
2550 position "thead"
2551 ]
2552 ]
2553 edge
2554 [
2555 source 14
2556 target 8
2557 graphics
2558 [
2559 fill "#000000"
2560 targetArrow "standard"
2561 ]
2562 LabelGraphics
2563 [
2564 text "instanceTypeName attribute EClassifier"
2565 fontSize 14
2566 fontName "Consolas"
2567 configuration "AutoFlippingLabel"
2568 model "six_pos"
2569 position "thead"
2570 ]
2571 ]
2572 edge
2573 [
2574 source 11
2575 target 7
2576 graphics
2577 [
2578 fill "#000000"
2579 targetArrow "standard"
2580 ]
2581 LabelGraphics
2582 [
2583 text "instanceTypeName attribute EClassifier"
2584 fontSize 14
2585 fontName "Consolas"
2586 configuration "AutoFlippingLabel"
2587 model "six_pos"
2588 position "thead"
2589 ]
2590 ]
2591 edge
2592 [
2593 source 12
2594 target 2
2595 graphics
2596 [
2597 fill "#000000"
2598 targetArrow "standard"
2599 ]
2600 LabelGraphics
2601 [
2602 text "serializable attribute EDataType"
2603 fontSize 14
2604 fontName "Consolas"
2605 configuration "AutoFlippingLabel"
2606 model "six_pos"
2607 position "thead"
2608 ]
2609 ]
2610 edge
2611 [
2612 source 14
2613 target 2
2614 graphics
2615 [
2616 fill "#000000"
2617 targetArrow "standard"
2618 ]
2619 LabelGraphics
2620 [
2621 text "serializable attribute EDataType"
2622 fontSize 14
2623 fontName "Consolas"
2624 configuration "AutoFlippingLabel"
2625 model "six_pos"
2626 position "thead"
2627 ]
2628 ]
2629 edge
2630 [
2631 source 11
2632 target 1
2633 graphics
2634 [
2635 fill "#000000"
2636 targetArrow "standard"
2637 ]
2638 LabelGraphics
2639 [
2640 text "serializable attribute EDataType"
2641 fontSize 14
2642 fontName "Consolas"
2643 configuration "AutoFlippingLabel"
2644 model "six_pos"
2645 position "thead"
2646 ]
2647 ]
2648 edge
2649 [
2650 source 15
2651 target 8
2652 graphics
2653 [
2654 fill "#000000"
2655 targetArrow "standard"
2656 ]
2657 LabelGraphics
2658 [
2659 text "literal attribute EEnumLiteral"
2660 fontSize 14
2661 fontName "Consolas"
2662 configuration "AutoFlippingLabel"
2663 model "six_pos"
2664 position "thead"
2665 ]
2666 ]
2667 edge
2668 [
2669 source 0
2670 target 10
2671 graphics
2672 [
2673 fill "#000000"
2674 targetArrow "standard"
2675 ]
2676 LabelGraphics
2677 [
2678 text "name attribute ENamedElement"
2679 fontSize 14
2680 fontName "Consolas"
2681 configuration "AutoFlippingLabel"
2682 model "six_pos"
2683 position "thead"
2684 ]
2685 ]
2686 edge
2687 [
2688 source 11
2689 target 10
2690 graphics
2691 [
2692 fill "#000000"
2693 targetArrow "standard"
2694 ]
2695 LabelGraphics
2696 [
2697 text "name attribute ENamedElement"
2698 fontSize 14
2699 fontName "Consolas"
2700 configuration "AutoFlippingLabel"
2701 model "six_pos"
2702 position "thead"
2703 ]
2704 ]
2705 edge
2706 [
2707 source 12
2708 target 9
2709 graphics
2710 [
2711 fill "#000000"
2712 targetArrow "standard"
2713 ]
2714 LabelGraphics
2715 [
2716 text "name attribute ENamedElement"
2717 fontSize 14
2718 fontName "Consolas"
2719 configuration "AutoFlippingLabel"
2720 model "six_pos"
2721 position "thead"
2722 ]
2723 ]
2724 edge
2725 [
2726 source 14
2727 target 9
2728 graphics
2729 [
2730 fill "#000000"
2731 targetArrow "standard"
2732 ]
2733 LabelGraphics
2734 [
2735 text "name attribute ENamedElement"
2736 fontSize 14
2737 fontName "Consolas"
2738 configuration "AutoFlippingLabel"
2739 model "six_pos"
2740 position "thead"
2741 ]
2742 ]
2743 edge
2744 [
2745 source 0
2746 target 9
2747 graphics
2748 [
2749 fill "#000000"
2750 targetArrow "standard"
2751 ]
2752 LabelGraphics
2753 [
2754 text "nsURI attribute EPackage"
2755 fontSize 14
2756 fontName "Consolas"
2757 configuration "AutoFlippingLabel"
2758 model "six_pos"
2759 position "thead"
2760 ]
2761 ]
2762 edge
2763 [
2764 source 0
2765 target 8
2766 graphics
2767 [
2768 fill "#000000"
2769 targetArrow "standard"
2770 ]
2771 LabelGraphics
2772 [
2773 text "nsPrefix attribute EPackage"
2774 fontSize 14
2775 fontName "Consolas"
2776 configuration "AutoFlippingLabel"
2777 model "six_pos"
2778 position "thead"
2779 ]
2780 ]
2781]
diff --git a/Tests/Ecore-Plugin/outputs/models/5.png b/Tests/Ecore-Plugin/outputs/models/5.png
new file mode 100644
index 00000000..e29bebfa
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/5.png
Binary files differ
diff --git a/Tests/Ecore-Plugin/outputs/models/5.xmi b/Tests/Ecore-Plugin/outputs/models/5.xmi
new file mode 100644
index 00000000..a2bb293b
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/models/5.xmi
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eAnnotations source="packageName" references="//%packageName%/@contents.0">
4 <details/>
5 <details/>
6 <details/>
7 <contents/>
8 </eAnnotations>
9</ecore:EPackage>
diff --git a/Tests/Ecore-Plugin/outputs/statistics.csv b/Tests/Ecore-Plugin/outputs/statistics.csv
new file mode 100644
index 00000000..2b912cc5
--- /dev/null
+++ b/Tests/Ecore-Plugin/outputs/statistics.csv
@@ -0,0 +1,64 @@
1Task;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
21;1;ModelResultImpl;963;10981;20587;28028267344;944;963;974;985;998;675;331;46;0;41
3Task;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
42;1;ModelResultImpl;1485;7933;16659;19719216169;660;682;697;715;728;533;354;29;0;55
5Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;Answer0Time;Answer1Time;Answer2Time;Answer3Time;Answer4Time;Alloy2KodKodTransformationTime;warnings
62;1;ModelResultImpl;1032;4928;-1;660853711;1387;1438;1485;1539;1580;859;[== is redundant, because the left and right expressions always have the same value.
7Left type = {String}
8Right type = {String},== is redundant, because the left and right expressions always have the same value.
9Left type = {String}
10Right type = {String},== is redundant, because the left and right expressions always have the same value.
11Left type = {String}
12Right type = {String},== is redundant, because the left and right expressions always have the same value.
13Left type = {String}
14Right type = {String},== is redundant, because the left and right expressions always have the same value.
15Left type = {String}
16Right type = {String}]
17Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;Answer0Time;Answer1Time;Answer2Time;Answer3Time;Answer4Time;Alloy2KodKodTransformationTime;warnings
182;1;ModelResultImpl;62;1991;-1;403150236;187;206;224;249;269;180;[== is redundant, because the left and right expressions always have the same value.
19Left type = {String}
20Right type = {String},== is redundant, because the left and right expressions always have the same value.
21Left type = {String}
22Right type = {String},== is redundant, because the left and right expressions always have the same value.
23Left type = {String}
24Right type = {String},== is redundant, because the left and right expressions always have the same value.
25Left type = {String}
26Right type = {String},== is redundant, because the left and right expressions always have the same value.
27Left type = {String}
28Right type = {String}]
29Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;Answer0Time;Answer1Time;Answer2Time;Answer3Time;Answer4Time;Alloy2KodKodTransformationTime;warnings
302;1;ModelResultImpl;1370;5611;-1;106059204862;983;1046;1085;1150;1184;481;[== is redundant, because the left and right expressions always have the same value.
31Left type = {String}
32Right type = {String},== is redundant, because the left and right expressions always have the same value.
33Left type = {String}
34Right type = {String},== is redundant, because the left and right expressions always have the same value.
35Left type = {String}
36Right type = {String},== is redundant, because the left and right expressions always have the same value.
37Left type = {String}
38Right type = {String},== is redundant, because the left and right expressions always have the same value.
39Left type = {String}
40Right type = {String}]
41Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;Answer0Time;Answer1Time;Answer2Time;Answer3Time;Answer4Time;Alloy2KodKodTransformationTime;warnings
422;1;ModelResultImpl;82;2461;-1;254200930176;282;310;343;374;403;169;[== is redundant, because the left and right expressions always have the same value.
43Left type = {String}
44Right type = {String},== is redundant, because the left and right expressions always have the same value.
45Left type = {String}
46Right type = {String},== is redundant, because the left and right expressions always have the same value.
47Left type = {String}
48Right type = {String},== is redundant, because the left and right expressions always have the same value.
49Left type = {String}
50Right type = {String},== is redundant, because the left and right expressions always have the same value.
51Left type = {String}
52Right type = {String}]
53Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;Answer0Time;Answer1Time;Answer2Time;Answer3Time;Answer4Time;Alloy2KodKodTransformationTime;warnings
542;1;ModelResultImpl;1159;5901;-1;200731387125;1011;1099;1186;1269;1371;365;[== is redundant, because the left and right expressions always have the same value.
55Left type = {String}
56Right type = {String},== is redundant, because the left and right expressions always have the same value.
57Left type = {String}
58Right type = {String},== is redundant, because the left and right expressions always have the same value.
59Left type = {String}
60Right type = {String},== is redundant, because the left and right expressions always have the same value.
61Left type = {String}
62Right type = {String},== is redundant, because the left and right expressions always have the same value.
63Left type = {String}
64Right type = {String}]