aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath8
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore1
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.project34
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/META-INF/MANIFEST.MF28
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties7
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/ecore.vsconfig33
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fam.vsconfig25
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fileSystem.vsconfig25
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/yakindu.vsconfig25
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/ecoreInstance.xmi6
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi4
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi3
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi3
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore68
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.genmodel49
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.ecore32
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.genmodel26
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.ecore26
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel34
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt195
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated31733
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem2059
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/init.partialmodel497
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt1
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml7641
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.pngbin0 -> 141462 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi9
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml4762
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.pngbin0 -> 151601 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi9
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml2069
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.pngbin0 -> 157309 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi9
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml1184
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.pngbin0 -> 162587 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi9
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml1203
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.pngbin0 -> 168585 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi9
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv32
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/errors.txt21
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generated3valued.vql_deactivated1472
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generation.logicproblem171
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/init.partialmodel106
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt1
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.gml479
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.pngbin0 -> 30880 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi9
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml479
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.pngbin0 -> 36094 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi9
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv2
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.properties4
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml26
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/Ecore.vql29
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FAMTerminator.java52
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/Function.java61
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionType.java241
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalArchitectureModel.java42
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalData.java81
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalElement.java109
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInput.java42
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInterface.java73
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalOutput.java42
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/InformationLink.java81
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famFactory.java96
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famPackage.java1032
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FAMTerminatorImpl.java196
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionImpl.java191
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalArchitectureModelImpl.java152
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalDataImpl.java267
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalElementImpl.java318
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInputImpl.java165
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInterfaceImpl.java243
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalOutputImpl.java165
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/InformationLinkImpl.java285
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famFactoryImpl.java219
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famPackageImpl.java574
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql103
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famAdapterFactory.java271
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famSwitch.java289
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Dir.java42
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FSObject.java52
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/File.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FileSystem.java70
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Model.java69
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemFactory.java69
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemPackage.java511
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/DirImpl.java165
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FSObjectImpl.java196
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileImpl.java37
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java205
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/ModelImpl.java221
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemFactoryImpl.java128
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemPackageImpl.java356
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/FileSystem.vql24
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemAdapterFactory.java192
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemSwitch.java196
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Choice.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/CompositeElement.java42
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Entry.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Exit.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/FinalState.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Pseudostate.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Region.java42
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/RegularState.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/State.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Statechart.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Synchronization.java17
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Transition.java81
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Vertex.java63
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ChoiceImpl.java37
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/CompositeElementImpl.java152
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/EntryImpl.java37
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ExitImpl.java37
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/FinalStateImpl.java37
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/PseudostateImpl.java37
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegionImpl.java152
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegularStateImpl.java37
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StateImpl.java183
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StatechartImpl.java37
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/SynchronizationImpl.java37
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/TransitionImpl.java284
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/VertexImpl.java206
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/yakinduFactoryImpl.java183
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/yakinduPackageImpl.java494
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduMutatedPatterns.vql270
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduPatterns.vql227
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/yakinduAdapterFactory.java336
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/yakinduSwitch.java378
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/yakinduFactory.java114
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/yakinduPackage.java1038
133 files changed, 67307 insertions, 0 deletions
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath
new file mode 100644
index 00000000..d8bd95f6
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath
@@ -0,0 +1,8 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="src" path="src"/>
4 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
5 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
6 <classpathentry kind="src" path="queries"/>
7 <classpathentry kind="output" path="bin"/>
8</classpath>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore
new file mode 100644
index 00000000..ae3c1726
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore
@@ -0,0 +1 @@
/bin/
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.project b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.project
new file mode 100644
index 00000000..c2212771
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.project
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>ca.mcgill.ecse.dslreasoner.standalone.test</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.viatra.query.tooling.ui.projectbuilder</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.viatra.query.projectnature</nature>
33 </natures>
34</projectDescription>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.settings/org.eclipse.jdt.core.prefs b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..295926d9
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.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/ca.mcgill.ecse.dslreasoner.standalone.test/META-INF/MANIFEST.MF b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..ca7ad11c
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: %pluginName
4Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.standalone.test;singleton:=true
5Bundle-Version: 1.0.0.qualifier
6Bundle-ClassPath: .
7Bundle-Vendor: %providerName
8Bundle-Localization: plugin
9Export-Package: ca.mcgill.ecse.dslreasoner.standalone.test.fam,
10 ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl,
11 ca.mcgill.ecse.dslreasoner.standalone.test.fam.util,
12 ca.mcgill.ecse.dslreasoner.standalone.test.yakindu,
13 ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl,
14 ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util,
15 ca.mcgill.ecse.dslreasoner.standalone.test.filesystem,
16 ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl,
17 ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.util
18Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime,
19 org.eclipse.core.runtime;bundle-version="3.13.0",
20 org.eclipse.emf.ecore;bundle-version="2.13.0";visibility:=reexport,
21 org.eclipse.viatra.query.runtime;bundle-version="2.1.0",
22 org.eclipse.viatra.query.runtime.rete;bundle-version="2.1.0",
23 org.eclipse.viatra.query.runtime.localsearch;bundle-version="2.1.0",
24 org.eclipse.xtext.xbase.lib;bundle-version="2.12.0"
25Import-Package: org.apache.log4j
26Automatic-Module-Name: ca.mcgill.ecse.dslreasoner.standalone.test
27Bundle-ActivationPolicy: lazy
28Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties
new file mode 100644
index 00000000..8ae35ddd
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties
@@ -0,0 +1,7 @@
1bin.includes = META-INF/,\
2 plugin.xml,\
3 plugin.properties
4
5jars.compile.order = .
6source.. = src/
7output.. = bin/
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/ecore.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/ecore.vsconfig
new file mode 100644
index 00000000..e5873211
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/ecore.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 = ViatraSolver
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/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug"
30 log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt"
31 output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models"
32 statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv"
33} \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fam.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fam.vsconfig
new file mode 100644
index 00000000..f4f29089
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fam.vsconfig
@@ -0,0 +1,25 @@
1import epackage "FamMetamodel"
2//import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.queries.fam.FamPatterns"
3
4generate {
5 metamodel = { package fam }
6// constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.xyz }
7 partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi"}
8 solver = ViatraSolver
9 scope = {
10 #node = 5
11 }
12
13 config = {
14 runtime = 10000,
15 log-level = normal
16 }
17
18 number = 2
19 runs = 1
20
21 debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug"
22 log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt"
23 output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models"
24 statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv"
25} \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fileSystem.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fileSystem.vsconfig
new file mode 100644
index 00000000..64775e8d
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/fileSystem.vsconfig
@@ -0,0 +1,25 @@
1import epackage "FileSystemMetamodel"
2//import viatra ""
3
4generate {
5 metamodel = { package filesystem }
6// constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.xyz }
7 partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi"}
8 solver = ViatraSolver
9 scope = {
10 #node = 5
11 }
12
13 config = {
14 runtime = 10000,
15 log-level = normal
16 }
17
18 number = 2
19 runs = 1
20
21 debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug"
22 log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt"
23 output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models"
24 statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv"
25} \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/yakindu.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/yakindu.vsconfig
new file mode 100644
index 00000000..246337de
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configurations/yakindu.vsconfig
@@ -0,0 +1,25 @@
1import epackage "YakinduMetamodel"
2//import viatra ""
3
4generate {
5 metamodel = { package yakindu }
6// constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.xyz }
7 partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi"}
8 solver = ViatraSolver
9 scope = {
10 #node = 5
11 }
12
13 config = {
14 runtime = 10000,
15 log-level = normal
16 }
17
18 number = 2
19 runs = 1
20
21 debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug"
22 log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt"
23 output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models"
24 statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv"
25} \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/ecoreInstance.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/ecoreInstance.xmi
new file mode 100644
index 00000000..867e5049
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/ecoreInstance.xmi
@@ -0,0 +1,6 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
6 name="init"/>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi
new file mode 100644
index 00000000..1ae86782
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi
@@ -0,0 +1,4 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<fam:FunctionalArchitectureModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fam="FamMetamodel"
4 xsi:schemaLocation="FamMetamodel ../metamodels/fam.ecore"/>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi
new file mode 100644
index 00000000..06d5d6d1
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi
@@ -0,0 +1,3 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<filesystem:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:filesystem="FileSystemMetamodel" xsi:schemaLocation="FileSystemMetamodel ../metamodels/filesystem.ecore"/>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi
new file mode 100644
index 00000000..e5f1099f
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi
@@ -0,0 +1,3 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<yakindu:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:yakindu="YakinduMetamodel" xsi:schemaLocation="YakinduMetamodel ../metamodels/yakindu.ecore"/>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore
new file mode 100644
index 00000000..498e9838
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore
@@ -0,0 +1,68 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="fam" nsURI="FamMetamodel" nsPrefix="fam">
4 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
5 <details key="settingDelegates" value="org.eclipse.viatra.query.querybasedfeature"/>
6 </eAnnotations>
7 <eClassifiers xsi:type="ecore:EClass" name="FunctionalElement" abstract="true">
8 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface"
9 containment="true" eOpposite="#//FunctionalInterface/element"/>
10 <eStructuralFeatures xsi:type="ecore:EReference" name="model" lowerBound="1" eType="#//FunctionalArchitectureModel"
11 volatile="true" transient="true" derived="true">
12 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
13 <details key="patternFQN" value="ca.mcgill.ecse.dslreasoner.standalone.test.xyz.model"/>
14 </eAnnotations>
15 </eStructuralFeatures>
16 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Function"
17 eOpposite="#//Function/subElements"/>
18 </eClassifiers>
19 <eClassifiers xsi:type="ecore:EClass" name="FunctionalArchitectureModel">
20 <eStructuralFeatures xsi:type="ecore:EReference" name="rootElements" upperBound="-1"
21 eType="#//FunctionalElement" containment="true"/>
22 </eClassifiers>
23 <eClassifiers xsi:type="ecore:EClass" name="Function" eSuperTypes="#//FunctionalElement">
24 <eStructuralFeatures xsi:type="ecore:EReference" name="subElements" upperBound="-1"
25 eType="#//FunctionalElement" containment="true" eOpposite="#//FunctionalElement/parent"/>
26 <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FunctionType"
27 changeable="false" volatile="true" transient="true" derived="true">
28 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
29 <details key="patternFQN" value="ca.mcgill.ecse.dslreasoner.standalone.test.xyz.type"/>
30 </eAnnotations>
31 </eStructuralFeatures>
32 </eClassifiers>
33 <eClassifiers xsi:type="ecore:EClass" name="FAMTerminator">
34 <eStructuralFeatures xsi:type="ecore:EReference" name="data" eType="#//FunctionalData"
35 eOpposite="#//FunctionalData/terminator"/>
36 </eClassifiers>
37 <eClassifiers xsi:type="ecore:EClass" name="InformationLink">
38 <eStructuralFeatures xsi:type="ecore:EReference" name="from" eType="#//FunctionalOutput"
39 eOpposite="#//FunctionalOutput/outgoingLinks"/>
40 <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//FunctionalInput"
41 eOpposite="#//FunctionalInput/IncomingLinks"/>
42 </eClassifiers>
43 <eClassifiers xsi:type="ecore:EClass" name="FunctionalInterface">
44 <eStructuralFeatures xsi:type="ecore:EReference" name="data" upperBound="-1" eType="#//FunctionalData"
45 containment="true" eOpposite="#//FunctionalData/interface"/>
46 <eStructuralFeatures xsi:type="ecore:EReference" name="element" eType="#//FunctionalElement"
47 eOpposite="#//FunctionalElement/interface"/>
48 </eClassifiers>
49 <eClassifiers xsi:type="ecore:EClass" name="FunctionalInput" eSuperTypes="#//FunctionalData">
50 <eStructuralFeatures xsi:type="ecore:EReference" name="IncomingLinks" upperBound="-1"
51 eType="#//InformationLink" eOpposite="#//InformationLink/to"/>
52 </eClassifiers>
53 <eClassifiers xsi:type="ecore:EClass" name="FunctionalOutput" eSuperTypes="#//FunctionalData">
54 <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingLinks" upperBound="-1"
55 eType="#//InformationLink" containment="true" eOpposite="#//InformationLink/from"/>
56 </eClassifiers>
57 <eClassifiers xsi:type="ecore:EClass" name="FunctionalData" abstract="true">
58 <eStructuralFeatures xsi:type="ecore:EReference" name="terminator" eType="#//FAMTerminator"
59 containment="true" eOpposite="#//FAMTerminator/data"/>
60 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface"
61 eOpposite="#//FunctionalInterface/data"/>
62 </eClassifiers>
63 <eClassifiers xsi:type="ecore:EEnum" name="FunctionType">
64 <eLiterals name="Root"/>
65 <eLiterals name="Intermediate" value="1"/>
66 <eLiterals name="Leaf" value="2"/>
67 </eClassifiers>
68</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.genmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.genmodel
new file mode 100644
index 00000000..3d26d5c4
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.genmodel
@@ -0,0 +1,49 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
3 xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/ca.mcgill.ecse.dslreasoner.standalone.test/src"
4 modelPluginID="ca.mcgill.ecse.dslreasoner.standalone.test" modelName="Fam" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
5 importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
6 operationReflection="true" importOrganizing="true">
7 <foreignModel>fam.ecore</foreignModel>
8 <genPackages prefix="fam" basePackage="ca.mcgill.ecse.dslreasoner.standalone.test"
9 disposableProviderFactory="true" ecorePackage="fam.ecore#/">
10 <genEnums typeSafeEnumCompatible="false" ecoreEnum="fam.ecore#//FunctionType">
11 <genEnumLiterals ecoreEnumLiteral="fam.ecore#//FunctionType/Root"/>
12 <genEnumLiterals ecoreEnumLiteral="fam.ecore#//FunctionType/Intermediate"/>
13 <genEnumLiterals ecoreEnumLiteral="fam.ecore#//FunctionType/Leaf"/>
14 </genEnums>
15 <genClasses image="false" ecoreClass="fam.ecore#//FunctionalElement">
16 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference fam.ecore#//FunctionalElement/interface"/>
17 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference fam.ecore#//FunctionalElement/model"/>
18 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference fam.ecore#//FunctionalElement/parent"/>
19 </genClasses>
20 <genClasses ecoreClass="fam.ecore#//FunctionalArchitectureModel">
21 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference fam.ecore#//FunctionalArchitectureModel/rootElements"/>
22 </genClasses>
23 <genClasses ecoreClass="fam.ecore#//Function">
24 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference fam.ecore#//Function/subElements"/>
25 <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute fam.ecore#//Function/type"/>
26 </genClasses>
27 <genClasses ecoreClass="fam.ecore#//FAMTerminator">
28 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference fam.ecore#//FAMTerminator/data"/>
29 </genClasses>
30 <genClasses ecoreClass="fam.ecore#//InformationLink">
31 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference fam.ecore#//InformationLink/from"/>
32 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference fam.ecore#//InformationLink/to"/>
33 </genClasses>
34 <genClasses ecoreClass="fam.ecore#//FunctionalInterface">
35 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference fam.ecore#//FunctionalInterface/data"/>
36 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference fam.ecore#//FunctionalInterface/element"/>
37 </genClasses>
38 <genClasses ecoreClass="fam.ecore#//FunctionalInput">
39 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference fam.ecore#//FunctionalInput/IncomingLinks"/>
40 </genClasses>
41 <genClasses ecoreClass="fam.ecore#//FunctionalOutput">
42 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference fam.ecore#//FunctionalOutput/outgoingLinks"/>
43 </genClasses>
44 <genClasses image="false" ecoreClass="fam.ecore#//FunctionalData">
45 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference fam.ecore#//FunctionalData/terminator"/>
46 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference fam.ecore#//FunctionalData/interface"/>
47 </genClasses>
48 </genPackages>
49</genmodel:GenModel>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.ecore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.ecore
new file mode 100644
index 00000000..3dd2061b
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.ecore
@@ -0,0 +1,32 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="filesystem" nsURI="FileSystemMetamodel" nsPrefix="filesystem">
4 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
5 <details key="settingDelegates" value="org.eclipse.viatra.query.querybasedfeature"/>
6 </eAnnotations>
7 <eClassifiers xsi:type="ecore:EClass" name="FileSystem">
8 <eStructuralFeatures xsi:type="ecore:EReference" name="root" lowerBound="1" eType="#//Dir"
9 containment="true"/>
10 <eStructuralFeatures xsi:type="ecore:EReference" name="live" upperBound="-1" eType="#//FSObject"
11 changeable="false" volatile="true" transient="true" derived="true">
12 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
13 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live"/>
14 </eAnnotations>
15 </eStructuralFeatures>
16 </eClassifiers>
17 <eClassifiers xsi:type="ecore:EClass" name="FSObject" abstract="true">
18 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Dir"
19 eOpposite="#//Dir/contents"/>
20 </eClassifiers>
21 <eClassifiers xsi:type="ecore:EClass" name="Dir" eSuperTypes="#//FSObject">
22 <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
23 eType="#//FSObject" containment="true" eOpposite="#//FSObject/parent"/>
24 </eClassifiers>
25 <eClassifiers xsi:type="ecore:EClass" name="File" eSuperTypes="#//FSObject"/>
26 <eClassifiers xsi:type="ecore:EClass" name="Model">
27 <eStructuralFeatures xsi:type="ecore:EReference" name="filesystems" lowerBound="1"
28 eType="#//FileSystem" containment="true"/>
29 <eStructuralFeatures xsi:type="ecore:EReference" name="otherFSObjects" upperBound="-1"
30 eType="#//FSObject" containment="true"/>
31 </eClassifiers>
32</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.genmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.genmodel
new file mode 100644
index 00000000..712533fe
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.genmodel
@@ -0,0 +1,26 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
3 xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/ca.mcgill.ecse.dslreasoner.standalone.test/src"
4 modelPluginID="ca.mcgill.ecse.dslreasoner.standalone.test" modelName="Filesystem"
5 rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore"
6 complianceLevel="8.0" copyrightFields="false" operationReflection="true" importOrganizing="true">
7 <foreignModel>filesystem.ecore</foreignModel>
8 <genPackages prefix="filesystem" basePackage="ca.mcgill.ecse.dslreasoner.standalone.test"
9 disposableProviderFactory="true" ecorePackage="filesystem.ecore#/">
10 <genClasses ecoreClass="filesystem.ecore#//FileSystem">
11 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference filesystem.ecore#//FileSystem/root"/>
12 <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference filesystem.ecore#//FileSystem/live"/>
13 </genClasses>
14 <genClasses image="false" ecoreClass="filesystem.ecore#//FSObject">
15 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference filesystem.ecore#//FSObject/parent"/>
16 </genClasses>
17 <genClasses ecoreClass="filesystem.ecore#//Dir">
18 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference filesystem.ecore#//Dir/contents"/>
19 </genClasses>
20 <genClasses ecoreClass="filesystem.ecore#//File"/>
21 <genClasses ecoreClass="filesystem.ecore#//Model">
22 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference filesystem.ecore#//Model/filesystems"/>
23 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference filesystem.ecore#//Model/otherFSObjects"/>
24 </genClasses>
25 </genPackages>
26</genmodel:GenModel>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.ecore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.ecore
new file mode 100644
index 00000000..0c944db8
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.ecore
@@ -0,0 +1,26 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="yakindu" nsURI="YakinduMetamodel" nsPrefix="yakindu">
3 <eClassifiers xsi:type="ecore:EClass" name="Pseudostate" abstract="true" eSuperTypes="//Vertex"/>
4 <eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true">
5 <eStructuralFeatures xsi:type="ecore:EReference" name="incomingTransitions" ordered="false" upperBound="-1" eType="//Transition" eOpposite="//Transition/target"/>
6 <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingTransitions" ordered="false" upperBound="-1" eType="//Transition" containment="true" eOpposite="//Transition/source"/>
7 </eClassifiers>
8 <eClassifiers xsi:type="ecore:EClass" name="Region">
9 <eStructuralFeatures xsi:type="ecore:EReference" name="vertices" ordered="false" upperBound="-1" eType="//Vertex" containment="true"/>
10 </eClassifiers>
11 <eClassifiers xsi:type="ecore:EClass" name="Transition">
12 <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false" lowerBound="1" eType="//Vertex" eOpposite="//Vertex/incomingTransitions"/>
13 <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false" eType="//Vertex" eOpposite="//Vertex/outgoingTransitions"/>
14 </eClassifiers>
15 <eClassifiers xsi:type="ecore:EClass" name="Statechart" eSuperTypes="//CompositeElement"/>
16 <eClassifiers xsi:type="ecore:EClass" name="Entry" eSuperTypes="//Pseudostate"/>
17 <eClassifiers xsi:type="ecore:EClass" name="Synchronization" eSuperTypes="//Pseudostate"/>
18 <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="//RegularState //CompositeElement"/>
19 <eClassifiers xsi:type="ecore:EClass" name="RegularState" abstract="true" eSuperTypes="//Vertex"/>
20 <eClassifiers xsi:type="ecore:EClass" name="CompositeElement" abstract="true">
21 <eStructuralFeatures xsi:type="ecore:EReference" name="regions" upperBound="-1" eType="//Region" containment="true"/>
22 </eClassifiers>
23 <eClassifiers xsi:type="ecore:EClass" name="Choice" eSuperTypes="//Pseudostate"/>
24 <eClassifiers xsi:type="ecore:EClass" name="Exit" eSuperTypes="//Pseudostate"/>
25 <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="//RegularState"/>
26</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel
new file mode 100644
index 00000000..b1f75d76
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
3 xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/ca.mcgill.ecse.dslreasoner.standalone.test/src"
4 modelPluginID="ca.mcgill.ecse.dslreasoner.standalone.test" modelName="Yakindu"
5 rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore"
6 complianceLevel="8.0" copyrightFields="false" operationReflection="true" importOrganizing="true">
7 <foreignModel>yakindu.ecore</foreignModel>
8 <genPackages prefix="yakindu" basePackage="ca.mcgill.ecse.dslreasoner.standalone.test"
9 disposableProviderFactory="true" ecorePackage="yakindu.ecore#/">
10 <genClasses image="false" ecoreClass="yakindu.ecore#//Pseudostate"/>
11 <genClasses image="false" ecoreClass="yakindu.ecore#//Vertex">
12 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference yakindu.ecore#//Vertex/incomingTransitions"/>
13 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference yakindu.ecore#//Vertex/outgoingTransitions"/>
14 </genClasses>
15 <genClasses ecoreClass="yakindu.ecore#//Region">
16 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference yakindu.ecore#//Region/vertices"/>
17 </genClasses>
18 <genClasses ecoreClass="yakindu.ecore#//Transition">
19 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference yakindu.ecore#//Transition/target"/>
20 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference yakindu.ecore#//Transition/source"/>
21 </genClasses>
22 <genClasses ecoreClass="yakindu.ecore#//Statechart"/>
23 <genClasses ecoreClass="yakindu.ecore#//Entry"/>
24 <genClasses ecoreClass="yakindu.ecore#//Synchronization"/>
25 <genClasses ecoreClass="yakindu.ecore#//State"/>
26 <genClasses image="false" ecoreClass="yakindu.ecore#//RegularState"/>
27 <genClasses image="false" ecoreClass="yakindu.ecore#//CompositeElement">
28 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference yakindu.ecore#//CompositeElement/regions"/>
29 </genClasses>
30 <genClasses ecoreClass="yakindu.ecore#//Choice"/>
31 <genClasses ecoreClass="yakindu.ecore#//Exit"/>
32 <genClasses ecoreClass="yakindu.ecore#//FinalState"/>
33 </genPackages>
34</genmodel:GenModel>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt
new file mode 100644
index 00000000..94b0f4e3
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt
@@ -0,0 +1,195 @@
1Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
2 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
3 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
4 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
5 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
6 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
7 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
8 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
9 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
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 (NullPointerException):
12 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108)
13 org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41)
14 com.google.common.collect.Iterators$6.computeNext(Iterators.java:617)
15 com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145)
16 com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140)
17 com.google.common.collect.Iterators.addAll(Iterators.java:366)
18 com.google.common.collect.Iterables.addAll(Iterables.java:332)
19 com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383)
20 org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592)
21 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84)
22 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213)
23 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54)
24 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167)
25 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
26 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
27 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
28 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
29 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
30 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
31 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
32 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
33 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
34 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
35 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
36 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
37 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
38 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
39 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
40 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
41 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
42 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
43 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
44 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
45 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
46 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
47 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
48 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
49 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
50 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
51 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
52 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
53 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
54 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
55 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
56 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
57 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
58 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
59 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
60 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
61 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
62 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
63 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
64 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
65 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
66 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
67 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
68 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
69 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
70 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
71 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
72 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
73 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
74 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
75 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
76 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
77 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
78 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
79 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
80 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
81 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
82 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
83 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
84 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
85 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
86 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
87 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
88 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
89 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
90 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
91 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
92 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
93 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
94 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
95 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
96 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
97 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
98 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
99 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
100 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
101 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
102 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
103 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
104 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
105 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
106 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
107 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
108 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
109 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
110 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
111 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
112 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
113 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
114 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
115 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
116 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
117 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
118 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
119 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.terminatorAndInformation contains errors.
120 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
121 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
122 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
123 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
124 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
125 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
126 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
127 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
128 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
129 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.xyz.terminatorAndInformation contains errors.
130 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
131 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
132 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
133 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
134 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
135 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
136 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
137 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
138 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
139 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.xyz.terminatorAndInformation contains errors.
140 org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144)
141 org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161)
142 org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26)
143 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111)
144 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
145 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
146 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
147 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
148 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
149 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException):
150 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108)
151 org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41)
152 com.google.common.collect.Iterators$6.computeNext(Iterators.java:617)
153 com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145)
154 com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140)
155 com.google.common.collect.Iterators.addAll(Iterators.java:366)
156 com.google.common.collect.Iterables.addAll(Iterables.java:332)
157 com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383)
158 org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592)
159 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84)
160 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213)
161 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54)
162 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167)
163 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
164 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
165 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
166 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
167 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException):
168 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108)
169 org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41)
170 com.google.common.collect.Iterators$6.computeNext(Iterators.java:617)
171 com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145)
172 com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140)
173 com.google.common.collect.Iterators.addAll(Iterators.java:366)
174 com.google.common.collect.Iterables.addAll(Iterables.java:332)
175 com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383)
176 org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592)
177 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84)
178 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213)
179 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54)
180 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167)
181 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
182 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
183 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
184 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
185 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Unsupported attribute type: EJavaClass of org.eclipse.emf.ecore.impl.EcorePackageImpl@eddc9bb (name: ecore) (nsURI: http://www.eclipse.org/emf/2002/Ecore, nsPrefix: ecore)::EClassifier.instanceClass
186 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.TypeOfRange(EAttributeMapper_RelationsOverTypes.java:237)
187 hu.bme.mit.inf.dslreasoner.ecore2logic.EAttributeMapper_RelationsOverTypes.transformEAttributes(EAttributeMapper_RelationsOverTypes.java:70)
188 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformEAttributes(Ecore2Logic.java:140)
189 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.transformMetamodel(Ecore2Logic.java:83)
190 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:189)
191 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
192 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
193 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
194 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
195 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56) \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated
new file mode 100644
index 00000000..88497c64
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated
@@ -0,0 +1,31733 @@
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 "FunctionalElement class".
86 */
87private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
88 Type.name(type,"FunctionalElement class");
89 find directInstanceOf(problem,interpretation,element,type);
90}
91private pattern scopeDisallowsNewFunctionalElement_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,"FunctionalElement class");
98}
99
100/**
101 * An element may be an instance of type "FunctionalElement class".
102 */
103private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
104{
105 find interpretation(problem,interpretation);
106 PartialInterpretation.newElements(interpretation,element);
107 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
108 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
109 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
110 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
111 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
112 neg find mustInstanceOfFunction_class(problem,interpretation,element);
113 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
114 neg find isPrimitive(element);
115} or {
116 find interpretation(problem,interpretation);
117 PartialInterpretation.openWorldElements(interpretation,element);
118 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
119 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
120 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
121 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
122 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
123 neg find mustInstanceOfFunction_class(problem,interpretation,element);
124 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
125 neg find isPrimitive(element);
126} or
127{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
128/**
129 * An element must be an instance of type "FunctionalArchitectureModel class".
130 */
131private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
132 Type.name(type,"FunctionalArchitectureModel class");
133 find directInstanceOf(problem,interpretation,element,type);
134}
135private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
136 find interpretation(problem,interpretation);
137 PartialInterpretation.scopes(interpretation,scope);
138 Scope.targetTypeInterpretation(scope,typeInterpretation);
139 Scope.maxNewElements(scope,0);
140 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
141 Type.name(type,"FunctionalArchitectureModel class");
142}
143
144/**
145 * An element may be an instance of type "FunctionalArchitectureModel class".
146 */
147private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
148{
149 find interpretation(problem,interpretation);
150 PartialInterpretation.newElements(interpretation,element);
151 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
152 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
153 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
154 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
155 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
156 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
157 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
158 neg find isPrimitive(element);
159} or {
160 find interpretation(problem,interpretation);
161 PartialInterpretation.openWorldElements(interpretation,element);
162 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
163 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
164 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
165 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
166 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
167 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
168 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
169 neg find isPrimitive(element);
170} or
171{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
172/**
173 * An element must be an instance of type "Function class".
174 */
175private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
176 Type.name(type,"Function class");
177 find directInstanceOf(problem,interpretation,element,type);
178}
179private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
180 find interpretation(problem,interpretation);
181 PartialInterpretation.scopes(interpretation,scope);
182 Scope.targetTypeInterpretation(scope,typeInterpretation);
183 Scope.maxNewElements(scope,0);
184 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
185 Type.name(type,"Function class");
186}
187
188/**
189 * An element may be an instance of type "Function class".
190 */
191private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
192{
193 find interpretation(problem,interpretation);
194 PartialInterpretation.newElements(interpretation,element);
195 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
196 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
197 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
198 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
199 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
200 neg find scopeDisallowsNewFunction_class(problem, interpretation);
201 neg find isPrimitive(element);
202} or {
203 find interpretation(problem,interpretation);
204 PartialInterpretation.openWorldElements(interpretation,element);
205 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
206 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
207 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
208 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
209 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
210 neg find scopeDisallowsNewFunction_class(problem, interpretation);
211 neg find isPrimitive(element);
212} or
213{ find mustInstanceOfFunction_class(problem,interpretation,element); }
214/**
215 * An element must be an instance of type "FAMTerminator class".
216 */
217private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
218 Type.name(type,"FAMTerminator class");
219 find directInstanceOf(problem,interpretation,element,type);
220}
221private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
222 find interpretation(problem,interpretation);
223 PartialInterpretation.scopes(interpretation,scope);
224 Scope.targetTypeInterpretation(scope,typeInterpretation);
225 Scope.maxNewElements(scope,0);
226 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
227 Type.name(type,"FAMTerminator class");
228}
229
230/**
231 * An element may be an instance of type "FAMTerminator class".
232 */
233private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
234{
235 find interpretation(problem,interpretation);
236 PartialInterpretation.newElements(interpretation,element);
237 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
238 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
239 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
240 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
241 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
242 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
243 neg find isPrimitive(element);
244} or {
245 find interpretation(problem,interpretation);
246 PartialInterpretation.openWorldElements(interpretation,element);
247 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
248 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
249 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
250 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
251 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
252 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
253 neg find isPrimitive(element);
254} or
255{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
256/**
257 * An element must be an instance of type "InformationLink class".
258 */
259private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
260 Type.name(type,"InformationLink class");
261 find directInstanceOf(problem,interpretation,element,type);
262}
263private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
264 find interpretation(problem,interpretation);
265 PartialInterpretation.scopes(interpretation,scope);
266 Scope.targetTypeInterpretation(scope,typeInterpretation);
267 Scope.maxNewElements(scope,0);
268 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
269 Type.name(type,"InformationLink class");
270}
271
272/**
273 * An element may be an instance of type "InformationLink class".
274 */
275private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
276{
277 find interpretation(problem,interpretation);
278 PartialInterpretation.newElements(interpretation,element);
279 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
280 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
281 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
282 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
283 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
284 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
285 neg find isPrimitive(element);
286} or {
287 find interpretation(problem,interpretation);
288 PartialInterpretation.openWorldElements(interpretation,element);
289 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
290 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
291 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
292 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
293 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
294 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
295 neg find isPrimitive(element);
296} or
297{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
298/**
299 * An element must be an instance of type "FunctionalInterface class".
300 */
301private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
302 Type.name(type,"FunctionalInterface class");
303 find directInstanceOf(problem,interpretation,element,type);
304}
305private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
306 find interpretation(problem,interpretation);
307 PartialInterpretation.scopes(interpretation,scope);
308 Scope.targetTypeInterpretation(scope,typeInterpretation);
309 Scope.maxNewElements(scope,0);
310 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
311 Type.name(type,"FunctionalInterface class");
312}
313
314/**
315 * An element may be an instance of type "FunctionalInterface class".
316 */
317private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
318{
319 find interpretation(problem,interpretation);
320 PartialInterpretation.newElements(interpretation,element);
321 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
322 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
323 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
324 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
325 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
326 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
327 neg find isPrimitive(element);
328} or {
329 find interpretation(problem,interpretation);
330 PartialInterpretation.openWorldElements(interpretation,element);
331 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
332 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
333 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
334 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
335 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
336 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
337 neg find isPrimitive(element);
338} or
339{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
340/**
341 * An element must be an instance of type "FunctionalInput class".
342 */
343private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
344 Type.name(type,"FunctionalInput class");
345 find directInstanceOf(problem,interpretation,element,type);
346}
347private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
348 find interpretation(problem,interpretation);
349 PartialInterpretation.scopes(interpretation,scope);
350 Scope.targetTypeInterpretation(scope,typeInterpretation);
351 Scope.maxNewElements(scope,0);
352 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
353 Type.name(type,"FunctionalInput class");
354}
355
356/**
357 * An element may be an instance of type "FunctionalInput class".
358 */
359private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
360{
361 find interpretation(problem,interpretation);
362 PartialInterpretation.newElements(interpretation,element);
363 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
364 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
365 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
366 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
367 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
368 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
369 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
370 neg find isPrimitive(element);
371} or {
372 find interpretation(problem,interpretation);
373 PartialInterpretation.openWorldElements(interpretation,element);
374 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
375 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
376 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
377 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
378 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
379 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
380 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
381 neg find isPrimitive(element);
382} or
383{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
384/**
385 * An element must be an instance of type "FunctionalOutput class".
386 */
387private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
388 Type.name(type,"FunctionalOutput class");
389 find directInstanceOf(problem,interpretation,element,type);
390}
391private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
392 find interpretation(problem,interpretation);
393 PartialInterpretation.scopes(interpretation,scope);
394 Scope.targetTypeInterpretation(scope,typeInterpretation);
395 Scope.maxNewElements(scope,0);
396 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
397 Type.name(type,"FunctionalOutput class");
398}
399
400/**
401 * An element may be an instance of type "FunctionalOutput class".
402 */
403private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
404{
405 find interpretation(problem,interpretation);
406 PartialInterpretation.newElements(interpretation,element);
407 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
408 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
409 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
410 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
411 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
412 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
413 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
414 neg find isPrimitive(element);
415} or {
416 find interpretation(problem,interpretation);
417 PartialInterpretation.openWorldElements(interpretation,element);
418 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
419 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
420 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
421 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
422 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
423 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
424 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
425 neg find isPrimitive(element);
426} or
427{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
428/**
429 * An element must be an instance of type "FunctionalData class".
430 */
431private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
432 Type.name(type,"FunctionalData class");
433 find directInstanceOf(problem,interpretation,element,type);
434}
435private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
436 find interpretation(problem,interpretation);
437 PartialInterpretation.scopes(interpretation,scope);
438 Scope.targetTypeInterpretation(scope,typeInterpretation);
439 Scope.maxNewElements(scope,0);
440 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
441 Type.name(type,"FunctionalData class");
442}
443
444/**
445 * An element may be an instance of type "FunctionalData class".
446 */
447private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
448{
449 find interpretation(problem,interpretation);
450 PartialInterpretation.newElements(interpretation,element);
451 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
452 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
453 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
454 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
455 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
456 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
457 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
458 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
459 neg find isPrimitive(element);
460} or {
461 find interpretation(problem,interpretation);
462 PartialInterpretation.openWorldElements(interpretation,element);
463 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
464 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
465 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
466 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
467 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
468 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
469 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
470 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
471 neg find isPrimitive(element);
472} or
473{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
474/**
475 * An element must be an instance of type "FunctionType enum".
476 */
477private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
478 Type.name(type,"FunctionType enum");
479 find directInstanceOf(problem,interpretation,element,type);
480}
481private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
482 find interpretation(problem,interpretation);
483 PartialInterpretation.scopes(interpretation,scope);
484 Scope.targetTypeInterpretation(scope,typeInterpretation);
485 Scope.maxNewElements(scope,0);
486 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
487 Type.name(type,"FunctionType enum");
488}
489
490/**
491 * An element may be an instance of type "FunctionType enum".
492 */
493private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
494{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
495/**
496 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
497 */
498private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
499 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
500 find directInstanceOf(problem,interpretation,element,type);
501}
502private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
503 find interpretation(problem,interpretation);
504 PartialInterpretation.scopes(interpretation,scope);
505 Scope.targetTypeInterpretation(scope,typeInterpretation);
506 Scope.maxNewElements(scope,0);
507 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
508 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
509}
510
511/**
512 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
513 */
514private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
515{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
516/**
517 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
518 */
519private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
520 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
521 find directInstanceOf(problem,interpretation,element,type);
522}
523private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
524 find interpretation(problem,interpretation);
525 PartialInterpretation.scopes(interpretation,scope);
526 Scope.targetTypeInterpretation(scope,typeInterpretation);
527 Scope.maxNewElements(scope,0);
528 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
529 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
530}
531
532/**
533 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
534 */
535private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
536{
537 find interpretation(problem,interpretation);
538 PartialInterpretation.newElements(interpretation,element);
539 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
540 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
541 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
542 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
543 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
544 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
545 neg find isPrimitive(element);
546} or {
547 find interpretation(problem,interpretation);
548 PartialInterpretation.openWorldElements(interpretation,element);
549 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
550 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
551 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
552 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
553 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
554 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
555 neg find isPrimitive(element);
556} or
557{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
558
559//////////
560// 1.2 Relation Declaration Indexers
561//////////
562/**
563 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
564 */
565private pattern mustInRelationinterface_reference_FunctionalElement(
566 problem:LogicProblem, interpretation:PartialInterpretation,
567 source: DefinedElement, target:DefinedElement)
568{
569 find interpretation(problem,interpretation);
570 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
571 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
572 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
573 BinaryElementRelationLink.param1(link,source);
574 BinaryElementRelationLink.param2(link,target);
575}
576/**
577 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
578 */
579private pattern mayInRelationinterface_reference_FunctionalElement(
580 problem:LogicProblem, interpretation:PartialInterpretation,
581 source: DefinedElement, target:DefinedElement)
582{
583 find interpretation(problem,interpretation);
584 // The two endpoint of the link have to exist
585 find mayExist(problem, interpretation, source);
586 find mayExist(problem, interpretation, target);
587 // Type consistency
588 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
589 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
590 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
591 // the upper bound of the multiplicity should be considered.
592 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
593 check(numberOfExistingReferences < 1);
594 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
595 // the upper bound of the opposite reference multiplicity should be considered.
596 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
597 check(numberOfExistingOppositeReferences < 1);
598 // The reference is containment, then a new reference cannot be create if:
599 // 1. Multiple parents
600 neg find mustContains4(problem,interpretation,_,target);
601 // 2. Circle in the containment hierarchy
602 neg find mustTransitiveContains(source,target);
603} or {
604 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
605}
606/**
607 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
608 */
609 private pattern mustInRelationmodel_reference_FunctionalElement(
610 problem:LogicProblem, interpretation:PartialInterpretation,
611 source: DefinedElement, target:DefinedElement)
612 {
613 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
614 }
615/**
616 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
617 */
618 private pattern mayInRelationmodel_reference_FunctionalElement(
619 problem:LogicProblem, interpretation:PartialInterpretation,
620 source: DefinedElement, target:DefinedElement)
621 {
622 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
623 }
624/**
625 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
626 */
627private pattern mustInRelationparent_reference_FunctionalElement(
628 problem:LogicProblem, interpretation:PartialInterpretation,
629 source: DefinedElement, target:DefinedElement)
630{
631 find interpretation(problem,interpretation);
632 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
633 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
634 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
635 BinaryElementRelationLink.param1(link,source);
636 BinaryElementRelationLink.param2(link,target);
637}
638/**
639 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
640 */
641private pattern mayInRelationparent_reference_FunctionalElement(
642 problem:LogicProblem, interpretation:PartialInterpretation,
643 source: DefinedElement, target:DefinedElement)
644{
645 find interpretation(problem,interpretation);
646 // The two endpoint of the link have to exist
647 find mayExist(problem, interpretation, source);
648 find mayExist(problem, interpretation, target);
649 // Type consistency
650 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
651 find mayInstanceOfFunction_class(problem,interpretation,target);
652 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
653 // the upper bound of the multiplicity should be considered.
654 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
655 check(numberOfExistingReferences < 1);
656 // The eOpposite of the reference is containment, then a referene cannot be created if
657 // 1. Multiple parents
658 neg find mustContains4(problem,interpretation,source,_);
659 // 2. Circle in the containment hierarchy
660 neg find mustTransitiveContains(source,target);
661} or {
662 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
663}
664/**
665 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
666 */
667private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
668 problem:LogicProblem, interpretation:PartialInterpretation,
669 source: DefinedElement, target:DefinedElement)
670{
671 find interpretation(problem,interpretation);
672 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
673 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
674 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
675 BinaryElementRelationLink.param1(link,source);
676 BinaryElementRelationLink.param2(link,target);
677}
678/**
679 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
680 */
681private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
682 problem:LogicProblem, interpretation:PartialInterpretation,
683 source: DefinedElement, target:DefinedElement)
684{
685 find interpretation(problem,interpretation);
686 // The two endpoint of the link have to exist
687 find mayExist(problem, interpretation, source);
688 find mayExist(problem, interpretation, target);
689 // Type consistency
690 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
691 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
692 // The reference is containment, then a new reference cannot be create if:
693 // 1. Multiple parents
694 neg find mustContains4(problem,interpretation,_,target);
695 // 2. Circle in the containment hierarchy
696 neg find mustTransitiveContains(source,target);
697} or {
698 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
699}
700/**
701 * Matcher for detecting tuples t where []subElements reference Function(source,target)
702 */
703private pattern mustInRelationsubElements_reference_Function(
704 problem:LogicProblem, interpretation:PartialInterpretation,
705 source: DefinedElement, target:DefinedElement)
706{
707 find interpretation(problem,interpretation);
708 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
709 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
710 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
711 BinaryElementRelationLink.param1(link,source);
712 BinaryElementRelationLink.param2(link,target);
713}
714/**
715 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
716 */
717private pattern mayInRelationsubElements_reference_Function(
718 problem:LogicProblem, interpretation:PartialInterpretation,
719 source: DefinedElement, target:DefinedElement)
720{
721 find interpretation(problem,interpretation);
722 // The two endpoint of the link have to exist
723 find mayExist(problem, interpretation, source);
724 find mayExist(problem, interpretation, target);
725 // Type consistency
726 find mayInstanceOfFunction_class(problem,interpretation,source);
727 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
728 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
729 // the upper bound of the opposite reference multiplicity should be considered.
730 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
731 check(numberOfExistingOppositeReferences < 1);
732 // The reference is containment, then a new reference cannot be create if:
733 // 1. Multiple parents
734 neg find mustContains4(problem,interpretation,_,target);
735 // 2. Circle in the containment hierarchy
736 neg find mustTransitiveContains(source,target);
737} or {
738 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
739}
740/**
741 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
742 */
743private pattern mustInRelationdata_reference_FAMTerminator(
744 problem:LogicProblem, interpretation:PartialInterpretation,
745 source: DefinedElement, target:DefinedElement)
746{
747 find interpretation(problem,interpretation);
748 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
749 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
750 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
751 BinaryElementRelationLink.param1(link,source);
752 BinaryElementRelationLink.param2(link,target);
753}
754/**
755 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
756 */
757private pattern mayInRelationdata_reference_FAMTerminator(
758 problem:LogicProblem, interpretation:PartialInterpretation,
759 source: DefinedElement, target:DefinedElement)
760{
761 find interpretation(problem,interpretation);
762 // The two endpoint of the link have to exist
763 find mayExist(problem, interpretation, source);
764 find mayExist(problem, interpretation, target);
765 // Type consistency
766 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
767 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
768 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
769 // the upper bound of the multiplicity should be considered.
770 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
771 check(numberOfExistingReferences < 1);
772 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
773 // the upper bound of the opposite reference multiplicity should be considered.
774 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
775 check(numberOfExistingOppositeReferences < 1);
776 // The eOpposite of the reference is containment, then a referene cannot be created if
777 // 1. Multiple parents
778 neg find mustContains4(problem,interpretation,source,_);
779 // 2. Circle in the containment hierarchy
780 neg find mustTransitiveContains(source,target);
781} or {
782 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
783}
784/**
785 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
786 */
787private pattern mustInRelationfrom_reference_InformationLink(
788 problem:LogicProblem, interpretation:PartialInterpretation,
789 source: DefinedElement, target:DefinedElement)
790{
791 find interpretation(problem,interpretation);
792 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
793 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
794 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
795 BinaryElementRelationLink.param1(link,source);
796 BinaryElementRelationLink.param2(link,target);
797}
798/**
799 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
800 */
801private pattern mayInRelationfrom_reference_InformationLink(
802 problem:LogicProblem, interpretation:PartialInterpretation,
803 source: DefinedElement, target:DefinedElement)
804{
805 find interpretation(problem,interpretation);
806 // The two endpoint of the link have to exist
807 find mayExist(problem, interpretation, source);
808 find mayExist(problem, interpretation, target);
809 // Type consistency
810 find mayInstanceOfInformationLink_class(problem,interpretation,source);
811 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
812 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
813 // the upper bound of the multiplicity should be considered.
814 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
815 check(numberOfExistingReferences < 1);
816 // The eOpposite of the reference is containment, then a referene cannot be created if
817 // 1. Multiple parents
818 neg find mustContains4(problem,interpretation,source,_);
819 // 2. Circle in the containment hierarchy
820 neg find mustTransitiveContains(source,target);
821} or {
822 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
823}
824/**
825 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
826 */
827private pattern mustInRelationto_reference_InformationLink(
828 problem:LogicProblem, interpretation:PartialInterpretation,
829 source: DefinedElement, target:DefinedElement)
830{
831 find interpretation(problem,interpretation);
832 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
833 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
834 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
835 BinaryElementRelationLink.param1(link,source);
836 BinaryElementRelationLink.param2(link,target);
837}
838/**
839 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
840 */
841private pattern mayInRelationto_reference_InformationLink(
842 problem:LogicProblem, interpretation:PartialInterpretation,
843 source: DefinedElement, target:DefinedElement)
844{
845 find interpretation(problem,interpretation);
846 // The two endpoint of the link have to exist
847 find mayExist(problem, interpretation, source);
848 find mayExist(problem, interpretation, target);
849 // Type consistency
850 find mayInstanceOfInformationLink_class(problem,interpretation,source);
851 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
852 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
853 // the upper bound of the multiplicity should be considered.
854 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
855 check(numberOfExistingReferences < 1);
856} or {
857 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
858}
859/**
860 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
861 */
862private pattern mustInRelationdata_reference_FunctionalInterface(
863 problem:LogicProblem, interpretation:PartialInterpretation,
864 source: DefinedElement, target:DefinedElement)
865{
866 find interpretation(problem,interpretation);
867 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
868 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
869 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
870 BinaryElementRelationLink.param1(link,source);
871 BinaryElementRelationLink.param2(link,target);
872}
873/**
874 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
875 */
876private pattern mayInRelationdata_reference_FunctionalInterface(
877 problem:LogicProblem, interpretation:PartialInterpretation,
878 source: DefinedElement, target:DefinedElement)
879{
880 find interpretation(problem,interpretation);
881 // The two endpoint of the link have to exist
882 find mayExist(problem, interpretation, source);
883 find mayExist(problem, interpretation, target);
884 // Type consistency
885 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
886 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
887 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
888 // the upper bound of the opposite reference multiplicity should be considered.
889 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
890 check(numberOfExistingOppositeReferences < 1);
891 // The reference is containment, then a new reference cannot be create if:
892 // 1. Multiple parents
893 neg find mustContains4(problem,interpretation,_,target);
894 // 2. Circle in the containment hierarchy
895 neg find mustTransitiveContains(source,target);
896} or {
897 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
898}
899/**
900 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
901 */
902private pattern mustInRelationelement_reference_FunctionalInterface(
903 problem:LogicProblem, interpretation:PartialInterpretation,
904 source: DefinedElement, target:DefinedElement)
905{
906 find interpretation(problem,interpretation);
907 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
908 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
909 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
910 BinaryElementRelationLink.param1(link,source);
911 BinaryElementRelationLink.param2(link,target);
912}
913/**
914 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
915 */
916private pattern mayInRelationelement_reference_FunctionalInterface(
917 problem:LogicProblem, interpretation:PartialInterpretation,
918 source: DefinedElement, target:DefinedElement)
919{
920 find interpretation(problem,interpretation);
921 // The two endpoint of the link have to exist
922 find mayExist(problem, interpretation, source);
923 find mayExist(problem, interpretation, target);
924 // Type consistency
925 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
926 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
927 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
928 // the upper bound of the multiplicity should be considered.
929 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
930 check(numberOfExistingReferences < 1);
931 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
932 // the upper bound of the opposite reference multiplicity should be considered.
933 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
934 check(numberOfExistingOppositeReferences < 1);
935 // The eOpposite of the reference is containment, then a referene cannot be created if
936 // 1. Multiple parents
937 neg find mustContains4(problem,interpretation,source,_);
938 // 2. Circle in the containment hierarchy
939 neg find mustTransitiveContains(source,target);
940} or {
941 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
942}
943/**
944 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
945 */
946private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
947 problem:LogicProblem, interpretation:PartialInterpretation,
948 source: DefinedElement, target:DefinedElement)
949{
950 find interpretation(problem,interpretation);
951 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
952 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
953 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
954 BinaryElementRelationLink.param1(link,source);
955 BinaryElementRelationLink.param2(link,target);
956}
957/**
958 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
959 */
960private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
961 problem:LogicProblem, interpretation:PartialInterpretation,
962 source: DefinedElement, target:DefinedElement)
963{
964 find interpretation(problem,interpretation);
965 // The two endpoint of the link have to exist
966 find mayExist(problem, interpretation, source);
967 find mayExist(problem, interpretation, target);
968 // Type consistency
969 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
970 find mayInstanceOfInformationLink_class(problem,interpretation,target);
971 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
972 // the upper bound of the opposite reference multiplicity should be considered.
973 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
974 check(numberOfExistingOppositeReferences < 1);
975} or {
976 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
977}
978/**
979 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
980 */
981private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
982 problem:LogicProblem, interpretation:PartialInterpretation,
983 source: DefinedElement, target:DefinedElement)
984{
985 find interpretation(problem,interpretation);
986 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
987 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
988 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
989 BinaryElementRelationLink.param1(link,source);
990 BinaryElementRelationLink.param2(link,target);
991}
992/**
993 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
994 */
995private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
996 problem:LogicProblem, interpretation:PartialInterpretation,
997 source: DefinedElement, target:DefinedElement)
998{
999 find interpretation(problem,interpretation);
1000 // The two endpoint of the link have to exist
1001 find mayExist(problem, interpretation, source);
1002 find mayExist(problem, interpretation, target);
1003 // Type consistency
1004 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
1005 find mayInstanceOfInformationLink_class(problem,interpretation,target);
1006 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
1007 // the upper bound of the opposite reference multiplicity should be considered.
1008 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
1009 check(numberOfExistingOppositeReferences < 1);
1010 // The reference is containment, then a new reference cannot be create if:
1011 // 1. Multiple parents
1012 neg find mustContains4(problem,interpretation,_,target);
1013 // 2. Circle in the containment hierarchy
1014 neg find mustTransitiveContains(source,target);
1015} or {
1016 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
1017}
1018/**
1019 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
1020 */
1021private pattern mustInRelationterminator_reference_FunctionalData(
1022 problem:LogicProblem, interpretation:PartialInterpretation,
1023 source: DefinedElement, target:DefinedElement)
1024{
1025 find interpretation(problem,interpretation);
1026 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1027 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
1028 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1029 BinaryElementRelationLink.param1(link,source);
1030 BinaryElementRelationLink.param2(link,target);
1031}
1032/**
1033 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
1034 */
1035private pattern mayInRelationterminator_reference_FunctionalData(
1036 problem:LogicProblem, interpretation:PartialInterpretation,
1037 source: DefinedElement, target:DefinedElement)
1038{
1039 find interpretation(problem,interpretation);
1040 // The two endpoint of the link have to exist
1041 find mayExist(problem, interpretation, source);
1042 find mayExist(problem, interpretation, target);
1043 // Type consistency
1044 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
1045 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
1046 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1047 // the upper bound of the multiplicity should be considered.
1048 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
1049 check(numberOfExistingReferences < 1);
1050 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
1051 // the upper bound of the opposite reference multiplicity should be considered.
1052 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
1053 check(numberOfExistingOppositeReferences < 1);
1054 // The reference is containment, then a new reference cannot be create if:
1055 // 1. Multiple parents
1056 neg find mustContains4(problem,interpretation,_,target);
1057 // 2. Circle in the containment hierarchy
1058 neg find mustTransitiveContains(source,target);
1059} or {
1060 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
1061}
1062/**
1063 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
1064 */
1065private pattern mustInRelationinterface_reference_FunctionalData(
1066 problem:LogicProblem, interpretation:PartialInterpretation,
1067 source: DefinedElement, target:DefinedElement)
1068{
1069 find interpretation(problem,interpretation);
1070 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1071 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
1072 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
1073 BinaryElementRelationLink.param1(link,source);
1074 BinaryElementRelationLink.param2(link,target);
1075}
1076/**
1077 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
1078 */
1079private pattern mayInRelationinterface_reference_FunctionalData(
1080 problem:LogicProblem, interpretation:PartialInterpretation,
1081 source: DefinedElement, target:DefinedElement)
1082{
1083 find interpretation(problem,interpretation);
1084 // The two endpoint of the link have to exist
1085 find mayExist(problem, interpretation, source);
1086 find mayExist(problem, interpretation, target);
1087 // Type consistency
1088 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
1089 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
1090 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
1091 // the upper bound of the multiplicity should be considered.
1092 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
1093 check(numberOfExistingReferences < 1);
1094 // The eOpposite of the reference is containment, then a referene cannot be created if
1095 // 1. Multiple parents
1096 neg find mustContains4(problem,interpretation,source,_);
1097 // 2. Circle in the containment hierarchy
1098 neg find mustTransitiveContains(source,target);
1099} or {
1100 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
1101}
1102/**
1103 * Matcher for detecting tuples t where []type attribute Function(source,target)
1104 */
1105 private pattern mustInRelationtype_attribute_Function(
1106 problem:LogicProblem, interpretation:PartialInterpretation,
1107 source: DefinedElement, target:DefinedElement)
1108 {
1109 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
1110 }
1111/**
1112 * Matcher for detecting tuples t where []type attribute Function(source,target)
1113 */
1114 private pattern mayInRelationtype_attribute_Function(
1115 problem:LogicProblem, interpretation:PartialInterpretation,
1116 source: DefinedElement, target:DefinedElement)
1117 {
1118 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
1119 }
1120
1121//////////
1122// 1.3 Relation Definition Indexers
1123//////////
1124// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation
1125private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
1126 problem:LogicProblem, interpretation:PartialInterpretation,
1127 var_T, var_I)
1128{
1129 find interpretation(problem,interpretation);
1130 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
1131 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
1132 // T is exported
1133 // I is exported
1134 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
1135 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
1136 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
1137 var_virtual0 == var_I;
1138 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
1139 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
1140 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
1141 var_virtual1 == var_T;
1142}or{
1143 find interpretation(problem,interpretation);
1144 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
1145 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
1146 // T is exported
1147 // I is exported
1148 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
1149 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
1150 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
1151 var_virtual0 == var_In;
1152 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
1153 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
1154 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
1155 var_virtual1 == var_T;
1156}
1157private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
1158 problem:LogicProblem, interpretation:PartialInterpretation,
1159 var_T, var_I)
1160{
1161 find interpretation(problem,interpretation);
1162 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
1163 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
1164 // T is exported
1165 // I is exported
1166 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
1167 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
1168 find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
1169 find mayEquivalent(problem, interpretation, var_virtual0, var_I);
1170 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
1171 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
1172 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
1173 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
1174}or{
1175 find interpretation(problem,interpretation);
1176 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
1177 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
1178 // T is exported
1179 // I is exported
1180 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
1181 find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
1182 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
1183 find mayEquivalent(problem, interpretation, var_virtual0, var_In);
1184 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In);
1185 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
1186 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
1187 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
1188}
1189private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
1190 problem:LogicProblem, interpretation:PartialInterpretation,
1191 var_T, var_I)
1192{
1193 find interpretation(problem,interpretation);
1194 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
1195 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
1196 // T is exported
1197 // I is exported
1198 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
1199 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
1200 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
1201 var_virtual0 == var_I;
1202 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
1203 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
1204 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
1205 var_virtual1 == var_T;
1206}or{
1207 find interpretation(problem,interpretation);
1208 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
1209 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
1210 // T is exported
1211 // I is exported
1212 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
1213 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
1214 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
1215 var_virtual0 == var_In;
1216 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
1217 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
1218 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
1219 var_virtual1 == var_T;
1220}
1221// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type
1222private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
1223 problem:LogicProblem, interpretation:PartialInterpretation,
1224 var_This, var_Target)
1225{
1226 find interpretation(problem,interpretation);
1227 find mustInstanceOfFunction_class(problem,interpretation,var_This);
1228 // type constraint is enforced by construction
1229 // This is exported
1230 // Target is exported
1231 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
1232 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
1233 var_Target == var_virtual0;
1234}or{
1235 find interpretation(problem,interpretation);
1236 find mustInstanceOfFunction_class(problem,interpretation,var_This);
1237 // type constraint is enforced by construction
1238 // This is exported
1239 // Target is exported
1240 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
1241 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
1242 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
1243 var_Target == var_virtual0;
1244}or{
1245 find interpretation(problem,interpretation);
1246 find mustInstanceOfFunction_class(problem,interpretation,var_This);
1247 // type constraint is enforced by construction
1248 // This is exported
1249 // Target is exported
1250 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
1251 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
1252 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
1253 var_Target == var_virtual0;
1254}
1255private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
1256 problem:LogicProblem, interpretation:PartialInterpretation,
1257 var_This, var_Target)
1258{
1259 find interpretation(problem,interpretation);
1260 find mayInstanceOfFunction_class(problem,interpretation,var_This);
1261 // type constraint is enforced by construction
1262 // This is exported
1263 // Target is exported
1264 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
1265 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
1266 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
1267}or{
1268 find interpretation(problem,interpretation);
1269 find mayInstanceOfFunction_class(problem,interpretation,var_This);
1270 // type constraint is enforced by construction
1271 // This is exported
1272 // Target is exported
1273 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
1274 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
1275 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
1276 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
1277}or{
1278 find interpretation(problem,interpretation);
1279 find mayInstanceOfFunction_class(problem,interpretation,var_This);
1280 // type constraint is enforced by construction
1281 // This is exported
1282 // Target is exported
1283 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
1284 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
1285 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
1286 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
1287}
1288private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
1289 problem:LogicProblem, interpretation:PartialInterpretation,
1290 var_This, var_Target)
1291{
1292 find interpretation(problem,interpretation);
1293 find mustInstanceOfFunction_class(problem,interpretation,var_This);
1294 // type constraint is enforced by construction
1295 // This is exported
1296 // Target is exported
1297 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
1298 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
1299 var_Target == var_virtual0;
1300}or{
1301 find interpretation(problem,interpretation);
1302 find mustInstanceOfFunction_class(problem,interpretation,var_This);
1303 // type constraint is enforced by construction
1304 // This is exported
1305 // Target is exported
1306 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
1307 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
1308 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
1309 var_Target == var_virtual0;
1310}or{
1311 find interpretation(problem,interpretation);
1312 find mustInstanceOfFunction_class(problem,interpretation,var_This);
1313 // type constraint is enforced by construction
1314 // This is exported
1315 // Target is exported
1316 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
1317 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
1318 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
1319 var_Target == var_virtual0;
1320}
1321// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements
1322private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
1323 problem:LogicProblem, interpretation:PartialInterpretation,
1324 var_Model, var_Root)
1325{
1326 find interpretation(problem,interpretation);
1327 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
1328 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
1329 // Model is exported
1330 // Root is exported
1331 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
1332 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
1333 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
1334 var_virtual0 == var_Root;
1335}
1336private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
1337 problem:LogicProblem, interpretation:PartialInterpretation,
1338 var_Model, var_Root)
1339{
1340 find interpretation(problem,interpretation);
1341 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
1342 find mayInstanceOfFunction_class(problem,interpretation,var_Root);
1343 // Model is exported
1344 // Root is exported
1345 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
1346 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
1347 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
1348 find mayEquivalent(problem, interpretation, var_virtual0, var_Root);
1349}
1350private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
1351 problem:LogicProblem, interpretation:PartialInterpretation,
1352 var_Model, var_Root)
1353{
1354 find interpretation(problem,interpretation);
1355 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
1356 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
1357 // Model is exported
1358 // Root is exported
1359 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
1360 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
1361 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
1362 var_virtual0 == var_Root;
1363}
1364// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent
1365private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
1366 problem:LogicProblem, interpretation:PartialInterpretation,
1367 var_Func, var_Par)
1368{
1369 find interpretation(problem,interpretation);
1370 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
1371 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
1372 // Func is exported
1373 // Par is exported
1374 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
1375 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
1376 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
1377 var_virtual0 == var_Par;
1378}
1379private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
1380 problem:LogicProblem, interpretation:PartialInterpretation,
1381 var_Func, var_Par)
1382{
1383 find interpretation(problem,interpretation);
1384 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
1385 find mayInstanceOfFunction_class(problem,interpretation,var_Par);
1386 // Func is exported
1387 // Par is exported
1388 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
1389 find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
1390 find mayInstanceOfFunction_class(problem,interpretation,var_virtual0);
1391 find mayEquivalent(problem, interpretation, var_virtual0, var_Par);
1392}
1393private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
1394 problem:LogicProblem, interpretation:PartialInterpretation,
1395 var_Func, var_Par)
1396{
1397 find interpretation(problem,interpretation);
1398 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
1399 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
1400 // Func is exported
1401 // Par is exported
1402 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
1403 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
1404 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
1405 var_virtual0 == var_Par;
1406}
1407// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model
1408private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
1409 problem:LogicProblem, interpretation:PartialInterpretation,
1410 var_This, var_Target)
1411{
1412 find interpretation(problem,interpretation);
1413 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
1414 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
1415 // This is exported
1416 // Target is exported
1417 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
1418 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
1419}
1420private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
1421 problem:LogicProblem, interpretation:PartialInterpretation,
1422 var_This, var_Target)
1423{
1424 find interpretation(problem,interpretation);
1425 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
1426 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
1427 // This is exported
1428 // Target is exported
1429 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
1430 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
1431}
1432private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
1433 problem:LogicProblem, interpretation:PartialInterpretation,
1434 var_This, var_Target)
1435{
1436 find interpretation(problem,interpretation);
1437 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
1438 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
1439 // This is exported
1440 // Target is exported
1441 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
1442 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
1443}
1444
1445//////////
1446// 1.4 Containment Indexer
1447//////////
1448private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
1449 find mustContains4(_,_,source,target);
1450}
1451
1452private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
1453 source: DefinedElement, target: DefinedElement)
1454 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
1455
1456 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
1457
1458 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
1459
1460 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
1461
1462 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
1463
1464 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
1465
1466private pattern mustTransitiveContains(source,target) {
1467 find mustContains2+(source,target);
1468}
1469
1470//////////
1471// 2. Invalidation Indexers
1472//////////
1473// 2.1 Invalidated by WF Queries
1474//////////
1475pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
1476 var_T, var_I)
1477{
1478 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I);
1479}
1480
1481//////////
1482// 3. Unfinishedness Indexers
1483//////////
1484// 3.1 Unfinishedness Measured by Multiplicity
1485//////////
1486pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
1487 find interpretation(problem,interpretation);
1488 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1489 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
1490 find mustInstanceOfInformationLink_class(problem,interpretation,object);
1491 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
1492 check(numberOfExistingReferences < 1);
1493 missingMultiplicity == eval(1-numberOfExistingReferences);
1494}
1495
1496//////////
1497// 3.2 Unfinishedness Measured by WF Queries
1498//////////
1499pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
1500 var_T, var_I)
1501{
1502 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I);
1503}
1504
1505//////////
1506// 4. Refinement Indexers
1507//////////
1508// 4.1 Object constructors
1509//////////
1510private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
1511{
1512 find interpretation(problem,interpretation);
1513 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
1514 find mustExist(problem, interpretation, root);
1515}or{
1516 find interpretation(problem,interpretation);
1517 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
1518 find mustExist(problem, interpretation, root);
1519}or{
1520 find interpretation(problem,interpretation);
1521 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
1522 find mustExist(problem, interpretation, root);
1523}or{
1524 find interpretation(problem,interpretation);
1525 find mustInstanceOfInformationLink_class(problem,interpretation,root);
1526 find mustExist(problem, interpretation, root);
1527}or{
1528 find interpretation(problem,interpretation);
1529 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
1530 find mustExist(problem, interpretation, root);
1531}or{
1532 find interpretation(problem,interpretation);
1533 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
1534 find mustExist(problem, interpretation, root);
1535}or{
1536 find interpretation(problem,interpretation);
1537 find mustInstanceOfFunction_class(problem,interpretation,root);
1538 find mustExist(problem, interpretation, root);
1539}or{
1540 find interpretation(problem,interpretation);
1541 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
1542 find mustExist(problem, interpretation, root);
1543}or{
1544 find interpretation(problem,interpretation);
1545 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
1546 find mustExist(problem, interpretation, root);
1547}or{
1548 find interpretation(problem,interpretation);
1549 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
1550 find mustExist(problem, interpretation, root);
1551}or{
1552 find interpretation(problem,interpretation);
1553 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
1554 find mustExist(problem, interpretation, root);
1555}
1556pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
1557 problem:LogicProblem, interpretation:PartialInterpretation,
1558 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1559 container:DefinedElement)
1560{
1561 find interpretation(problem,interpretation);
1562 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1563 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
1564 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1565 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
1566 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
1567 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
1568 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
1569 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
1570 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
1571 find mustExist(problem, interpretation, container);
1572 neg find mustExist(problem, interpretation, newObject);
1573}
1574pattern createObject_FAMTerminator_class(
1575 problem:LogicProblem, interpretation:PartialInterpretation,
1576 typeInterpretation:PartialComplexTypeInterpretation)
1577{
1578 find interpretation(problem,interpretation);
1579 neg find hasElementInContainment(problem,interpretation);
1580 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1581 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
1582 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
1583 find mayExist(problem, interpretation, newObject);
1584 neg find mustExist(problem, interpretation, newObject);
1585}
1586pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
1587 problem:LogicProblem, interpretation:PartialInterpretation,
1588 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1589 container:DefinedElement)
1590{
1591 find interpretation(problem,interpretation);
1592 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1593 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
1594 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1595 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
1596 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
1597 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
1598 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
1599 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
1600 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
1601 find mustExist(problem, interpretation, container);
1602 neg find mustExist(problem, interpretation, newObject);
1603}
1604pattern createObject_FunctionalInput_class(
1605 problem:LogicProblem, interpretation:PartialInterpretation,
1606 typeInterpretation:PartialComplexTypeInterpretation)
1607{
1608 find interpretation(problem,interpretation);
1609 neg find hasElementInContainment(problem,interpretation);
1610 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1611 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
1612 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
1613 find mayExist(problem, interpretation, newObject);
1614 neg find mustExist(problem, interpretation, newObject);
1615}
1616pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
1617 problem:LogicProblem, interpretation:PartialInterpretation,
1618 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1619 container:DefinedElement)
1620{
1621 find interpretation(problem,interpretation);
1622 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1623 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
1624 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1625 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
1626 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
1627 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
1628 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
1629 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
1630 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
1631 find mustExist(problem, interpretation, container);
1632 neg find mustExist(problem, interpretation, newObject);
1633}
1634pattern createObject_FunctionalInterface_class(
1635 problem:LogicProblem, interpretation:PartialInterpretation,
1636 typeInterpretation:PartialComplexTypeInterpretation)
1637{
1638 find interpretation(problem,interpretation);
1639 neg find hasElementInContainment(problem,interpretation);
1640 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1641 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
1642 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
1643 find mayExist(problem, interpretation, newObject);
1644 neg find mustExist(problem, interpretation, newObject);
1645}
1646pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
1647 problem:LogicProblem, interpretation:PartialInterpretation,
1648 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1649 container:DefinedElement)
1650{
1651 find interpretation(problem,interpretation);
1652 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1653 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
1654 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1655 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
1656 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
1657 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
1658 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
1659 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
1660 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
1661 find mustExist(problem, interpretation, container);
1662 neg find mustExist(problem, interpretation, newObject);
1663}
1664pattern createObject_FunctionalOutput_class(
1665 problem:LogicProblem, interpretation:PartialInterpretation,
1666 typeInterpretation:PartialComplexTypeInterpretation)
1667{
1668 find interpretation(problem,interpretation);
1669 neg find hasElementInContainment(problem,interpretation);
1670 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1671 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
1672 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
1673 find mayExist(problem, interpretation, newObject);
1674 neg find mustExist(problem, interpretation, newObject);
1675}
1676pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
1677 problem:LogicProblem, interpretation:PartialInterpretation,
1678 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1679 container:DefinedElement)
1680{
1681 find interpretation(problem,interpretation);
1682 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1683 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
1684 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1685 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
1686 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
1687 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
1688 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
1689 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
1690 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
1691 find mustExist(problem, interpretation, container);
1692 neg find mustExist(problem, interpretation, newObject);
1693}
1694pattern createObject_InformationLink_class(
1695 problem:LogicProblem, interpretation:PartialInterpretation,
1696 typeInterpretation:PartialComplexTypeInterpretation)
1697{
1698 find interpretation(problem,interpretation);
1699 neg find hasElementInContainment(problem,interpretation);
1700 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1701 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
1702 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
1703 find mayExist(problem, interpretation, newObject);
1704 neg find mustExist(problem, interpretation, newObject);
1705}
1706pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
1707 problem:LogicProblem, interpretation:PartialInterpretation,
1708 typeInterpretation:PartialComplexTypeInterpretation)
1709{
1710 find interpretation(problem,interpretation);
1711 neg find hasElementInContainment(problem,interpretation);
1712 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1713 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
1714 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
1715 find mayExist(problem, interpretation, newObject);
1716 neg find mustExist(problem, interpretation, newObject);
1717}
1718pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
1719 problem:LogicProblem, interpretation:PartialInterpretation,
1720 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1721 container:DefinedElement)
1722{
1723 find interpretation(problem,interpretation);
1724 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1725 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
1726 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1727 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
1728 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
1729 find mayInstanceOfFunction_class(problem,interpretation,newObject);
1730 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
1731 find mustExist(problem, interpretation, container);
1732 neg find mustExist(problem, interpretation, newObject);
1733}
1734pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
1735 problem:LogicProblem, interpretation:PartialInterpretation,
1736 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1737 container:DefinedElement)
1738{
1739 find interpretation(problem,interpretation);
1740 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1741 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
1742 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1743 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
1744 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
1745 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
1746 find mustInstanceOfFunction_class(problem,interpretation,container);
1747 find mayInstanceOfFunction_class(problem,interpretation,newObject);
1748 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
1749 find mustExist(problem, interpretation, container);
1750 neg find mustExist(problem, interpretation, newObject);
1751}
1752pattern createObject_Function_class(
1753 problem:LogicProblem, interpretation:PartialInterpretation,
1754 typeInterpretation:PartialComplexTypeInterpretation)
1755{
1756 find interpretation(problem,interpretation);
1757 neg find hasElementInContainment(problem,interpretation);
1758 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1759 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
1760 find mayInstanceOfFunction_class(problem,interpretation,newObject);
1761 find mayExist(problem, interpretation, newObject);
1762 neg find mustExist(problem, interpretation, newObject);
1763}
1764
1765//////////
1766// 4.2 Type refinement
1767//////////
1768pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1769 find interpretation(problem,interpretation);
1770 PartialInterpretation.newElements(interpretation,element);
1771 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
1772 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
1773 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
1774 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
1775 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
1776 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
1777 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
1778}
1779pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1780 find interpretation(problem,interpretation);
1781 PartialInterpretation.newElements(interpretation,element);
1782 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
1783 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
1784 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
1785 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
1786 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
1787 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
1788 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
1789 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
1790}
1791pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1792 find interpretation(problem,interpretation);
1793 PartialInterpretation.newElements(interpretation,element);
1794 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
1795 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
1796 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
1797 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
1798 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
1799 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
1800 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
1801}
1802pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1803 find interpretation(problem,interpretation);
1804 PartialInterpretation.newElements(interpretation,element);
1805 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
1806 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
1807 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
1808 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
1809 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
1810 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
1811 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
1812 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
1813}
1814pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1815 find interpretation(problem,interpretation);
1816 PartialInterpretation.newElements(interpretation,element);
1817 find mayInstanceOfInformationLink_class(problem,interpretation,element);
1818 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
1819 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
1820 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
1821 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
1822 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
1823 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
1824}
1825pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1826 find interpretation(problem,interpretation);
1827 PartialInterpretation.newElements(interpretation,element);
1828 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
1829 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
1830 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
1831 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
1832 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
1833 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
1834 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
1835}
1836pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1837 find interpretation(problem,interpretation);
1838 PartialInterpretation.newElements(interpretation,element);
1839 find mayInstanceOfFunction_class(problem,interpretation,element);
1840 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
1841 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
1842 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
1843 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
1844 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
1845 neg find mustInstanceOfFunction_class(problem,interpretation,element);
1846}
1847
1848//////////
1849// 4.3 Relation refinement
1850//////////
1851pattern refineRelation_model_reference_FunctionalElement(
1852 problem:LogicProblem, interpretation:PartialInterpretation,
1853 relationIterpretation:PartialRelationInterpretation,
1854 from: DefinedElement, to: DefinedElement)
1855{
1856 find interpretation(problem,interpretation);
1857 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1858 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
1859 find mustExist(problem, interpretation, from);
1860 find mustExist(problem, interpretation, to);
1861 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
1862 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
1863 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
1864 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
1865}
1866pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
1867 problem:LogicProblem, interpretation:PartialInterpretation,
1868 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
1869 from: DefinedElement, to: DefinedElement)
1870{
1871 find interpretation(problem,interpretation);
1872 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1873 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
1874 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
1875 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
1876 find mustExist(problem, interpretation, from);
1877 find mustExist(problem, interpretation, to);
1878 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
1879 find mustInstanceOfInformationLink_class(problem,interpretation,to);
1880 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
1881 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
1882}
1883pattern refineRelation_type_attribute_Function(
1884 problem:LogicProblem, interpretation:PartialInterpretation,
1885 relationIterpretation:PartialRelationInterpretation,
1886 from: DefinedElement, to: DefinedElement)
1887{
1888 find interpretation(problem,interpretation);
1889 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1890 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
1891 find mustExist(problem, interpretation, from);
1892 find mustExist(problem, interpretation, to);
1893 find mustInstanceOfFunction_class(problem,interpretation,from);
1894 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
1895 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
1896 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
1897}import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
1898import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
1899import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
1900
1901//////////
1902// 0. Util
1903//////////
1904private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
1905 PartialInterpretation.problem(interpretation,problem);
1906}
1907
1908/////////////////////////
1909// 0.1 Existence
1910/////////////////////////
1911private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
1912 find interpretation(problem,interpretation);
1913 LogicProblem.elements(problem,element);
1914} or {
1915 find interpretation(problem,interpretation);
1916 PartialInterpretation.newElements(interpretation,element);
1917}
1918
1919private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
1920 find mustExist(problem,interpretation,element);
1921} or {
1922 find interpretation(problem,interpretation);
1923 neg find elementCloseWorld(element);
1924 PartialInterpretation.openWorldElements(interpretation,element);
1925}
1926
1927private pattern elementCloseWorld(element:DefinedElement) {
1928 PartialInterpretation.openWorldElements(i,element);
1929 PartialInterpretation.maxNewElements(i,0);
1930} or {
1931 Scope.targetTypeInterpretation(scope,interpretation);
1932 PartialTypeInterpratation.elements(interpretation,element);
1933 Scope.maxNewElements(scope,0);
1934}
1935
1936////////////////////////
1937// 0.2 Equivalence
1938////////////////////////
1939pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
1940 find mayExist(problem,interpretation,a);
1941 find mayExist(problem,interpretation,b);
1942 a == b;
1943}
1944
1945////////////////////////
1946// 0.3 Required Patterns by TypeIndexer
1947////////////////////////
1948private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
1949 find interpretation(problem,interpretation);
1950 LogicProblem.types(problem,type);
1951 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1952 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
1953}
1954
1955private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
1956 find interpretation(problem,interpretation);
1957 LogicProblem.types(problem,type);
1958 TypeDefinition.elements(type,element);
1959} or {
1960 find interpretation(problem,interpretation);
1961 find typeInterpretation(problem,interpretation,type,typeInterpretation);
1962 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
1963}
1964
1965private pattern isPrimitive(element: PrimitiveElement) {
1966 PrimitiveElement(element);
1967}
1968
1969//////////
1970// 1. Problem-Specific Base Indexers
1971//////////
1972// 1.1 Type Indexers
1973//////////
1974// 1.1.1 primitive Type Indexers
1975//////////
1976
1977//////////
1978// 1.1.2 domain-specific Type Indexers
1979//////////
1980/**
1981 * An element must be an instance of type "FunctionalElement class".
1982 */
1983private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
1984 Type.name(type,"FunctionalElement class");
1985 find directInstanceOf(problem,interpretation,element,type);
1986}
1987private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
1988 find interpretation(problem,interpretation);
1989 PartialInterpretation.scopes(interpretation,scope);
1990 Scope.targetTypeInterpretation(scope,typeInterpretation);
1991 Scope.maxNewElements(scope,0);
1992 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
1993 Type.name(type,"FunctionalElement class");
1994}
1995
1996/**
1997 * An element may be an instance of type "FunctionalElement class".
1998 */
1999private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2000{
2001 find interpretation(problem,interpretation);
2002 PartialInterpretation.newElements(interpretation,element);
2003 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2004 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2005 neg find mustInstanceOfFunction_class(problem,interpretation,element);
2006 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2007 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2008 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2009 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
2010 neg find isPrimitive(element);
2011} or {
2012 find interpretation(problem,interpretation);
2013 PartialInterpretation.openWorldElements(interpretation,element);
2014 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2015 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2016 neg find mustInstanceOfFunction_class(problem,interpretation,element);
2017 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2018 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2019 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2020 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
2021 neg find isPrimitive(element);
2022} or
2023{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
2024/**
2025 * An element must be an instance of type "FunctionalArchitectureModel class".
2026 */
2027private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2028 Type.name(type,"FunctionalArchitectureModel class");
2029 find directInstanceOf(problem,interpretation,element,type);
2030}
2031private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
2032 find interpretation(problem,interpretation);
2033 PartialInterpretation.scopes(interpretation,scope);
2034 Scope.targetTypeInterpretation(scope,typeInterpretation);
2035 Scope.maxNewElements(scope,0);
2036 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2037 Type.name(type,"FunctionalArchitectureModel class");
2038}
2039
2040/**
2041 * An element may be an instance of type "FunctionalArchitectureModel class".
2042 */
2043private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2044{
2045 find interpretation(problem,interpretation);
2046 PartialInterpretation.newElements(interpretation,element);
2047 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2048 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2049 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2050 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2051 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2052 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
2053 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
2054 neg find isPrimitive(element);
2055} or {
2056 find interpretation(problem,interpretation);
2057 PartialInterpretation.openWorldElements(interpretation,element);
2058 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2059 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2060 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2061 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2062 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2063 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
2064 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
2065 neg find isPrimitive(element);
2066} or
2067{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
2068/**
2069 * An element must be an instance of type "Function class".
2070 */
2071private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2072 Type.name(type,"Function class");
2073 find directInstanceOf(problem,interpretation,element,type);
2074}
2075private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
2076 find interpretation(problem,interpretation);
2077 PartialInterpretation.scopes(interpretation,scope);
2078 Scope.targetTypeInterpretation(scope,typeInterpretation);
2079 Scope.maxNewElements(scope,0);
2080 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2081 Type.name(type,"Function class");
2082}
2083
2084/**
2085 * An element may be an instance of type "Function class".
2086 */
2087private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2088{
2089 find interpretation(problem,interpretation);
2090 PartialInterpretation.newElements(interpretation,element);
2091 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2092 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2093 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2094 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2095 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2096 neg find scopeDisallowsNewFunction_class(problem, interpretation);
2097 neg find isPrimitive(element);
2098} or {
2099 find interpretation(problem,interpretation);
2100 PartialInterpretation.openWorldElements(interpretation,element);
2101 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2102 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2103 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2104 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2105 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2106 neg find scopeDisallowsNewFunction_class(problem, interpretation);
2107 neg find isPrimitive(element);
2108} or
2109{ find mustInstanceOfFunction_class(problem,interpretation,element); }
2110/**
2111 * An element must be an instance of type "FAMTerminator class".
2112 */
2113private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2114 Type.name(type,"FAMTerminator class");
2115 find directInstanceOf(problem,interpretation,element,type);
2116}
2117private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
2118 find interpretation(problem,interpretation);
2119 PartialInterpretation.scopes(interpretation,scope);
2120 Scope.targetTypeInterpretation(scope,typeInterpretation);
2121 Scope.maxNewElements(scope,0);
2122 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2123 Type.name(type,"FAMTerminator class");
2124}
2125
2126/**
2127 * An element may be an instance of type "FAMTerminator class".
2128 */
2129private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2130{
2131 find interpretation(problem,interpretation);
2132 PartialInterpretation.newElements(interpretation,element);
2133 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2134 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2135 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2136 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2137 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2138 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
2139 neg find isPrimitive(element);
2140} or {
2141 find interpretation(problem,interpretation);
2142 PartialInterpretation.openWorldElements(interpretation,element);
2143 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2144 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2145 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2146 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2147 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2148 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
2149 neg find isPrimitive(element);
2150} or
2151{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
2152/**
2153 * An element must be an instance of type "InformationLink class".
2154 */
2155private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2156 Type.name(type,"InformationLink class");
2157 find directInstanceOf(problem,interpretation,element,type);
2158}
2159private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
2160 find interpretation(problem,interpretation);
2161 PartialInterpretation.scopes(interpretation,scope);
2162 Scope.targetTypeInterpretation(scope,typeInterpretation);
2163 Scope.maxNewElements(scope,0);
2164 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2165 Type.name(type,"InformationLink class");
2166}
2167
2168/**
2169 * An element may be an instance of type "InformationLink class".
2170 */
2171private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2172{
2173 find interpretation(problem,interpretation);
2174 PartialInterpretation.newElements(interpretation,element);
2175 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2176 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2177 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2178 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2179 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2180 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
2181 neg find isPrimitive(element);
2182} or {
2183 find interpretation(problem,interpretation);
2184 PartialInterpretation.openWorldElements(interpretation,element);
2185 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2186 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2187 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2188 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2189 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2190 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
2191 neg find isPrimitive(element);
2192} or
2193{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
2194/**
2195 * An element must be an instance of type "FunctionalInterface class".
2196 */
2197private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2198 Type.name(type,"FunctionalInterface class");
2199 find directInstanceOf(problem,interpretation,element,type);
2200}
2201private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
2202 find interpretation(problem,interpretation);
2203 PartialInterpretation.scopes(interpretation,scope);
2204 Scope.targetTypeInterpretation(scope,typeInterpretation);
2205 Scope.maxNewElements(scope,0);
2206 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2207 Type.name(type,"FunctionalInterface class");
2208}
2209
2210/**
2211 * An element may be an instance of type "FunctionalInterface class".
2212 */
2213private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2214{
2215 find interpretation(problem,interpretation);
2216 PartialInterpretation.newElements(interpretation,element);
2217 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2218 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2219 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2220 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2221 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2222 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
2223 neg find isPrimitive(element);
2224} or {
2225 find interpretation(problem,interpretation);
2226 PartialInterpretation.openWorldElements(interpretation,element);
2227 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2228 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2229 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2230 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2231 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2232 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
2233 neg find isPrimitive(element);
2234} or
2235{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
2236/**
2237 * An element must be an instance of type "FunctionalInput class".
2238 */
2239private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2240 Type.name(type,"FunctionalInput class");
2241 find directInstanceOf(problem,interpretation,element,type);
2242}
2243private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
2244 find interpretation(problem,interpretation);
2245 PartialInterpretation.scopes(interpretation,scope);
2246 Scope.targetTypeInterpretation(scope,typeInterpretation);
2247 Scope.maxNewElements(scope,0);
2248 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2249 Type.name(type,"FunctionalInput class");
2250}
2251
2252/**
2253 * An element may be an instance of type "FunctionalInput class".
2254 */
2255private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2256{
2257 find interpretation(problem,interpretation);
2258 PartialInterpretation.newElements(interpretation,element);
2259 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2260 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2261 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2262 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2263 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2264 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
2265 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
2266 neg find isPrimitive(element);
2267} or {
2268 find interpretation(problem,interpretation);
2269 PartialInterpretation.openWorldElements(interpretation,element);
2270 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2271 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2272 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2273 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2274 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2275 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
2276 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
2277 neg find isPrimitive(element);
2278} or
2279{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
2280/**
2281 * An element must be an instance of type "FunctionalOutput class".
2282 */
2283private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2284 Type.name(type,"FunctionalOutput class");
2285 find directInstanceOf(problem,interpretation,element,type);
2286}
2287private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
2288 find interpretation(problem,interpretation);
2289 PartialInterpretation.scopes(interpretation,scope);
2290 Scope.targetTypeInterpretation(scope,typeInterpretation);
2291 Scope.maxNewElements(scope,0);
2292 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2293 Type.name(type,"FunctionalOutput class");
2294}
2295
2296/**
2297 * An element may be an instance of type "FunctionalOutput class".
2298 */
2299private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2300{
2301 find interpretation(problem,interpretation);
2302 PartialInterpretation.newElements(interpretation,element);
2303 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
2304 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2305 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2306 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2307 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2308 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2309 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
2310 neg find isPrimitive(element);
2311} or {
2312 find interpretation(problem,interpretation);
2313 PartialInterpretation.openWorldElements(interpretation,element);
2314 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
2315 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2316 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2317 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2318 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2319 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2320 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
2321 neg find isPrimitive(element);
2322} or
2323{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
2324/**
2325 * An element must be an instance of type "FunctionalData class".
2326 */
2327private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2328 Type.name(type,"FunctionalData class");
2329 find directInstanceOf(problem,interpretation,element,type);
2330}
2331private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
2332 find interpretation(problem,interpretation);
2333 PartialInterpretation.scopes(interpretation,scope);
2334 Scope.targetTypeInterpretation(scope,typeInterpretation);
2335 Scope.maxNewElements(scope,0);
2336 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2337 Type.name(type,"FunctionalData class");
2338}
2339
2340/**
2341 * An element may be an instance of type "FunctionalData class".
2342 */
2343private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2344{
2345 find interpretation(problem,interpretation);
2346 PartialInterpretation.newElements(interpretation,element);
2347 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
2348 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2349 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2350 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2351 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2352 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2353 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
2354 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
2355 neg find isPrimitive(element);
2356} or {
2357 find interpretation(problem,interpretation);
2358 PartialInterpretation.openWorldElements(interpretation,element);
2359 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
2360 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2361 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2362 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2363 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2364 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
2365 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
2366 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
2367 neg find isPrimitive(element);
2368} or
2369{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
2370/**
2371 * An element must be an instance of type "FunctionType enum".
2372 */
2373private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2374 Type.name(type,"FunctionType enum");
2375 find directInstanceOf(problem,interpretation,element,type);
2376}
2377private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
2378 find interpretation(problem,interpretation);
2379 PartialInterpretation.scopes(interpretation,scope);
2380 Scope.targetTypeInterpretation(scope,typeInterpretation);
2381 Scope.maxNewElements(scope,0);
2382 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2383 Type.name(type,"FunctionType enum");
2384}
2385
2386/**
2387 * An element may be an instance of type "FunctionType enum".
2388 */
2389private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2390{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
2391/**
2392 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
2393 */
2394private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2395 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
2396 find directInstanceOf(problem,interpretation,element,type);
2397}
2398private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
2399 find interpretation(problem,interpretation);
2400 PartialInterpretation.scopes(interpretation,scope);
2401 Scope.targetTypeInterpretation(scope,typeInterpretation);
2402 Scope.maxNewElements(scope,0);
2403 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2404 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
2405}
2406
2407/**
2408 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
2409 */
2410private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2411{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
2412/**
2413 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
2414 */
2415private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
2416 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
2417 find directInstanceOf(problem,interpretation,element,type);
2418}
2419private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
2420 find interpretation(problem,interpretation);
2421 PartialInterpretation.scopes(interpretation,scope);
2422 Scope.targetTypeInterpretation(scope,typeInterpretation);
2423 Scope.maxNewElements(scope,0);
2424 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
2425 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
2426}
2427
2428/**
2429 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
2430 */
2431private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
2432{
2433 find interpretation(problem,interpretation);
2434 PartialInterpretation.newElements(interpretation,element);
2435 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2436 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2437 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2438 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2439 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2440 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
2441 neg find isPrimitive(element);
2442} or {
2443 find interpretation(problem,interpretation);
2444 PartialInterpretation.openWorldElements(interpretation,element);
2445 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
2446 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
2447 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
2448 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
2449 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
2450 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
2451 neg find isPrimitive(element);
2452} or
2453{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
2454
2455//////////
2456// 1.2 Relation Declaration Indexers
2457//////////
2458/**
2459 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
2460 */
2461private pattern mustInRelationinterface_reference_FunctionalElement(
2462 problem:LogicProblem, interpretation:PartialInterpretation,
2463 source: DefinedElement, target:DefinedElement)
2464{
2465 find interpretation(problem,interpretation);
2466 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2467 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
2468 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2469 BinaryElementRelationLink.param1(link,source);
2470 BinaryElementRelationLink.param2(link,target);
2471}
2472/**
2473 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
2474 */
2475private pattern mayInRelationinterface_reference_FunctionalElement(
2476 problem:LogicProblem, interpretation:PartialInterpretation,
2477 source: DefinedElement, target:DefinedElement)
2478{
2479 find interpretation(problem,interpretation);
2480 // The two endpoint of the link have to exist
2481 find mayExist(problem, interpretation, source);
2482 find mayExist(problem, interpretation, target);
2483 // Type consistency
2484 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
2485 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
2486 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2487 // the upper bound of the multiplicity should be considered.
2488 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
2489 check(numberOfExistingReferences < 1);
2490 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2491 // the upper bound of the opposite reference multiplicity should be considered.
2492 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
2493 check(numberOfExistingOppositeReferences < 1);
2494 // The reference is containment, then a new reference cannot be create if:
2495 // 1. Multiple parents
2496 neg find mustContains4(problem,interpretation,_,target);
2497 // 2. Circle in the containment hierarchy
2498 neg find mustTransitiveContains(source,target);
2499} or {
2500 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
2501}
2502/**
2503 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
2504 */
2505 private pattern mustInRelationmodel_reference_FunctionalElement(
2506 problem:LogicProblem, interpretation:PartialInterpretation,
2507 source: DefinedElement, target:DefinedElement)
2508 {
2509 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
2510 }
2511/**
2512 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
2513 */
2514 private pattern mayInRelationmodel_reference_FunctionalElement(
2515 problem:LogicProblem, interpretation:PartialInterpretation,
2516 source: DefinedElement, target:DefinedElement)
2517 {
2518 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
2519 }
2520/**
2521 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
2522 */
2523private pattern mustInRelationparent_reference_FunctionalElement(
2524 problem:LogicProblem, interpretation:PartialInterpretation,
2525 source: DefinedElement, target:DefinedElement)
2526{
2527 find interpretation(problem,interpretation);
2528 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2529 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
2530 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2531 BinaryElementRelationLink.param1(link,source);
2532 BinaryElementRelationLink.param2(link,target);
2533}
2534/**
2535 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
2536 */
2537private pattern mayInRelationparent_reference_FunctionalElement(
2538 problem:LogicProblem, interpretation:PartialInterpretation,
2539 source: DefinedElement, target:DefinedElement)
2540{
2541 find interpretation(problem,interpretation);
2542 // The two endpoint of the link have to exist
2543 find mayExist(problem, interpretation, source);
2544 find mayExist(problem, interpretation, target);
2545 // Type consistency
2546 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
2547 find mayInstanceOfFunction_class(problem,interpretation,target);
2548 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2549 // the upper bound of the multiplicity should be considered.
2550 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
2551 check(numberOfExistingReferences < 1);
2552 // The eOpposite of the reference is containment, then a referene cannot be created if
2553 // 1. Multiple parents
2554 neg find mustContains4(problem,interpretation,source,_);
2555 // 2. Circle in the containment hierarchy
2556 neg find mustTransitiveContains(source,target);
2557} or {
2558 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
2559}
2560/**
2561 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
2562 */
2563private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
2564 problem:LogicProblem, interpretation:PartialInterpretation,
2565 source: DefinedElement, target:DefinedElement)
2566{
2567 find interpretation(problem,interpretation);
2568 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2569 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
2570 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2571 BinaryElementRelationLink.param1(link,source);
2572 BinaryElementRelationLink.param2(link,target);
2573}
2574/**
2575 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
2576 */
2577private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
2578 problem:LogicProblem, interpretation:PartialInterpretation,
2579 source: DefinedElement, target:DefinedElement)
2580{
2581 find interpretation(problem,interpretation);
2582 // The two endpoint of the link have to exist
2583 find mayExist(problem, interpretation, source);
2584 find mayExist(problem, interpretation, target);
2585 // Type consistency
2586 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
2587 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
2588 // The reference is containment, then a new reference cannot be create if:
2589 // 1. Multiple parents
2590 neg find mustContains4(problem,interpretation,_,target);
2591 // 2. Circle in the containment hierarchy
2592 neg find mustTransitiveContains(source,target);
2593} or {
2594 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
2595}
2596/**
2597 * Matcher for detecting tuples t where []subElements reference Function(source,target)
2598 */
2599private pattern mustInRelationsubElements_reference_Function(
2600 problem:LogicProblem, interpretation:PartialInterpretation,
2601 source: DefinedElement, target:DefinedElement)
2602{
2603 find interpretation(problem,interpretation);
2604 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2605 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
2606 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2607 BinaryElementRelationLink.param1(link,source);
2608 BinaryElementRelationLink.param2(link,target);
2609}
2610/**
2611 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
2612 */
2613private pattern mayInRelationsubElements_reference_Function(
2614 problem:LogicProblem, interpretation:PartialInterpretation,
2615 source: DefinedElement, target:DefinedElement)
2616{
2617 find interpretation(problem,interpretation);
2618 // The two endpoint of the link have to exist
2619 find mayExist(problem, interpretation, source);
2620 find mayExist(problem, interpretation, target);
2621 // Type consistency
2622 find mayInstanceOfFunction_class(problem,interpretation,source);
2623 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
2624 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2625 // the upper bound of the opposite reference multiplicity should be considered.
2626 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
2627 check(numberOfExistingOppositeReferences < 1);
2628 // The reference is containment, then a new reference cannot be create if:
2629 // 1. Multiple parents
2630 neg find mustContains4(problem,interpretation,_,target);
2631 // 2. Circle in the containment hierarchy
2632 neg find mustTransitiveContains(source,target);
2633} or {
2634 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
2635}
2636/**
2637 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
2638 */
2639private pattern mustInRelationdata_reference_FAMTerminator(
2640 problem:LogicProblem, interpretation:PartialInterpretation,
2641 source: DefinedElement, target:DefinedElement)
2642{
2643 find interpretation(problem,interpretation);
2644 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2645 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
2646 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2647 BinaryElementRelationLink.param1(link,source);
2648 BinaryElementRelationLink.param2(link,target);
2649}
2650/**
2651 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
2652 */
2653private pattern mayInRelationdata_reference_FAMTerminator(
2654 problem:LogicProblem, interpretation:PartialInterpretation,
2655 source: DefinedElement, target:DefinedElement)
2656{
2657 find interpretation(problem,interpretation);
2658 // The two endpoint of the link have to exist
2659 find mayExist(problem, interpretation, source);
2660 find mayExist(problem, interpretation, target);
2661 // Type consistency
2662 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
2663 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
2664 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2665 // the upper bound of the multiplicity should be considered.
2666 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
2667 check(numberOfExistingReferences < 1);
2668 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2669 // the upper bound of the opposite reference multiplicity should be considered.
2670 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
2671 check(numberOfExistingOppositeReferences < 1);
2672 // The eOpposite of the reference is containment, then a referene cannot be created if
2673 // 1. Multiple parents
2674 neg find mustContains4(problem,interpretation,source,_);
2675 // 2. Circle in the containment hierarchy
2676 neg find mustTransitiveContains(source,target);
2677} or {
2678 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
2679}
2680/**
2681 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
2682 */
2683private pattern mustInRelationfrom_reference_InformationLink(
2684 problem:LogicProblem, interpretation:PartialInterpretation,
2685 source: DefinedElement, target:DefinedElement)
2686{
2687 find interpretation(problem,interpretation);
2688 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2689 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
2690 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2691 BinaryElementRelationLink.param1(link,source);
2692 BinaryElementRelationLink.param2(link,target);
2693}
2694/**
2695 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
2696 */
2697private pattern mayInRelationfrom_reference_InformationLink(
2698 problem:LogicProblem, interpretation:PartialInterpretation,
2699 source: DefinedElement, target:DefinedElement)
2700{
2701 find interpretation(problem,interpretation);
2702 // The two endpoint of the link have to exist
2703 find mayExist(problem, interpretation, source);
2704 find mayExist(problem, interpretation, target);
2705 // Type consistency
2706 find mayInstanceOfInformationLink_class(problem,interpretation,source);
2707 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
2708 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2709 // the upper bound of the multiplicity should be considered.
2710 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
2711 check(numberOfExistingReferences < 1);
2712 // The eOpposite of the reference is containment, then a referene cannot be created if
2713 // 1. Multiple parents
2714 neg find mustContains4(problem,interpretation,source,_);
2715 // 2. Circle in the containment hierarchy
2716 neg find mustTransitiveContains(source,target);
2717} or {
2718 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
2719}
2720/**
2721 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
2722 */
2723private pattern mustInRelationto_reference_InformationLink(
2724 problem:LogicProblem, interpretation:PartialInterpretation,
2725 source: DefinedElement, target:DefinedElement)
2726{
2727 find interpretation(problem,interpretation);
2728 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2729 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
2730 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2731 BinaryElementRelationLink.param1(link,source);
2732 BinaryElementRelationLink.param2(link,target);
2733}
2734/**
2735 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
2736 */
2737private pattern mayInRelationto_reference_InformationLink(
2738 problem:LogicProblem, interpretation:PartialInterpretation,
2739 source: DefinedElement, target:DefinedElement)
2740{
2741 find interpretation(problem,interpretation);
2742 // The two endpoint of the link have to exist
2743 find mayExist(problem, interpretation, source);
2744 find mayExist(problem, interpretation, target);
2745 // Type consistency
2746 find mayInstanceOfInformationLink_class(problem,interpretation,source);
2747 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
2748 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2749 // the upper bound of the multiplicity should be considered.
2750 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
2751 check(numberOfExistingReferences < 1);
2752} or {
2753 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
2754}
2755/**
2756 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
2757 */
2758private pattern mustInRelationdata_reference_FunctionalInterface(
2759 problem:LogicProblem, interpretation:PartialInterpretation,
2760 source: DefinedElement, target:DefinedElement)
2761{
2762 find interpretation(problem,interpretation);
2763 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2764 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
2765 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2766 BinaryElementRelationLink.param1(link,source);
2767 BinaryElementRelationLink.param2(link,target);
2768}
2769/**
2770 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
2771 */
2772private pattern mayInRelationdata_reference_FunctionalInterface(
2773 problem:LogicProblem, interpretation:PartialInterpretation,
2774 source: DefinedElement, target:DefinedElement)
2775{
2776 find interpretation(problem,interpretation);
2777 // The two endpoint of the link have to exist
2778 find mayExist(problem, interpretation, source);
2779 find mayExist(problem, interpretation, target);
2780 // Type consistency
2781 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
2782 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
2783 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2784 // the upper bound of the opposite reference multiplicity should be considered.
2785 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
2786 check(numberOfExistingOppositeReferences < 1);
2787 // The reference is containment, then a new reference cannot be create if:
2788 // 1. Multiple parents
2789 neg find mustContains4(problem,interpretation,_,target);
2790 // 2. Circle in the containment hierarchy
2791 neg find mustTransitiveContains(source,target);
2792} or {
2793 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
2794}
2795/**
2796 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
2797 */
2798private pattern mustInRelationelement_reference_FunctionalInterface(
2799 problem:LogicProblem, interpretation:PartialInterpretation,
2800 source: DefinedElement, target:DefinedElement)
2801{
2802 find interpretation(problem,interpretation);
2803 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2804 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
2805 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2806 BinaryElementRelationLink.param1(link,source);
2807 BinaryElementRelationLink.param2(link,target);
2808}
2809/**
2810 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
2811 */
2812private pattern mayInRelationelement_reference_FunctionalInterface(
2813 problem:LogicProblem, interpretation:PartialInterpretation,
2814 source: DefinedElement, target:DefinedElement)
2815{
2816 find interpretation(problem,interpretation);
2817 // The two endpoint of the link have to exist
2818 find mayExist(problem, interpretation, source);
2819 find mayExist(problem, interpretation, target);
2820 // Type consistency
2821 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
2822 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
2823 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2824 // the upper bound of the multiplicity should be considered.
2825 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
2826 check(numberOfExistingReferences < 1);
2827 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2828 // the upper bound of the opposite reference multiplicity should be considered.
2829 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
2830 check(numberOfExistingOppositeReferences < 1);
2831 // The eOpposite of the reference is containment, then a referene cannot be created if
2832 // 1. Multiple parents
2833 neg find mustContains4(problem,interpretation,source,_);
2834 // 2. Circle in the containment hierarchy
2835 neg find mustTransitiveContains(source,target);
2836} or {
2837 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
2838}
2839/**
2840 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
2841 */
2842private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
2843 problem:LogicProblem, interpretation:PartialInterpretation,
2844 source: DefinedElement, target:DefinedElement)
2845{
2846 find interpretation(problem,interpretation);
2847 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2848 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
2849 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2850 BinaryElementRelationLink.param1(link,source);
2851 BinaryElementRelationLink.param2(link,target);
2852}
2853/**
2854 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
2855 */
2856private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
2857 problem:LogicProblem, interpretation:PartialInterpretation,
2858 source: DefinedElement, target:DefinedElement)
2859{
2860 find interpretation(problem,interpretation);
2861 // The two endpoint of the link have to exist
2862 find mayExist(problem, interpretation, source);
2863 find mayExist(problem, interpretation, target);
2864 // Type consistency
2865 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
2866 find mayInstanceOfInformationLink_class(problem,interpretation,target);
2867 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2868 // the upper bound of the opposite reference multiplicity should be considered.
2869 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
2870 check(numberOfExistingOppositeReferences < 1);
2871} or {
2872 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
2873}
2874/**
2875 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
2876 */
2877private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
2878 problem:LogicProblem, interpretation:PartialInterpretation,
2879 source: DefinedElement, target:DefinedElement)
2880{
2881 find interpretation(problem,interpretation);
2882 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2883 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
2884 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2885 BinaryElementRelationLink.param1(link,source);
2886 BinaryElementRelationLink.param2(link,target);
2887}
2888/**
2889 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
2890 */
2891private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
2892 problem:LogicProblem, interpretation:PartialInterpretation,
2893 source: DefinedElement, target:DefinedElement)
2894{
2895 find interpretation(problem,interpretation);
2896 // The two endpoint of the link have to exist
2897 find mayExist(problem, interpretation, source);
2898 find mayExist(problem, interpretation, target);
2899 // Type consistency
2900 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
2901 find mayInstanceOfInformationLink_class(problem,interpretation,target);
2902 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2903 // the upper bound of the opposite reference multiplicity should be considered.
2904 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
2905 check(numberOfExistingOppositeReferences < 1);
2906 // The reference is containment, then a new reference cannot be create if:
2907 // 1. Multiple parents
2908 neg find mustContains4(problem,interpretation,_,target);
2909 // 2. Circle in the containment hierarchy
2910 neg find mustTransitiveContains(source,target);
2911} or {
2912 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
2913}
2914/**
2915 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
2916 */
2917private pattern mustInRelationterminator_reference_FunctionalData(
2918 problem:LogicProblem, interpretation:PartialInterpretation,
2919 source: DefinedElement, target:DefinedElement)
2920{
2921 find interpretation(problem,interpretation);
2922 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2923 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
2924 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2925 BinaryElementRelationLink.param1(link,source);
2926 BinaryElementRelationLink.param2(link,target);
2927}
2928/**
2929 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
2930 */
2931private pattern mayInRelationterminator_reference_FunctionalData(
2932 problem:LogicProblem, interpretation:PartialInterpretation,
2933 source: DefinedElement, target:DefinedElement)
2934{
2935 find interpretation(problem,interpretation);
2936 // The two endpoint of the link have to exist
2937 find mayExist(problem, interpretation, source);
2938 find mayExist(problem, interpretation, target);
2939 // Type consistency
2940 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
2941 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
2942 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2943 // the upper bound of the multiplicity should be considered.
2944 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
2945 check(numberOfExistingReferences < 1);
2946 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
2947 // the upper bound of the opposite reference multiplicity should be considered.
2948 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
2949 check(numberOfExistingOppositeReferences < 1);
2950 // The reference is containment, then a new reference cannot be create if:
2951 // 1. Multiple parents
2952 neg find mustContains4(problem,interpretation,_,target);
2953 // 2. Circle in the containment hierarchy
2954 neg find mustTransitiveContains(source,target);
2955} or {
2956 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
2957}
2958/**
2959 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
2960 */
2961private pattern mustInRelationinterface_reference_FunctionalData(
2962 problem:LogicProblem, interpretation:PartialInterpretation,
2963 source: DefinedElement, target:DefinedElement)
2964{
2965 find interpretation(problem,interpretation);
2966 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
2967 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
2968 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
2969 BinaryElementRelationLink.param1(link,source);
2970 BinaryElementRelationLink.param2(link,target);
2971}
2972/**
2973 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
2974 */
2975private pattern mayInRelationinterface_reference_FunctionalData(
2976 problem:LogicProblem, interpretation:PartialInterpretation,
2977 source: DefinedElement, target:DefinedElement)
2978{
2979 find interpretation(problem,interpretation);
2980 // The two endpoint of the link have to exist
2981 find mayExist(problem, interpretation, source);
2982 find mayExist(problem, interpretation, target);
2983 // Type consistency
2984 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
2985 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
2986 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
2987 // the upper bound of the multiplicity should be considered.
2988 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
2989 check(numberOfExistingReferences < 1);
2990 // The eOpposite of the reference is containment, then a referene cannot be created if
2991 // 1. Multiple parents
2992 neg find mustContains4(problem,interpretation,source,_);
2993 // 2. Circle in the containment hierarchy
2994 neg find mustTransitiveContains(source,target);
2995} or {
2996 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
2997}
2998/**
2999 * Matcher for detecting tuples t where []type attribute Function(source,target)
3000 */
3001 private pattern mustInRelationtype_attribute_Function(
3002 problem:LogicProblem, interpretation:PartialInterpretation,
3003 source: DefinedElement, target:DefinedElement)
3004 {
3005 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
3006 }
3007/**
3008 * Matcher for detecting tuples t where []type attribute Function(source,target)
3009 */
3010 private pattern mayInRelationtype_attribute_Function(
3011 problem:LogicProblem, interpretation:PartialInterpretation,
3012 source: DefinedElement, target:DefinedElement)
3013 {
3014 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
3015 }
3016
3017//////////
3018// 1.3 Relation Definition Indexers
3019//////////
3020// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation
3021private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
3022 problem:LogicProblem, interpretation:PartialInterpretation,
3023 var_T, var_I)
3024{
3025 find interpretation(problem,interpretation);
3026 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
3027 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
3028 // T is exported
3029 // I is exported
3030 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
3031 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
3032 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
3033 var_virtual0 == var_I;
3034 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
3035 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
3036 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
3037 var_virtual1 == var_T;
3038}or{
3039 find interpretation(problem,interpretation);
3040 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
3041 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
3042 // T is exported
3043 // I is exported
3044 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
3045 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
3046 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
3047 var_virtual0 == var_In;
3048 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
3049 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
3050 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
3051 var_virtual1 == var_T;
3052}
3053private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
3054 problem:LogicProblem, interpretation:PartialInterpretation,
3055 var_T, var_I)
3056{
3057 find interpretation(problem,interpretation);
3058 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
3059 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
3060 // T is exported
3061 // I is exported
3062 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
3063 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
3064 find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
3065 find mayEquivalent(problem, interpretation, var_virtual0, var_I);
3066 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
3067 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
3068 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
3069 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
3070}or{
3071 find interpretation(problem,interpretation);
3072 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
3073 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
3074 // T is exported
3075 // I is exported
3076 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
3077 find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
3078 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
3079 find mayEquivalent(problem, interpretation, var_virtual0, var_In);
3080 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In);
3081 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
3082 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
3083 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
3084}
3085private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
3086 problem:LogicProblem, interpretation:PartialInterpretation,
3087 var_T, var_I)
3088{
3089 find interpretation(problem,interpretation);
3090 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
3091 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
3092 // T is exported
3093 // I is exported
3094 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
3095 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
3096 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
3097 var_virtual0 == var_I;
3098 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
3099 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
3100 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
3101 var_virtual1 == var_T;
3102}or{
3103 find interpretation(problem,interpretation);
3104 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
3105 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
3106 // T is exported
3107 // I is exported
3108 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
3109 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
3110 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
3111 var_virtual0 == var_In;
3112 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
3113 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
3114 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
3115 var_virtual1 == var_T;
3116}
3117// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type
3118private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
3119 problem:LogicProblem, interpretation:PartialInterpretation,
3120 var_This, var_Target)
3121{
3122 find interpretation(problem,interpretation);
3123 find mustInstanceOfFunction_class(problem,interpretation,var_This);
3124 // type constraint is enforced by construction
3125 // This is exported
3126 // Target is exported
3127 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
3128 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
3129 var_Target == var_virtual0;
3130}or{
3131 find interpretation(problem,interpretation);
3132 find mustInstanceOfFunction_class(problem,interpretation,var_This);
3133 // type constraint is enforced by construction
3134 // This is exported
3135 // Target is exported
3136 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
3137 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
3138 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
3139 var_Target == var_virtual0;
3140}or{
3141 find interpretation(problem,interpretation);
3142 find mustInstanceOfFunction_class(problem,interpretation,var_This);
3143 // type constraint is enforced by construction
3144 // This is exported
3145 // Target is exported
3146 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
3147 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
3148 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
3149 var_Target == var_virtual0;
3150}
3151private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
3152 problem:LogicProblem, interpretation:PartialInterpretation,
3153 var_This, var_Target)
3154{
3155 find interpretation(problem,interpretation);
3156 find mayInstanceOfFunction_class(problem,interpretation,var_This);
3157 // type constraint is enforced by construction
3158 // This is exported
3159 // Target is exported
3160 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
3161 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
3162 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
3163}or{
3164 find interpretation(problem,interpretation);
3165 find mayInstanceOfFunction_class(problem,interpretation,var_This);
3166 // type constraint is enforced by construction
3167 // This is exported
3168 // Target is exported
3169 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
3170 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
3171 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
3172 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
3173}or{
3174 find interpretation(problem,interpretation);
3175 find mayInstanceOfFunction_class(problem,interpretation,var_This);
3176 // type constraint is enforced by construction
3177 // This is exported
3178 // Target is exported
3179 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
3180 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
3181 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
3182 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
3183}
3184private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
3185 problem:LogicProblem, interpretation:PartialInterpretation,
3186 var_This, var_Target)
3187{
3188 find interpretation(problem,interpretation);
3189 find mustInstanceOfFunction_class(problem,interpretation,var_This);
3190 // type constraint is enforced by construction
3191 // This is exported
3192 // Target is exported
3193 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
3194 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
3195 var_Target == var_virtual0;
3196}or{
3197 find interpretation(problem,interpretation);
3198 find mustInstanceOfFunction_class(problem,interpretation,var_This);
3199 // type constraint is enforced by construction
3200 // This is exported
3201 // Target is exported
3202 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
3203 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
3204 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
3205 var_Target == var_virtual0;
3206}or{
3207 find interpretation(problem,interpretation);
3208 find mustInstanceOfFunction_class(problem,interpretation,var_This);
3209 // type constraint is enforced by construction
3210 // This is exported
3211 // Target is exported
3212 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
3213 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
3214 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
3215 var_Target == var_virtual0;
3216}
3217// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements
3218private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
3219 problem:LogicProblem, interpretation:PartialInterpretation,
3220 var_Model, var_Root)
3221{
3222 find interpretation(problem,interpretation);
3223 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
3224 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
3225 // Model is exported
3226 // Root is exported
3227 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
3228 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
3229 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
3230 var_virtual0 == var_Root;
3231}
3232private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
3233 problem:LogicProblem, interpretation:PartialInterpretation,
3234 var_Model, var_Root)
3235{
3236 find interpretation(problem,interpretation);
3237 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
3238 find mayInstanceOfFunction_class(problem,interpretation,var_Root);
3239 // Model is exported
3240 // Root is exported
3241 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
3242 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
3243 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
3244 find mayEquivalent(problem, interpretation, var_virtual0, var_Root);
3245}
3246private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
3247 problem:LogicProblem, interpretation:PartialInterpretation,
3248 var_Model, var_Root)
3249{
3250 find interpretation(problem,interpretation);
3251 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
3252 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
3253 // Model is exported
3254 // Root is exported
3255 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
3256 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
3257 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
3258 var_virtual0 == var_Root;
3259}
3260// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent
3261private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
3262 problem:LogicProblem, interpretation:PartialInterpretation,
3263 var_Func, var_Par)
3264{
3265 find interpretation(problem,interpretation);
3266 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
3267 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
3268 // Func is exported
3269 // Par is exported
3270 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
3271 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
3272 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
3273 var_virtual0 == var_Par;
3274}
3275private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
3276 problem:LogicProblem, interpretation:PartialInterpretation,
3277 var_Func, var_Par)
3278{
3279 find interpretation(problem,interpretation);
3280 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
3281 find mayInstanceOfFunction_class(problem,interpretation,var_Par);
3282 // Func is exported
3283 // Par is exported
3284 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
3285 find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
3286 find mayInstanceOfFunction_class(problem,interpretation,var_virtual0);
3287 find mayEquivalent(problem, interpretation, var_virtual0, var_Par);
3288}
3289private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
3290 problem:LogicProblem, interpretation:PartialInterpretation,
3291 var_Func, var_Par)
3292{
3293 find interpretation(problem,interpretation);
3294 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
3295 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
3296 // Func is exported
3297 // Par is exported
3298 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
3299 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
3300 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
3301 var_virtual0 == var_Par;
3302}
3303// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model
3304private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
3305 problem:LogicProblem, interpretation:PartialInterpretation,
3306 var_This, var_Target)
3307{
3308 find interpretation(problem,interpretation);
3309 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
3310 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
3311 // This is exported
3312 // Target is exported
3313 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
3314 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
3315}
3316private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
3317 problem:LogicProblem, interpretation:PartialInterpretation,
3318 var_This, var_Target)
3319{
3320 find interpretation(problem,interpretation);
3321 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
3322 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
3323 // This is exported
3324 // Target is exported
3325 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
3326 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
3327}
3328private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
3329 problem:LogicProblem, interpretation:PartialInterpretation,
3330 var_This, var_Target)
3331{
3332 find interpretation(problem,interpretation);
3333 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
3334 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
3335 // This is exported
3336 // Target is exported
3337 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
3338 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
3339}
3340
3341//////////
3342// 1.4 Containment Indexer
3343//////////
3344private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
3345 find mustContains4(_,_,source,target);
3346}
3347
3348private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
3349 source: DefinedElement, target: DefinedElement)
3350 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
3351
3352 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
3353
3354 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
3355
3356 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
3357
3358 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
3359
3360 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
3361
3362private pattern mustTransitiveContains(source,target) {
3363 find mustContains2+(source,target);
3364}
3365
3366//////////
3367// 2. Invalidation Indexers
3368//////////
3369// 2.1 Invalidated by WF Queries
3370//////////
3371pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
3372 var_T, var_I)
3373{
3374 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I);
3375}
3376
3377//////////
3378// 3. Unfinishedness Indexers
3379//////////
3380// 3.1 Unfinishedness Measured by Multiplicity
3381//////////
3382pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
3383 find interpretation(problem,interpretation);
3384 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3385 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
3386 find mustInstanceOfInformationLink_class(problem,interpretation,object);
3387 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
3388 check(numberOfExistingReferences < 1);
3389 missingMultiplicity == eval(1-numberOfExistingReferences);
3390}
3391
3392//////////
3393// 3.2 Unfinishedness Measured by WF Queries
3394//////////
3395pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
3396 var_T, var_I)
3397{
3398 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I);
3399}
3400
3401//////////
3402// 4. Refinement Indexers
3403//////////
3404// 4.1 Object constructors
3405//////////
3406private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
3407{
3408 find interpretation(problem,interpretation);
3409 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
3410 find mustExist(problem, interpretation, root);
3411}or{
3412 find interpretation(problem,interpretation);
3413 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
3414 find mustExist(problem, interpretation, root);
3415}or{
3416 find interpretation(problem,interpretation);
3417 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
3418 find mustExist(problem, interpretation, root);
3419}or{
3420 find interpretation(problem,interpretation);
3421 find mustInstanceOfFunction_class(problem,interpretation,root);
3422 find mustExist(problem, interpretation, root);
3423}or{
3424 find interpretation(problem,interpretation);
3425 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
3426 find mustExist(problem, interpretation, root);
3427}or{
3428 find interpretation(problem,interpretation);
3429 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
3430 find mustExist(problem, interpretation, root);
3431}or{
3432 find interpretation(problem,interpretation);
3433 find mustInstanceOfInformationLink_class(problem,interpretation,root);
3434 find mustExist(problem, interpretation, root);
3435}or{
3436 find interpretation(problem,interpretation);
3437 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
3438 find mustExist(problem, interpretation, root);
3439}or{
3440 find interpretation(problem,interpretation);
3441 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
3442 find mustExist(problem, interpretation, root);
3443}or{
3444 find interpretation(problem,interpretation);
3445 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
3446 find mustExist(problem, interpretation, root);
3447}or{
3448 find interpretation(problem,interpretation);
3449 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
3450 find mustExist(problem, interpretation, root);
3451}
3452pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
3453 problem:LogicProblem, interpretation:PartialInterpretation,
3454 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3455 container:DefinedElement)
3456{
3457 find interpretation(problem,interpretation);
3458 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3459 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
3460 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3461 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
3462 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
3463 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
3464 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
3465 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
3466 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
3467 find mustExist(problem, interpretation, container);
3468 neg find mustExist(problem, interpretation, newObject);
3469}
3470pattern createObject_FunctionalInput_class(
3471 problem:LogicProblem, interpretation:PartialInterpretation,
3472 typeInterpretation:PartialComplexTypeInterpretation)
3473{
3474 find interpretation(problem,interpretation);
3475 neg find hasElementInContainment(problem,interpretation);
3476 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3477 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
3478 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
3479 find mayExist(problem, interpretation, newObject);
3480 neg find mustExist(problem, interpretation, newObject);
3481}
3482pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
3483 problem:LogicProblem, interpretation:PartialInterpretation,
3484 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3485 container:DefinedElement)
3486{
3487 find interpretation(problem,interpretation);
3488 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3489 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
3490 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3491 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
3492 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
3493 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
3494 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
3495 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
3496 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
3497 find mustExist(problem, interpretation, container);
3498 neg find mustExist(problem, interpretation, newObject);
3499}
3500pattern createObject_FunctionalInterface_class(
3501 problem:LogicProblem, interpretation:PartialInterpretation,
3502 typeInterpretation:PartialComplexTypeInterpretation)
3503{
3504 find interpretation(problem,interpretation);
3505 neg find hasElementInContainment(problem,interpretation);
3506 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3507 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
3508 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
3509 find mayExist(problem, interpretation, newObject);
3510 neg find mustExist(problem, interpretation, newObject);
3511}
3512pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
3513 problem:LogicProblem, interpretation:PartialInterpretation,
3514 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3515 container:DefinedElement)
3516{
3517 find interpretation(problem,interpretation);
3518 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3519 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
3520 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3521 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
3522 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
3523 find mayInstanceOfFunction_class(problem,interpretation,newObject);
3524 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
3525 find mustExist(problem, interpretation, container);
3526 neg find mustExist(problem, interpretation, newObject);
3527}
3528pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
3529 problem:LogicProblem, interpretation:PartialInterpretation,
3530 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3531 container:DefinedElement)
3532{
3533 find interpretation(problem,interpretation);
3534 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3535 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
3536 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3537 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
3538 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
3539 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
3540 find mustInstanceOfFunction_class(problem,interpretation,container);
3541 find mayInstanceOfFunction_class(problem,interpretation,newObject);
3542 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
3543 find mustExist(problem, interpretation, container);
3544 neg find mustExist(problem, interpretation, newObject);
3545}
3546pattern createObject_Function_class(
3547 problem:LogicProblem, interpretation:PartialInterpretation,
3548 typeInterpretation:PartialComplexTypeInterpretation)
3549{
3550 find interpretation(problem,interpretation);
3551 neg find hasElementInContainment(problem,interpretation);
3552 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3553 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
3554 find mayInstanceOfFunction_class(problem,interpretation,newObject);
3555 find mayExist(problem, interpretation, newObject);
3556 neg find mustExist(problem, interpretation, newObject);
3557}
3558pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
3559 problem:LogicProblem, interpretation:PartialInterpretation,
3560 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3561 container:DefinedElement)
3562{
3563 find interpretation(problem,interpretation);
3564 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3565 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
3566 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3567 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
3568 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
3569 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
3570 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
3571 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
3572 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
3573 find mustExist(problem, interpretation, container);
3574 neg find mustExist(problem, interpretation, newObject);
3575}
3576pattern createObject_FAMTerminator_class(
3577 problem:LogicProblem, interpretation:PartialInterpretation,
3578 typeInterpretation:PartialComplexTypeInterpretation)
3579{
3580 find interpretation(problem,interpretation);
3581 neg find hasElementInContainment(problem,interpretation);
3582 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3583 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
3584 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
3585 find mayExist(problem, interpretation, newObject);
3586 neg find mustExist(problem, interpretation, newObject);
3587}
3588pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
3589 problem:LogicProblem, interpretation:PartialInterpretation,
3590 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3591 container:DefinedElement)
3592{
3593 find interpretation(problem,interpretation);
3594 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3595 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
3596 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3597 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
3598 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
3599 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
3600 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
3601 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
3602 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
3603 find mustExist(problem, interpretation, container);
3604 neg find mustExist(problem, interpretation, newObject);
3605}
3606pattern createObject_InformationLink_class(
3607 problem:LogicProblem, interpretation:PartialInterpretation,
3608 typeInterpretation:PartialComplexTypeInterpretation)
3609{
3610 find interpretation(problem,interpretation);
3611 neg find hasElementInContainment(problem,interpretation);
3612 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3613 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
3614 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
3615 find mayExist(problem, interpretation, newObject);
3616 neg find mustExist(problem, interpretation, newObject);
3617}
3618pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
3619 problem:LogicProblem, interpretation:PartialInterpretation,
3620 typeInterpretation:PartialComplexTypeInterpretation)
3621{
3622 find interpretation(problem,interpretation);
3623 neg find hasElementInContainment(problem,interpretation);
3624 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3625 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
3626 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
3627 find mayExist(problem, interpretation, newObject);
3628 neg find mustExist(problem, interpretation, newObject);
3629}
3630pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
3631 problem:LogicProblem, interpretation:PartialInterpretation,
3632 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
3633 container:DefinedElement)
3634{
3635 find interpretation(problem,interpretation);
3636 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3637 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
3638 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
3639 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
3640 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
3641 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
3642 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
3643 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
3644 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
3645 find mustExist(problem, interpretation, container);
3646 neg find mustExist(problem, interpretation, newObject);
3647}
3648pattern createObject_FunctionalOutput_class(
3649 problem:LogicProblem, interpretation:PartialInterpretation,
3650 typeInterpretation:PartialComplexTypeInterpretation)
3651{
3652 find interpretation(problem,interpretation);
3653 neg find hasElementInContainment(problem,interpretation);
3654 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3655 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
3656 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
3657 find mayExist(problem, interpretation, newObject);
3658 neg find mustExist(problem, interpretation, newObject);
3659}
3660
3661//////////
3662// 4.2 Type refinement
3663//////////
3664pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3665 find interpretation(problem,interpretation);
3666 PartialInterpretation.newElements(interpretation,element);
3667 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
3668 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
3669 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3670 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
3671 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3672 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3673 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
3674 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
3675}
3676pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3677 find interpretation(problem,interpretation);
3678 PartialInterpretation.newElements(interpretation,element);
3679 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
3680 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3681 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
3682 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3683 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3684 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
3685 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3686}
3687pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3688 find interpretation(problem,interpretation);
3689 PartialInterpretation.newElements(interpretation,element);
3690 find mayInstanceOfFunction_class(problem,interpretation,element);
3691 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3692 neg find mustInstanceOfFunction_class(problem,interpretation,element);
3693 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3694 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3695 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3696 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
3697}
3698pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3699 find interpretation(problem,interpretation);
3700 PartialInterpretation.newElements(interpretation,element);
3701 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
3702 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3703 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
3704 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3705 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
3706 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3707 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3708}
3709pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3710 find interpretation(problem,interpretation);
3711 PartialInterpretation.newElements(interpretation,element);
3712 find mayInstanceOfInformationLink_class(problem,interpretation,element);
3713 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3714 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
3715 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3716 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3717 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3718 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
3719}
3720pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3721 find interpretation(problem,interpretation);
3722 PartialInterpretation.newElements(interpretation,element);
3723 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
3724 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3725 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
3726 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3727 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3728 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3729 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
3730}
3731pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
3732 find interpretation(problem,interpretation);
3733 PartialInterpretation.newElements(interpretation,element);
3734 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
3735 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
3736 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3737 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
3738 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3739 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3740 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
3741 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
3742}
3743
3744//////////
3745// 4.3 Relation refinement
3746//////////
3747pattern refineRelation_model_reference_FunctionalElement(
3748 problem:LogicProblem, interpretation:PartialInterpretation,
3749 relationIterpretation:PartialRelationInterpretation,
3750 from: DefinedElement, to: DefinedElement)
3751{
3752 find interpretation(problem,interpretation);
3753 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3754 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
3755 find mustExist(problem, interpretation, from);
3756 find mustExist(problem, interpretation, to);
3757 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
3758 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
3759 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
3760 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
3761}
3762pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
3763 problem:LogicProblem, interpretation:PartialInterpretation,
3764 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
3765 from: DefinedElement, to: DefinedElement)
3766{
3767 find interpretation(problem,interpretation);
3768 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3769 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
3770 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
3771 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
3772 find mustExist(problem, interpretation, from);
3773 find mustExist(problem, interpretation, to);
3774 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
3775 find mustInstanceOfInformationLink_class(problem,interpretation,to);
3776 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
3777 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
3778}
3779pattern refineRelation_type_attribute_Function(
3780 problem:LogicProblem, interpretation:PartialInterpretation,
3781 relationIterpretation:PartialRelationInterpretation,
3782 from: DefinedElement, to: DefinedElement)
3783{
3784 find interpretation(problem,interpretation);
3785 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
3786 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
3787 find mustExist(problem, interpretation, from);
3788 find mustExist(problem, interpretation, to);
3789 find mustInstanceOfFunction_class(problem,interpretation,from);
3790 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
3791 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
3792 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
3793}
3794import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
3795import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
3796import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
3797
3798//////////
3799// 0. Util
3800//////////
3801private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
3802 PartialInterpretation.problem(interpretation,problem);
3803}
3804
3805/////////////////////////
3806// 0.1 Existence
3807/////////////////////////
3808private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
3809 find interpretation(problem,interpretation);
3810 LogicProblem.elements(problem,element);
3811} or {
3812 find interpretation(problem,interpretation);
3813 PartialInterpretation.newElements(interpretation,element);
3814}
3815
3816private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
3817 find mustExist(problem,interpretation,element);
3818} or {
3819 find interpretation(problem,interpretation);
3820 neg find elementCloseWorld(element);
3821 PartialInterpretation.openWorldElements(interpretation,element);
3822}
3823
3824private pattern elementCloseWorld(element:DefinedElement) {
3825 PartialInterpretation.openWorldElements(i,element);
3826 PartialInterpretation.maxNewElements(i,0);
3827} or {
3828 Scope.targetTypeInterpretation(scope,interpretation);
3829 PartialTypeInterpratation.elements(interpretation,element);
3830 Scope.maxNewElements(scope,0);
3831}
3832
3833////////////////////////
3834// 0.2 Equivalence
3835////////////////////////
3836pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
3837 find mayExist(problem,interpretation,a);
3838 find mayExist(problem,interpretation,b);
3839 a == b;
3840}
3841
3842////////////////////////
3843// 0.3 Required Patterns by TypeIndexer
3844////////////////////////
3845private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
3846 find interpretation(problem,interpretation);
3847 LogicProblem.types(problem,type);
3848 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
3849 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
3850}
3851
3852private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
3853 find interpretation(problem,interpretation);
3854 LogicProblem.types(problem,type);
3855 TypeDefinition.elements(type,element);
3856} or {
3857 find interpretation(problem,interpretation);
3858 find typeInterpretation(problem,interpretation,type,typeInterpretation);
3859 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
3860}
3861
3862private pattern isPrimitive(element: PrimitiveElement) {
3863 PrimitiveElement(element);
3864}
3865
3866//////////
3867// 1. Problem-Specific Base Indexers
3868//////////
3869// 1.1 Type Indexers
3870//////////
3871// 1.1.1 primitive Type Indexers
3872//////////
3873
3874//////////
3875// 1.1.2 domain-specific Type Indexers
3876//////////
3877/**
3878 * An element must be an instance of type "FunctionalElement class".
3879 */
3880private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
3881 Type.name(type,"FunctionalElement class");
3882 find directInstanceOf(problem,interpretation,element,type);
3883}
3884private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
3885 find interpretation(problem,interpretation);
3886 PartialInterpretation.scopes(interpretation,scope);
3887 Scope.targetTypeInterpretation(scope,typeInterpretation);
3888 Scope.maxNewElements(scope,0);
3889 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
3890 Type.name(type,"FunctionalElement class");
3891}
3892
3893/**
3894 * An element may be an instance of type "FunctionalElement class".
3895 */
3896private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
3897{
3898 find interpretation(problem,interpretation);
3899 PartialInterpretation.newElements(interpretation,element);
3900 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3901 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3902 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
3903 neg find mustInstanceOfFunction_class(problem,interpretation,element);
3904 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3905 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3906 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
3907 neg find isPrimitive(element);
3908} or {
3909 find interpretation(problem,interpretation);
3910 PartialInterpretation.openWorldElements(interpretation,element);
3911 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3912 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3913 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
3914 neg find mustInstanceOfFunction_class(problem,interpretation,element);
3915 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3916 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3917 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
3918 neg find isPrimitive(element);
3919} or
3920{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
3921/**
3922 * An element must be an instance of type "FunctionalArchitectureModel class".
3923 */
3924private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
3925 Type.name(type,"FunctionalArchitectureModel class");
3926 find directInstanceOf(problem,interpretation,element,type);
3927}
3928private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
3929 find interpretation(problem,interpretation);
3930 PartialInterpretation.scopes(interpretation,scope);
3931 Scope.targetTypeInterpretation(scope,typeInterpretation);
3932 Scope.maxNewElements(scope,0);
3933 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
3934 Type.name(type,"FunctionalArchitectureModel class");
3935}
3936
3937/**
3938 * An element may be an instance of type "FunctionalArchitectureModel class".
3939 */
3940private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
3941{
3942 find interpretation(problem,interpretation);
3943 PartialInterpretation.newElements(interpretation,element);
3944 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3945 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3946 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
3947 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
3948 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3949 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3950 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
3951 neg find isPrimitive(element);
3952} or {
3953 find interpretation(problem,interpretation);
3954 PartialInterpretation.openWorldElements(interpretation,element);
3955 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3956 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3957 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
3958 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
3959 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3960 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3961 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
3962 neg find isPrimitive(element);
3963} or
3964{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
3965/**
3966 * An element must be an instance of type "Function class".
3967 */
3968private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
3969 Type.name(type,"Function class");
3970 find directInstanceOf(problem,interpretation,element,type);
3971}
3972private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
3973 find interpretation(problem,interpretation);
3974 PartialInterpretation.scopes(interpretation,scope);
3975 Scope.targetTypeInterpretation(scope,typeInterpretation);
3976 Scope.maxNewElements(scope,0);
3977 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
3978 Type.name(type,"Function class");
3979}
3980
3981/**
3982 * An element may be an instance of type "Function class".
3983 */
3984private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
3985{
3986 find interpretation(problem,interpretation);
3987 PartialInterpretation.newElements(interpretation,element);
3988 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3989 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
3990 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
3991 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
3992 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
3993 neg find scopeDisallowsNewFunction_class(problem, interpretation);
3994 neg find isPrimitive(element);
3995} or {
3996 find interpretation(problem,interpretation);
3997 PartialInterpretation.openWorldElements(interpretation,element);
3998 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
3999 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4000 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4001 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4002 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4003 neg find scopeDisallowsNewFunction_class(problem, interpretation);
4004 neg find isPrimitive(element);
4005} or
4006{ find mustInstanceOfFunction_class(problem,interpretation,element); }
4007/**
4008 * An element must be an instance of type "FAMTerminator class".
4009 */
4010private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
4011 Type.name(type,"FAMTerminator class");
4012 find directInstanceOf(problem,interpretation,element,type);
4013}
4014private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
4015 find interpretation(problem,interpretation);
4016 PartialInterpretation.scopes(interpretation,scope);
4017 Scope.targetTypeInterpretation(scope,typeInterpretation);
4018 Scope.maxNewElements(scope,0);
4019 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
4020 Type.name(type,"FAMTerminator class");
4021}
4022
4023/**
4024 * An element may be an instance of type "FAMTerminator class".
4025 */
4026private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
4027{
4028 find interpretation(problem,interpretation);
4029 PartialInterpretation.newElements(interpretation,element);
4030 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
4031 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4032 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4033 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4034 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4035 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
4036 neg find isPrimitive(element);
4037} or {
4038 find interpretation(problem,interpretation);
4039 PartialInterpretation.openWorldElements(interpretation,element);
4040 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
4041 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4042 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4043 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4044 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4045 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
4046 neg find isPrimitive(element);
4047} or
4048{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
4049/**
4050 * An element must be an instance of type "InformationLink class".
4051 */
4052private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
4053 Type.name(type,"InformationLink class");
4054 find directInstanceOf(problem,interpretation,element,type);
4055}
4056private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
4057 find interpretation(problem,interpretation);
4058 PartialInterpretation.scopes(interpretation,scope);
4059 Scope.targetTypeInterpretation(scope,typeInterpretation);
4060 Scope.maxNewElements(scope,0);
4061 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
4062 Type.name(type,"InformationLink class");
4063}
4064
4065/**
4066 * An element may be an instance of type "InformationLink class".
4067 */
4068private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
4069{
4070 find interpretation(problem,interpretation);
4071 PartialInterpretation.newElements(interpretation,element);
4072 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
4073 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4074 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4075 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4076 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4077 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
4078 neg find isPrimitive(element);
4079} or {
4080 find interpretation(problem,interpretation);
4081 PartialInterpretation.openWorldElements(interpretation,element);
4082 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
4083 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4084 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4085 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4086 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4087 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
4088 neg find isPrimitive(element);
4089} or
4090{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
4091/**
4092 * An element must be an instance of type "FunctionalInterface class".
4093 */
4094private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
4095 Type.name(type,"FunctionalInterface class");
4096 find directInstanceOf(problem,interpretation,element,type);
4097}
4098private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
4099 find interpretation(problem,interpretation);
4100 PartialInterpretation.scopes(interpretation,scope);
4101 Scope.targetTypeInterpretation(scope,typeInterpretation);
4102 Scope.maxNewElements(scope,0);
4103 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
4104 Type.name(type,"FunctionalInterface class");
4105}
4106
4107/**
4108 * An element may be an instance of type "FunctionalInterface class".
4109 */
4110private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
4111{
4112 find interpretation(problem,interpretation);
4113 PartialInterpretation.newElements(interpretation,element);
4114 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
4115 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4116 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4117 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4118 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4119 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
4120 neg find isPrimitive(element);
4121} or {
4122 find interpretation(problem,interpretation);
4123 PartialInterpretation.openWorldElements(interpretation,element);
4124 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
4125 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4126 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4127 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4128 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4129 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
4130 neg find isPrimitive(element);
4131} or
4132{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
4133/**
4134 * An element must be an instance of type "FunctionalInput class".
4135 */
4136private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
4137 Type.name(type,"FunctionalInput class");
4138 find directInstanceOf(problem,interpretation,element,type);
4139}
4140private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
4141 find interpretation(problem,interpretation);
4142 PartialInterpretation.scopes(interpretation,scope);
4143 Scope.targetTypeInterpretation(scope,typeInterpretation);
4144 Scope.maxNewElements(scope,0);
4145 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
4146 Type.name(type,"FunctionalInput class");
4147}
4148
4149/**
4150 * An element may be an instance of type "FunctionalInput class".
4151 */
4152private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
4153{
4154 find interpretation(problem,interpretation);
4155 PartialInterpretation.newElements(interpretation,element);
4156 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
4157 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4158 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4159 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4160 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4161 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4162 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
4163 neg find isPrimitive(element);
4164} or {
4165 find interpretation(problem,interpretation);
4166 PartialInterpretation.openWorldElements(interpretation,element);
4167 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
4168 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4169 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4170 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4171 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4172 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4173 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
4174 neg find isPrimitive(element);
4175} or
4176{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
4177/**
4178 * An element must be an instance of type "FunctionalOutput class".
4179 */
4180private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
4181 Type.name(type,"FunctionalOutput class");
4182 find directInstanceOf(problem,interpretation,element,type);
4183}
4184private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
4185 find interpretation(problem,interpretation);
4186 PartialInterpretation.scopes(interpretation,scope);
4187 Scope.targetTypeInterpretation(scope,typeInterpretation);
4188 Scope.maxNewElements(scope,0);
4189 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
4190 Type.name(type,"FunctionalOutput class");
4191}
4192
4193/**
4194 * An element may be an instance of type "FunctionalOutput class".
4195 */
4196private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
4197{
4198 find interpretation(problem,interpretation);
4199 PartialInterpretation.newElements(interpretation,element);
4200 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4201 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4202 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4203 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
4204 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4205 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4206 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
4207 neg find isPrimitive(element);
4208} or {
4209 find interpretation(problem,interpretation);
4210 PartialInterpretation.openWorldElements(interpretation,element);
4211 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4212 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4213 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4214 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
4215 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4216 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4217 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
4218 neg find isPrimitive(element);
4219} or
4220{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
4221/**
4222 * An element must be an instance of type "FunctionalData class".
4223 */
4224private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
4225 Type.name(type,"FunctionalData class");
4226 find directInstanceOf(problem,interpretation,element,type);
4227}
4228private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
4229 find interpretation(problem,interpretation);
4230 PartialInterpretation.scopes(interpretation,scope);
4231 Scope.targetTypeInterpretation(scope,typeInterpretation);
4232 Scope.maxNewElements(scope,0);
4233 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
4234 Type.name(type,"FunctionalData class");
4235}
4236
4237/**
4238 * An element may be an instance of type "FunctionalData class".
4239 */
4240private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
4241{
4242 find interpretation(problem,interpretation);
4243 PartialInterpretation.newElements(interpretation,element);
4244 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
4245 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4246 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4247 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4248 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
4249 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4250 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4251 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
4252 neg find isPrimitive(element);
4253} or {
4254 find interpretation(problem,interpretation);
4255 PartialInterpretation.openWorldElements(interpretation,element);
4256 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
4257 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4258 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
4259 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4260 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
4261 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4262 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4263 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
4264 neg find isPrimitive(element);
4265} or
4266{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
4267/**
4268 * An element must be an instance of type "FunctionType enum".
4269 */
4270private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
4271 Type.name(type,"FunctionType enum");
4272 find directInstanceOf(problem,interpretation,element,type);
4273}
4274private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
4275 find interpretation(problem,interpretation);
4276 PartialInterpretation.scopes(interpretation,scope);
4277 Scope.targetTypeInterpretation(scope,typeInterpretation);
4278 Scope.maxNewElements(scope,0);
4279 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
4280 Type.name(type,"FunctionType enum");
4281}
4282
4283/**
4284 * An element may be an instance of type "FunctionType enum".
4285 */
4286private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
4287{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
4288/**
4289 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
4290 */
4291private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
4292 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
4293 find directInstanceOf(problem,interpretation,element,type);
4294}
4295private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
4296 find interpretation(problem,interpretation);
4297 PartialInterpretation.scopes(interpretation,scope);
4298 Scope.targetTypeInterpretation(scope,typeInterpretation);
4299 Scope.maxNewElements(scope,0);
4300 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
4301 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
4302}
4303
4304/**
4305 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
4306 */
4307private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
4308{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
4309/**
4310 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
4311 */
4312private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
4313 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
4314 find directInstanceOf(problem,interpretation,element,type);
4315}
4316private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
4317 find interpretation(problem,interpretation);
4318 PartialInterpretation.scopes(interpretation,scope);
4319 Scope.targetTypeInterpretation(scope,typeInterpretation);
4320 Scope.maxNewElements(scope,0);
4321 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
4322 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
4323}
4324
4325/**
4326 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
4327 */
4328private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
4329{
4330 find interpretation(problem,interpretation);
4331 PartialInterpretation.newElements(interpretation,element);
4332 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
4333 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4334 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4335 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4336 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4337 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
4338 neg find isPrimitive(element);
4339} or {
4340 find interpretation(problem,interpretation);
4341 PartialInterpretation.openWorldElements(interpretation,element);
4342 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
4343 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
4344 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
4345 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
4346 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
4347 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
4348 neg find isPrimitive(element);
4349} or
4350{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
4351
4352//////////
4353// 1.2 Relation Declaration Indexers
4354//////////
4355/**
4356 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
4357 */
4358private pattern mustInRelationinterface_reference_FunctionalElement(
4359 problem:LogicProblem, interpretation:PartialInterpretation,
4360 source: DefinedElement, target:DefinedElement)
4361{
4362 find interpretation(problem,interpretation);
4363 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4364 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
4365 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4366 BinaryElementRelationLink.param1(link,source);
4367 BinaryElementRelationLink.param2(link,target);
4368}
4369/**
4370 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
4371 */
4372private pattern mayInRelationinterface_reference_FunctionalElement(
4373 problem:LogicProblem, interpretation:PartialInterpretation,
4374 source: DefinedElement, target:DefinedElement)
4375{
4376 find interpretation(problem,interpretation);
4377 // The two endpoint of the link have to exist
4378 find mayExist(problem, interpretation, source);
4379 find mayExist(problem, interpretation, target);
4380 // Type consistency
4381 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
4382 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
4383 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
4384 // the upper bound of the multiplicity should be considered.
4385 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
4386 check(numberOfExistingReferences < 1);
4387 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
4388 // the upper bound of the opposite reference multiplicity should be considered.
4389 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
4390 check(numberOfExistingOppositeReferences < 1);
4391 // The reference is containment, then a new reference cannot be create if:
4392 // 1. Multiple parents
4393 neg find mustContains4(problem,interpretation,_,target);
4394 // 2. Circle in the containment hierarchy
4395 neg find mustTransitiveContains(source,target);
4396} or {
4397 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
4398}
4399/**
4400 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
4401 */
4402 private pattern mustInRelationmodel_reference_FunctionalElement(
4403 problem:LogicProblem, interpretation:PartialInterpretation,
4404 source: DefinedElement, target:DefinedElement)
4405 {
4406 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
4407 }
4408/**
4409 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
4410 */
4411 private pattern mayInRelationmodel_reference_FunctionalElement(
4412 problem:LogicProblem, interpretation:PartialInterpretation,
4413 source: DefinedElement, target:DefinedElement)
4414 {
4415 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
4416 }
4417/**
4418 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
4419 */
4420private pattern mustInRelationparent_reference_FunctionalElement(
4421 problem:LogicProblem, interpretation:PartialInterpretation,
4422 source: DefinedElement, target:DefinedElement)
4423{
4424 find interpretation(problem,interpretation);
4425 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4426 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
4427 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4428 BinaryElementRelationLink.param1(link,source);
4429 BinaryElementRelationLink.param2(link,target);
4430}
4431/**
4432 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
4433 */
4434private pattern mayInRelationparent_reference_FunctionalElement(
4435 problem:LogicProblem, interpretation:PartialInterpretation,
4436 source: DefinedElement, target:DefinedElement)
4437{
4438 find interpretation(problem,interpretation);
4439 // The two endpoint of the link have to exist
4440 find mayExist(problem, interpretation, source);
4441 find mayExist(problem, interpretation, target);
4442 // Type consistency
4443 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
4444 find mayInstanceOfFunction_class(problem,interpretation,target);
4445 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
4446 // the upper bound of the multiplicity should be considered.
4447 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
4448 check(numberOfExistingReferences < 1);
4449 // The eOpposite of the reference is containment, then a referene cannot be created if
4450 // 1. Multiple parents
4451 neg find mustContains4(problem,interpretation,source,_);
4452 // 2. Circle in the containment hierarchy
4453 neg find mustTransitiveContains(source,target);
4454} or {
4455 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
4456}
4457/**
4458 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
4459 */
4460private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
4461 problem:LogicProblem, interpretation:PartialInterpretation,
4462 source: DefinedElement, target:DefinedElement)
4463{
4464 find interpretation(problem,interpretation);
4465 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4466 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
4467 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4468 BinaryElementRelationLink.param1(link,source);
4469 BinaryElementRelationLink.param2(link,target);
4470}
4471/**
4472 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
4473 */
4474private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
4475 problem:LogicProblem, interpretation:PartialInterpretation,
4476 source: DefinedElement, target:DefinedElement)
4477{
4478 find interpretation(problem,interpretation);
4479 // The two endpoint of the link have to exist
4480 find mayExist(problem, interpretation, source);
4481 find mayExist(problem, interpretation, target);
4482 // Type consistency
4483 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
4484 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
4485 // The reference is containment, then a new reference cannot be create if:
4486 // 1. Multiple parents
4487 neg find mustContains4(problem,interpretation,_,target);
4488 // 2. Circle in the containment hierarchy
4489 neg find mustTransitiveContains(source,target);
4490} or {
4491 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
4492}
4493/**
4494 * Matcher for detecting tuples t where []subElements reference Function(source,target)
4495 */
4496private pattern mustInRelationsubElements_reference_Function(
4497 problem:LogicProblem, interpretation:PartialInterpretation,
4498 source: DefinedElement, target:DefinedElement)
4499{
4500 find interpretation(problem,interpretation);
4501 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4502 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
4503 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4504 BinaryElementRelationLink.param1(link,source);
4505 BinaryElementRelationLink.param2(link,target);
4506}
4507/**
4508 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
4509 */
4510private pattern mayInRelationsubElements_reference_Function(
4511 problem:LogicProblem, interpretation:PartialInterpretation,
4512 source: DefinedElement, target:DefinedElement)
4513{
4514 find interpretation(problem,interpretation);
4515 // The two endpoint of the link have to exist
4516 find mayExist(problem, interpretation, source);
4517 find mayExist(problem, interpretation, target);
4518 // Type consistency
4519 find mayInstanceOfFunction_class(problem,interpretation,source);
4520 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
4521 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
4522 // the upper bound of the opposite reference multiplicity should be considered.
4523 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
4524 check(numberOfExistingOppositeReferences < 1);
4525 // The reference is containment, then a new reference cannot be create if:
4526 // 1. Multiple parents
4527 neg find mustContains4(problem,interpretation,_,target);
4528 // 2. Circle in the containment hierarchy
4529 neg find mustTransitiveContains(source,target);
4530} or {
4531 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
4532}
4533/**
4534 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
4535 */
4536private pattern mustInRelationdata_reference_FAMTerminator(
4537 problem:LogicProblem, interpretation:PartialInterpretation,
4538 source: DefinedElement, target:DefinedElement)
4539{
4540 find interpretation(problem,interpretation);
4541 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4542 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
4543 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4544 BinaryElementRelationLink.param1(link,source);
4545 BinaryElementRelationLink.param2(link,target);
4546}
4547/**
4548 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
4549 */
4550private pattern mayInRelationdata_reference_FAMTerminator(
4551 problem:LogicProblem, interpretation:PartialInterpretation,
4552 source: DefinedElement, target:DefinedElement)
4553{
4554 find interpretation(problem,interpretation);
4555 // The two endpoint of the link have to exist
4556 find mayExist(problem, interpretation, source);
4557 find mayExist(problem, interpretation, target);
4558 // Type consistency
4559 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
4560 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
4561 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
4562 // the upper bound of the multiplicity should be considered.
4563 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
4564 check(numberOfExistingReferences < 1);
4565 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
4566 // the upper bound of the opposite reference multiplicity should be considered.
4567 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
4568 check(numberOfExistingOppositeReferences < 1);
4569 // The eOpposite of the reference is containment, then a referene cannot be created if
4570 // 1. Multiple parents
4571 neg find mustContains4(problem,interpretation,source,_);
4572 // 2. Circle in the containment hierarchy
4573 neg find mustTransitiveContains(source,target);
4574} or {
4575 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
4576}
4577/**
4578 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
4579 */
4580private pattern mustInRelationfrom_reference_InformationLink(
4581 problem:LogicProblem, interpretation:PartialInterpretation,
4582 source: DefinedElement, target:DefinedElement)
4583{
4584 find interpretation(problem,interpretation);
4585 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4586 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
4587 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4588 BinaryElementRelationLink.param1(link,source);
4589 BinaryElementRelationLink.param2(link,target);
4590}
4591/**
4592 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
4593 */
4594private pattern mayInRelationfrom_reference_InformationLink(
4595 problem:LogicProblem, interpretation:PartialInterpretation,
4596 source: DefinedElement, target:DefinedElement)
4597{
4598 find interpretation(problem,interpretation);
4599 // The two endpoint of the link have to exist
4600 find mayExist(problem, interpretation, source);
4601 find mayExist(problem, interpretation, target);
4602 // Type consistency
4603 find mayInstanceOfInformationLink_class(problem,interpretation,source);
4604 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
4605 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
4606 // the upper bound of the multiplicity should be considered.
4607 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
4608 check(numberOfExistingReferences < 1);
4609 // The eOpposite of the reference is containment, then a referene cannot be created if
4610 // 1. Multiple parents
4611 neg find mustContains4(problem,interpretation,source,_);
4612 // 2. Circle in the containment hierarchy
4613 neg find mustTransitiveContains(source,target);
4614} or {
4615 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
4616}
4617/**
4618 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
4619 */
4620private pattern mustInRelationto_reference_InformationLink(
4621 problem:LogicProblem, interpretation:PartialInterpretation,
4622 source: DefinedElement, target:DefinedElement)
4623{
4624 find interpretation(problem,interpretation);
4625 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4626 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
4627 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4628 BinaryElementRelationLink.param1(link,source);
4629 BinaryElementRelationLink.param2(link,target);
4630}
4631/**
4632 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
4633 */
4634private pattern mayInRelationto_reference_InformationLink(
4635 problem:LogicProblem, interpretation:PartialInterpretation,
4636 source: DefinedElement, target:DefinedElement)
4637{
4638 find interpretation(problem,interpretation);
4639 // The two endpoint of the link have to exist
4640 find mayExist(problem, interpretation, source);
4641 find mayExist(problem, interpretation, target);
4642 // Type consistency
4643 find mayInstanceOfInformationLink_class(problem,interpretation,source);
4644 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
4645 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
4646 // the upper bound of the multiplicity should be considered.
4647 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
4648 check(numberOfExistingReferences < 1);
4649} or {
4650 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
4651}
4652/**
4653 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
4654 */
4655private pattern mustInRelationdata_reference_FunctionalInterface(
4656 problem:LogicProblem, interpretation:PartialInterpretation,
4657 source: DefinedElement, target:DefinedElement)
4658{
4659 find interpretation(problem,interpretation);
4660 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4661 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
4662 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4663 BinaryElementRelationLink.param1(link,source);
4664 BinaryElementRelationLink.param2(link,target);
4665}
4666/**
4667 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
4668 */
4669private pattern mayInRelationdata_reference_FunctionalInterface(
4670 problem:LogicProblem, interpretation:PartialInterpretation,
4671 source: DefinedElement, target:DefinedElement)
4672{
4673 find interpretation(problem,interpretation);
4674 // The two endpoint of the link have to exist
4675 find mayExist(problem, interpretation, source);
4676 find mayExist(problem, interpretation, target);
4677 // Type consistency
4678 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
4679 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
4680 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
4681 // the upper bound of the opposite reference multiplicity should be considered.
4682 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
4683 check(numberOfExistingOppositeReferences < 1);
4684 // The reference is containment, then a new reference cannot be create if:
4685 // 1. Multiple parents
4686 neg find mustContains4(problem,interpretation,_,target);
4687 // 2. Circle in the containment hierarchy
4688 neg find mustTransitiveContains(source,target);
4689} or {
4690 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
4691}
4692/**
4693 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
4694 */
4695private pattern mustInRelationelement_reference_FunctionalInterface(
4696 problem:LogicProblem, interpretation:PartialInterpretation,
4697 source: DefinedElement, target:DefinedElement)
4698{
4699 find interpretation(problem,interpretation);
4700 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4701 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
4702 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4703 BinaryElementRelationLink.param1(link,source);
4704 BinaryElementRelationLink.param2(link,target);
4705}
4706/**
4707 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
4708 */
4709private pattern mayInRelationelement_reference_FunctionalInterface(
4710 problem:LogicProblem, interpretation:PartialInterpretation,
4711 source: DefinedElement, target:DefinedElement)
4712{
4713 find interpretation(problem,interpretation);
4714 // The two endpoint of the link have to exist
4715 find mayExist(problem, interpretation, source);
4716 find mayExist(problem, interpretation, target);
4717 // Type consistency
4718 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
4719 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
4720 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
4721 // the upper bound of the multiplicity should be considered.
4722 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
4723 check(numberOfExistingReferences < 1);
4724 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
4725 // the upper bound of the opposite reference multiplicity should be considered.
4726 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
4727 check(numberOfExistingOppositeReferences < 1);
4728 // The eOpposite of the reference is containment, then a referene cannot be created if
4729 // 1. Multiple parents
4730 neg find mustContains4(problem,interpretation,source,_);
4731 // 2. Circle in the containment hierarchy
4732 neg find mustTransitiveContains(source,target);
4733} or {
4734 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
4735}
4736/**
4737 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
4738 */
4739private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
4740 problem:LogicProblem, interpretation:PartialInterpretation,
4741 source: DefinedElement, target:DefinedElement)
4742{
4743 find interpretation(problem,interpretation);
4744 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4745 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
4746 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4747 BinaryElementRelationLink.param1(link,source);
4748 BinaryElementRelationLink.param2(link,target);
4749}
4750/**
4751 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
4752 */
4753private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
4754 problem:LogicProblem, interpretation:PartialInterpretation,
4755 source: DefinedElement, target:DefinedElement)
4756{
4757 find interpretation(problem,interpretation);
4758 // The two endpoint of the link have to exist
4759 find mayExist(problem, interpretation, source);
4760 find mayExist(problem, interpretation, target);
4761 // Type consistency
4762 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
4763 find mayInstanceOfInformationLink_class(problem,interpretation,target);
4764 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
4765 // the upper bound of the opposite reference multiplicity should be considered.
4766 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
4767 check(numberOfExistingOppositeReferences < 1);
4768} or {
4769 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
4770}
4771/**
4772 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
4773 */
4774private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
4775 problem:LogicProblem, interpretation:PartialInterpretation,
4776 source: DefinedElement, target:DefinedElement)
4777{
4778 find interpretation(problem,interpretation);
4779 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4780 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
4781 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4782 BinaryElementRelationLink.param1(link,source);
4783 BinaryElementRelationLink.param2(link,target);
4784}
4785/**
4786 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
4787 */
4788private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
4789 problem:LogicProblem, interpretation:PartialInterpretation,
4790 source: DefinedElement, target:DefinedElement)
4791{
4792 find interpretation(problem,interpretation);
4793 // The two endpoint of the link have to exist
4794 find mayExist(problem, interpretation, source);
4795 find mayExist(problem, interpretation, target);
4796 // Type consistency
4797 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
4798 find mayInstanceOfInformationLink_class(problem,interpretation,target);
4799 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
4800 // the upper bound of the opposite reference multiplicity should be considered.
4801 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
4802 check(numberOfExistingOppositeReferences < 1);
4803 // The reference is containment, then a new reference cannot be create if:
4804 // 1. Multiple parents
4805 neg find mustContains4(problem,interpretation,_,target);
4806 // 2. Circle in the containment hierarchy
4807 neg find mustTransitiveContains(source,target);
4808} or {
4809 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
4810}
4811/**
4812 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
4813 */
4814private pattern mustInRelationterminator_reference_FunctionalData(
4815 problem:LogicProblem, interpretation:PartialInterpretation,
4816 source: DefinedElement, target:DefinedElement)
4817{
4818 find interpretation(problem,interpretation);
4819 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4820 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
4821 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4822 BinaryElementRelationLink.param1(link,source);
4823 BinaryElementRelationLink.param2(link,target);
4824}
4825/**
4826 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
4827 */
4828private pattern mayInRelationterminator_reference_FunctionalData(
4829 problem:LogicProblem, interpretation:PartialInterpretation,
4830 source: DefinedElement, target:DefinedElement)
4831{
4832 find interpretation(problem,interpretation);
4833 // The two endpoint of the link have to exist
4834 find mayExist(problem, interpretation, source);
4835 find mayExist(problem, interpretation, target);
4836 // Type consistency
4837 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
4838 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
4839 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
4840 // the upper bound of the multiplicity should be considered.
4841 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
4842 check(numberOfExistingReferences < 1);
4843 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
4844 // the upper bound of the opposite reference multiplicity should be considered.
4845 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
4846 check(numberOfExistingOppositeReferences < 1);
4847 // The reference is containment, then a new reference cannot be create if:
4848 // 1. Multiple parents
4849 neg find mustContains4(problem,interpretation,_,target);
4850 // 2. Circle in the containment hierarchy
4851 neg find mustTransitiveContains(source,target);
4852} or {
4853 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
4854}
4855/**
4856 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
4857 */
4858private pattern mustInRelationinterface_reference_FunctionalData(
4859 problem:LogicProblem, interpretation:PartialInterpretation,
4860 source: DefinedElement, target:DefinedElement)
4861{
4862 find interpretation(problem,interpretation);
4863 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
4864 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
4865 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
4866 BinaryElementRelationLink.param1(link,source);
4867 BinaryElementRelationLink.param2(link,target);
4868}
4869/**
4870 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
4871 */
4872private pattern mayInRelationinterface_reference_FunctionalData(
4873 problem:LogicProblem, interpretation:PartialInterpretation,
4874 source: DefinedElement, target:DefinedElement)
4875{
4876 find interpretation(problem,interpretation);
4877 // The two endpoint of the link have to exist
4878 find mayExist(problem, interpretation, source);
4879 find mayExist(problem, interpretation, target);
4880 // Type consistency
4881 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
4882 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
4883 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
4884 // the upper bound of the multiplicity should be considered.
4885 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
4886 check(numberOfExistingReferences < 1);
4887 // The eOpposite of the reference is containment, then a referene cannot be created if
4888 // 1. Multiple parents
4889 neg find mustContains4(problem,interpretation,source,_);
4890 // 2. Circle in the containment hierarchy
4891 neg find mustTransitiveContains(source,target);
4892} or {
4893 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
4894}
4895/**
4896 * Matcher for detecting tuples t where []type attribute Function(source,target)
4897 */
4898 private pattern mustInRelationtype_attribute_Function(
4899 problem:LogicProblem, interpretation:PartialInterpretation,
4900 source: DefinedElement, target:DefinedElement)
4901 {
4902 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
4903 }
4904/**
4905 * Matcher for detecting tuples t where []type attribute Function(source,target)
4906 */
4907 private pattern mayInRelationtype_attribute_Function(
4908 problem:LogicProblem, interpretation:PartialInterpretation,
4909 source: DefinedElement, target:DefinedElement)
4910 {
4911 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
4912 }
4913
4914//////////
4915// 1.3 Relation Definition Indexers
4916//////////
4917// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation
4918private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
4919 problem:LogicProblem, interpretation:PartialInterpretation,
4920 var_T, var_I)
4921{
4922 find interpretation(problem,interpretation);
4923 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
4924 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
4925 // T is exported
4926 // I is exported
4927 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
4928 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
4929 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
4930 var_virtual0 == var_I;
4931 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
4932 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
4933 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
4934 var_virtual1 == var_T;
4935}or{
4936 find interpretation(problem,interpretation);
4937 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
4938 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
4939 // T is exported
4940 // I is exported
4941 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
4942 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
4943 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
4944 var_virtual0 == var_In;
4945 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
4946 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
4947 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
4948 var_virtual1 == var_T;
4949}
4950private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
4951 problem:LogicProblem, interpretation:PartialInterpretation,
4952 var_T, var_I)
4953{
4954 find interpretation(problem,interpretation);
4955 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
4956 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
4957 // T is exported
4958 // I is exported
4959 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
4960 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
4961 find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
4962 find mayEquivalent(problem, interpretation, var_virtual0, var_I);
4963 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
4964 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
4965 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
4966 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
4967}or{
4968 find interpretation(problem,interpretation);
4969 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
4970 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
4971 // T is exported
4972 // I is exported
4973 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
4974 find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
4975 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
4976 find mayEquivalent(problem, interpretation, var_virtual0, var_In);
4977 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In);
4978 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
4979 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
4980 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
4981}
4982private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
4983 problem:LogicProblem, interpretation:PartialInterpretation,
4984 var_T, var_I)
4985{
4986 find interpretation(problem,interpretation);
4987 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
4988 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
4989 // T is exported
4990 // I is exported
4991 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
4992 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
4993 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
4994 var_virtual0 == var_I;
4995 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
4996 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
4997 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
4998 var_virtual1 == var_T;
4999}or{
5000 find interpretation(problem,interpretation);
5001 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
5002 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
5003 // T is exported
5004 // I is exported
5005 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
5006 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
5007 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
5008 var_virtual0 == var_In;
5009 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
5010 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
5011 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
5012 var_virtual1 == var_T;
5013}
5014// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type
5015private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
5016 problem:LogicProblem, interpretation:PartialInterpretation,
5017 var_This, var_Target)
5018{
5019 find interpretation(problem,interpretation);
5020 find mustInstanceOfFunction_class(problem,interpretation,var_This);
5021 // type constraint is enforced by construction
5022 // This is exported
5023 // Target is exported
5024 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
5025 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
5026 var_Target == var_virtual0;
5027}or{
5028 find interpretation(problem,interpretation);
5029 find mustInstanceOfFunction_class(problem,interpretation,var_This);
5030 // type constraint is enforced by construction
5031 // This is exported
5032 // Target is exported
5033 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
5034 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
5035 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
5036 var_Target == var_virtual0;
5037}or{
5038 find interpretation(problem,interpretation);
5039 find mustInstanceOfFunction_class(problem,interpretation,var_This);
5040 // type constraint is enforced by construction
5041 // This is exported
5042 // Target is exported
5043 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
5044 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
5045 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
5046 var_Target == var_virtual0;
5047}
5048private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
5049 problem:LogicProblem, interpretation:PartialInterpretation,
5050 var_This, var_Target)
5051{
5052 find interpretation(problem,interpretation);
5053 find mayInstanceOfFunction_class(problem,interpretation,var_This);
5054 // type constraint is enforced by construction
5055 // This is exported
5056 // Target is exported
5057 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
5058 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
5059 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
5060}or{
5061 find interpretation(problem,interpretation);
5062 find mayInstanceOfFunction_class(problem,interpretation,var_This);
5063 // type constraint is enforced by construction
5064 // This is exported
5065 // Target is exported
5066 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
5067 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
5068 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
5069 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
5070}or{
5071 find interpretation(problem,interpretation);
5072 find mayInstanceOfFunction_class(problem,interpretation,var_This);
5073 // type constraint is enforced by construction
5074 // This is exported
5075 // Target is exported
5076 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
5077 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
5078 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
5079 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
5080}
5081private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
5082 problem:LogicProblem, interpretation:PartialInterpretation,
5083 var_This, var_Target)
5084{
5085 find interpretation(problem,interpretation);
5086 find mustInstanceOfFunction_class(problem,interpretation,var_This);
5087 // type constraint is enforced by construction
5088 // This is exported
5089 // Target is exported
5090 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
5091 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
5092 var_Target == var_virtual0;
5093}or{
5094 find interpretation(problem,interpretation);
5095 find mustInstanceOfFunction_class(problem,interpretation,var_This);
5096 // type constraint is enforced by construction
5097 // This is exported
5098 // Target is exported
5099 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
5100 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
5101 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
5102 var_Target == var_virtual0;
5103}or{
5104 find interpretation(problem,interpretation);
5105 find mustInstanceOfFunction_class(problem,interpretation,var_This);
5106 // type constraint is enforced by construction
5107 // This is exported
5108 // Target is exported
5109 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
5110 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
5111 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
5112 var_Target == var_virtual0;
5113}
5114// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements
5115private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
5116 problem:LogicProblem, interpretation:PartialInterpretation,
5117 var_Model, var_Root)
5118{
5119 find interpretation(problem,interpretation);
5120 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
5121 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
5122 // Model is exported
5123 // Root is exported
5124 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
5125 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
5126 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
5127 var_virtual0 == var_Root;
5128}
5129private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
5130 problem:LogicProblem, interpretation:PartialInterpretation,
5131 var_Model, var_Root)
5132{
5133 find interpretation(problem,interpretation);
5134 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
5135 find mayInstanceOfFunction_class(problem,interpretation,var_Root);
5136 // Model is exported
5137 // Root is exported
5138 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
5139 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
5140 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
5141 find mayEquivalent(problem, interpretation, var_virtual0, var_Root);
5142}
5143private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
5144 problem:LogicProblem, interpretation:PartialInterpretation,
5145 var_Model, var_Root)
5146{
5147 find interpretation(problem,interpretation);
5148 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
5149 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
5150 // Model is exported
5151 // Root is exported
5152 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
5153 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
5154 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
5155 var_virtual0 == var_Root;
5156}
5157// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent
5158private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
5159 problem:LogicProblem, interpretation:PartialInterpretation,
5160 var_Func, var_Par)
5161{
5162 find interpretation(problem,interpretation);
5163 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
5164 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
5165 // Func is exported
5166 // Par is exported
5167 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
5168 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
5169 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
5170 var_virtual0 == var_Par;
5171}
5172private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
5173 problem:LogicProblem, interpretation:PartialInterpretation,
5174 var_Func, var_Par)
5175{
5176 find interpretation(problem,interpretation);
5177 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
5178 find mayInstanceOfFunction_class(problem,interpretation,var_Par);
5179 // Func is exported
5180 // Par is exported
5181 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
5182 find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
5183 find mayInstanceOfFunction_class(problem,interpretation,var_virtual0);
5184 find mayEquivalent(problem, interpretation, var_virtual0, var_Par);
5185}
5186private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
5187 problem:LogicProblem, interpretation:PartialInterpretation,
5188 var_Func, var_Par)
5189{
5190 find interpretation(problem,interpretation);
5191 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
5192 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
5193 // Func is exported
5194 // Par is exported
5195 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
5196 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
5197 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
5198 var_virtual0 == var_Par;
5199}
5200// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model
5201private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
5202 problem:LogicProblem, interpretation:PartialInterpretation,
5203 var_This, var_Target)
5204{
5205 find interpretation(problem,interpretation);
5206 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
5207 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
5208 // This is exported
5209 // Target is exported
5210 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
5211 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
5212}
5213private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
5214 problem:LogicProblem, interpretation:PartialInterpretation,
5215 var_This, var_Target)
5216{
5217 find interpretation(problem,interpretation);
5218 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
5219 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
5220 // This is exported
5221 // Target is exported
5222 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
5223 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
5224}
5225private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
5226 problem:LogicProblem, interpretation:PartialInterpretation,
5227 var_This, var_Target)
5228{
5229 find interpretation(problem,interpretation);
5230 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
5231 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
5232 // This is exported
5233 // Target is exported
5234 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
5235 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
5236}
5237
5238//////////
5239// 1.4 Containment Indexer
5240//////////
5241private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
5242 find mustContains4(_,_,source,target);
5243}
5244
5245private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
5246 source: DefinedElement, target: DefinedElement)
5247 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
5248
5249 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
5250
5251 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
5252
5253 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
5254
5255 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
5256
5257 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
5258
5259private pattern mustTransitiveContains(source,target) {
5260 find mustContains2+(source,target);
5261}
5262
5263//////////
5264// 2. Invalidation Indexers
5265//////////
5266// 2.1 Invalidated by WF Queries
5267//////////
5268
5269//////////
5270// 3. Unfinishedness Indexers
5271//////////
5272// 3.1 Unfinishedness Measured by Multiplicity
5273//////////
5274pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
5275 find interpretation(problem,interpretation);
5276 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5277 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
5278 find mustInstanceOfInformationLink_class(problem,interpretation,object);
5279 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
5280 check(numberOfExistingReferences < 1);
5281 missingMultiplicity == eval(1-numberOfExistingReferences);
5282}
5283
5284//////////
5285// 3.2 Unfinishedness Measured by WF Queries
5286//////////
5287
5288//////////
5289// 4. Refinement Indexers
5290//////////
5291// 4.1 Object constructors
5292//////////
5293private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
5294{
5295 find interpretation(problem,interpretation);
5296 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
5297 find mustExist(problem, interpretation, root);
5298}or{
5299 find interpretation(problem,interpretation);
5300 find mustInstanceOfInformationLink_class(problem,interpretation,root);
5301 find mustExist(problem, interpretation, root);
5302}or{
5303 find interpretation(problem,interpretation);
5304 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
5305 find mustExist(problem, interpretation, root);
5306}or{
5307 find interpretation(problem,interpretation);
5308 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
5309 find mustExist(problem, interpretation, root);
5310}or{
5311 find interpretation(problem,interpretation);
5312 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
5313 find mustExist(problem, interpretation, root);
5314}or{
5315 find interpretation(problem,interpretation);
5316 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
5317 find mustExist(problem, interpretation, root);
5318}or{
5319 find interpretation(problem,interpretation);
5320 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
5321 find mustExist(problem, interpretation, root);
5322}or{
5323 find interpretation(problem,interpretation);
5324 find mustInstanceOfFunction_class(problem,interpretation,root);
5325 find mustExist(problem, interpretation, root);
5326}or{
5327 find interpretation(problem,interpretation);
5328 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
5329 find mustExist(problem, interpretation, root);
5330}or{
5331 find interpretation(problem,interpretation);
5332 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
5333 find mustExist(problem, interpretation, root);
5334}or{
5335 find interpretation(problem,interpretation);
5336 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
5337 find mustExist(problem, interpretation, root);
5338}
5339pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
5340 problem:LogicProblem, interpretation:PartialInterpretation,
5341 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
5342 container:DefinedElement)
5343{
5344 find interpretation(problem,interpretation);
5345 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5346 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
5347 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
5348 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
5349 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
5350 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
5351 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
5352 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
5353 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
5354 find mustExist(problem, interpretation, container);
5355 neg find mustExist(problem, interpretation, newObject);
5356}
5357pattern createObject_FunctionalOutput_class(
5358 problem:LogicProblem, interpretation:PartialInterpretation,
5359 typeInterpretation:PartialComplexTypeInterpretation)
5360{
5361 find interpretation(problem,interpretation);
5362 neg find hasElementInContainment(problem,interpretation);
5363 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5364 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
5365 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
5366 find mayExist(problem, interpretation, newObject);
5367 neg find mustExist(problem, interpretation, newObject);
5368}
5369pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
5370 problem:LogicProblem, interpretation:PartialInterpretation,
5371 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
5372 container:DefinedElement)
5373{
5374 find interpretation(problem,interpretation);
5375 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5376 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
5377 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
5378 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
5379 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
5380 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
5381 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
5382 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
5383 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
5384 find mustExist(problem, interpretation, container);
5385 neg find mustExist(problem, interpretation, newObject);
5386}
5387pattern createObject_FAMTerminator_class(
5388 problem:LogicProblem, interpretation:PartialInterpretation,
5389 typeInterpretation:PartialComplexTypeInterpretation)
5390{
5391 find interpretation(problem,interpretation);
5392 neg find hasElementInContainment(problem,interpretation);
5393 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5394 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
5395 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
5396 find mayExist(problem, interpretation, newObject);
5397 neg find mustExist(problem, interpretation, newObject);
5398}
5399pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
5400 problem:LogicProblem, interpretation:PartialInterpretation,
5401 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
5402 container:DefinedElement)
5403{
5404 find interpretation(problem,interpretation);
5405 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5406 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
5407 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
5408 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
5409 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
5410 find mayInstanceOfFunction_class(problem,interpretation,newObject);
5411 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
5412 find mustExist(problem, interpretation, container);
5413 neg find mustExist(problem, interpretation, newObject);
5414}
5415pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
5416 problem:LogicProblem, interpretation:PartialInterpretation,
5417 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
5418 container:DefinedElement)
5419{
5420 find interpretation(problem,interpretation);
5421 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5422 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
5423 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
5424 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
5425 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
5426 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
5427 find mustInstanceOfFunction_class(problem,interpretation,container);
5428 find mayInstanceOfFunction_class(problem,interpretation,newObject);
5429 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
5430 find mustExist(problem, interpretation, container);
5431 neg find mustExist(problem, interpretation, newObject);
5432}
5433pattern createObject_Function_class(
5434 problem:LogicProblem, interpretation:PartialInterpretation,
5435 typeInterpretation:PartialComplexTypeInterpretation)
5436{
5437 find interpretation(problem,interpretation);
5438 neg find hasElementInContainment(problem,interpretation);
5439 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5440 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
5441 find mayInstanceOfFunction_class(problem,interpretation,newObject);
5442 find mayExist(problem, interpretation, newObject);
5443 neg find mustExist(problem, interpretation, newObject);
5444}
5445pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
5446 problem:LogicProblem, interpretation:PartialInterpretation,
5447 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
5448 container:DefinedElement)
5449{
5450 find interpretation(problem,interpretation);
5451 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5452 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
5453 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
5454 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
5455 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
5456 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
5457 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
5458 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
5459 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
5460 find mustExist(problem, interpretation, container);
5461 neg find mustExist(problem, interpretation, newObject);
5462}
5463pattern createObject_FunctionalInput_class(
5464 problem:LogicProblem, interpretation:PartialInterpretation,
5465 typeInterpretation:PartialComplexTypeInterpretation)
5466{
5467 find interpretation(problem,interpretation);
5468 neg find hasElementInContainment(problem,interpretation);
5469 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5470 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
5471 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
5472 find mayExist(problem, interpretation, newObject);
5473 neg find mustExist(problem, interpretation, newObject);
5474}
5475pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
5476 problem:LogicProblem, interpretation:PartialInterpretation,
5477 typeInterpretation:PartialComplexTypeInterpretation)
5478{
5479 find interpretation(problem,interpretation);
5480 neg find hasElementInContainment(problem,interpretation);
5481 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5482 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
5483 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
5484 find mayExist(problem, interpretation, newObject);
5485 neg find mustExist(problem, interpretation, newObject);
5486}
5487pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
5488 problem:LogicProblem, interpretation:PartialInterpretation,
5489 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
5490 container:DefinedElement)
5491{
5492 find interpretation(problem,interpretation);
5493 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5494 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
5495 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
5496 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
5497 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
5498 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
5499 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
5500 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
5501 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
5502 find mustExist(problem, interpretation, container);
5503 neg find mustExist(problem, interpretation, newObject);
5504}
5505pattern createObject_FunctionalInterface_class(
5506 problem:LogicProblem, interpretation:PartialInterpretation,
5507 typeInterpretation:PartialComplexTypeInterpretation)
5508{
5509 find interpretation(problem,interpretation);
5510 neg find hasElementInContainment(problem,interpretation);
5511 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5512 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
5513 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
5514 find mayExist(problem, interpretation, newObject);
5515 neg find mustExist(problem, interpretation, newObject);
5516}
5517pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
5518 problem:LogicProblem, interpretation:PartialInterpretation,
5519 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
5520 container:DefinedElement)
5521{
5522 find interpretation(problem,interpretation);
5523 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5524 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
5525 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
5526 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
5527 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
5528 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
5529 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
5530 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
5531 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
5532 find mustExist(problem, interpretation, container);
5533 neg find mustExist(problem, interpretation, newObject);
5534}
5535pattern createObject_InformationLink_class(
5536 problem:LogicProblem, interpretation:PartialInterpretation,
5537 typeInterpretation:PartialComplexTypeInterpretation)
5538{
5539 find interpretation(problem,interpretation);
5540 neg find hasElementInContainment(problem,interpretation);
5541 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5542 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
5543 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
5544 find mayExist(problem, interpretation, newObject);
5545 neg find mustExist(problem, interpretation, newObject);
5546}
5547
5548//////////
5549// 4.2 Type refinement
5550//////////
5551pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
5552 find interpretation(problem,interpretation);
5553 PartialInterpretation.newElements(interpretation,element);
5554 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
5555 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
5556 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5557 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5558 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5559 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
5560 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5561 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5562}
5563pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
5564 find interpretation(problem,interpretation);
5565 PartialInterpretation.newElements(interpretation,element);
5566 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
5567 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5568 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5569 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5570 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5571 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5572 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5573}
5574pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
5575 find interpretation(problem,interpretation);
5576 PartialInterpretation.newElements(interpretation,element);
5577 find mayInstanceOfFunction_class(problem,interpretation,element);
5578 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5579 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5580 neg find mustInstanceOfFunction_class(problem,interpretation,element);
5581 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5582 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5583 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5584}
5585pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
5586 find interpretation(problem,interpretation);
5587 PartialInterpretation.newElements(interpretation,element);
5588 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
5589 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
5590 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5591 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5592 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5593 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
5594 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5595 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5596}
5597pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
5598 find interpretation(problem,interpretation);
5599 PartialInterpretation.newElements(interpretation,element);
5600 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
5601 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5602 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5603 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5604 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
5605 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5606 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5607}
5608pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
5609 find interpretation(problem,interpretation);
5610 PartialInterpretation.newElements(interpretation,element);
5611 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
5612 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5613 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5614 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5615 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5616 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5617 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5618}
5619pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
5620 find interpretation(problem,interpretation);
5621 PartialInterpretation.newElements(interpretation,element);
5622 find mayInstanceOfInformationLink_class(problem,interpretation,element);
5623 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5624 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5625 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5626 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5627 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5628 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5629}
5630
5631//////////
5632// 4.3 Relation refinement
5633//////////
5634pattern refineRelation_model_reference_FunctionalElement(
5635 problem:LogicProblem, interpretation:PartialInterpretation,
5636 relationIterpretation:PartialRelationInterpretation,
5637 from: DefinedElement, to: DefinedElement)
5638{
5639 find interpretation(problem,interpretation);
5640 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5641 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
5642 find mustExist(problem, interpretation, from);
5643 find mustExist(problem, interpretation, to);
5644 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
5645 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
5646 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
5647 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
5648}
5649pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
5650 problem:LogicProblem, interpretation:PartialInterpretation,
5651 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
5652 from: DefinedElement, to: DefinedElement)
5653{
5654 find interpretation(problem,interpretation);
5655 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5656 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
5657 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
5658 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
5659 find mustExist(problem, interpretation, from);
5660 find mustExist(problem, interpretation, to);
5661 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
5662 find mustInstanceOfInformationLink_class(problem,interpretation,to);
5663 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
5664 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
5665}
5666pattern refineRelation_type_attribute_Function(
5667 problem:LogicProblem, interpretation:PartialInterpretation,
5668 relationIterpretation:PartialRelationInterpretation,
5669 from: DefinedElement, to: DefinedElement)
5670{
5671 find interpretation(problem,interpretation);
5672 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
5673 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
5674 find mustExist(problem, interpretation, from);
5675 find mustExist(problem, interpretation, to);
5676 find mustInstanceOfFunction_class(problem,interpretation,from);
5677 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
5678 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
5679 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
5680}
5681import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
5682import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
5683import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
5684
5685//////////
5686// 0. Util
5687//////////
5688private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
5689 PartialInterpretation.problem(interpretation,problem);
5690}
5691
5692/////////////////////////
5693// 0.1 Existence
5694/////////////////////////
5695private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5696 find interpretation(problem,interpretation);
5697 LogicProblem.elements(problem,element);
5698} or {
5699 find interpretation(problem,interpretation);
5700 PartialInterpretation.newElements(interpretation,element);
5701}
5702
5703private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5704 find mustExist(problem,interpretation,element);
5705} or {
5706 find interpretation(problem,interpretation);
5707 neg find elementCloseWorld(element);
5708 PartialInterpretation.openWorldElements(interpretation,element);
5709}
5710
5711private pattern elementCloseWorld(element:DefinedElement) {
5712 PartialInterpretation.openWorldElements(i,element);
5713 PartialInterpretation.maxNewElements(i,0);
5714} or {
5715 Scope.targetTypeInterpretation(scope,interpretation);
5716 PartialTypeInterpratation.elements(interpretation,element);
5717 Scope.maxNewElements(scope,0);
5718}
5719
5720////////////////////////
5721// 0.2 Equivalence
5722////////////////////////
5723pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
5724 find mayExist(problem,interpretation,a);
5725 find mayExist(problem,interpretation,b);
5726 a == b;
5727}
5728
5729////////////////////////
5730// 0.3 Required Patterns by TypeIndexer
5731////////////////////////
5732private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
5733 find interpretation(problem,interpretation);
5734 LogicProblem.types(problem,type);
5735 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
5736 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5737}
5738
5739private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
5740 find interpretation(problem,interpretation);
5741 LogicProblem.types(problem,type);
5742 TypeDefinition.elements(type,element);
5743} or {
5744 find interpretation(problem,interpretation);
5745 find typeInterpretation(problem,interpretation,type,typeInterpretation);
5746 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
5747}
5748
5749private pattern isPrimitive(element: PrimitiveElement) {
5750 PrimitiveElement(element);
5751}
5752
5753//////////
5754// 1. Problem-Specific Base Indexers
5755//////////
5756// 1.1 Type Indexers
5757//////////
5758// 1.1.1 primitive Type Indexers
5759//////////
5760
5761//////////
5762// 1.1.2 domain-specific Type Indexers
5763//////////
5764/**
5765 * An element must be an instance of type "FunctionalElement class".
5766 */
5767private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5768 Type.name(type,"FunctionalElement class");
5769 find directInstanceOf(problem,interpretation,element,type);
5770}
5771private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5772 find interpretation(problem,interpretation);
5773 PartialInterpretation.scopes(interpretation,scope);
5774 Scope.targetTypeInterpretation(scope,typeInterpretation);
5775 Scope.maxNewElements(scope,0);
5776 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5777 Type.name(type,"FunctionalElement class");
5778}
5779
5780/**
5781 * An element may be an instance of type "FunctionalElement class".
5782 */
5783private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5784{
5785 find interpretation(problem,interpretation);
5786 PartialInterpretation.newElements(interpretation,element);
5787 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5788 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5789 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5790 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5791 neg find mustInstanceOfFunction_class(problem,interpretation,element);
5792 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5793 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
5794 neg find isPrimitive(element);
5795} or {
5796 find interpretation(problem,interpretation);
5797 PartialInterpretation.openWorldElements(interpretation,element);
5798 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5799 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5800 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5801 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5802 neg find mustInstanceOfFunction_class(problem,interpretation,element);
5803 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5804 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
5805 neg find isPrimitive(element);
5806} or
5807{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
5808/**
5809 * An element must be an instance of type "FunctionalArchitectureModel class".
5810 */
5811private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5812 Type.name(type,"FunctionalArchitectureModel class");
5813 find directInstanceOf(problem,interpretation,element,type);
5814}
5815private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5816 find interpretation(problem,interpretation);
5817 PartialInterpretation.scopes(interpretation,scope);
5818 Scope.targetTypeInterpretation(scope,typeInterpretation);
5819 Scope.maxNewElements(scope,0);
5820 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5821 Type.name(type,"FunctionalArchitectureModel class");
5822}
5823
5824/**
5825 * An element may be an instance of type "FunctionalArchitectureModel class".
5826 */
5827private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5828{
5829 find interpretation(problem,interpretation);
5830 PartialInterpretation.newElements(interpretation,element);
5831 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5832 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5833 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5834 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5835 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
5836 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5837 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
5838 neg find isPrimitive(element);
5839} or {
5840 find interpretation(problem,interpretation);
5841 PartialInterpretation.openWorldElements(interpretation,element);
5842 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5843 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5844 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5845 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5846 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
5847 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5848 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
5849 neg find isPrimitive(element);
5850} or
5851{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
5852/**
5853 * An element must be an instance of type "Function class".
5854 */
5855private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5856 Type.name(type,"Function class");
5857 find directInstanceOf(problem,interpretation,element,type);
5858}
5859private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5860 find interpretation(problem,interpretation);
5861 PartialInterpretation.scopes(interpretation,scope);
5862 Scope.targetTypeInterpretation(scope,typeInterpretation);
5863 Scope.maxNewElements(scope,0);
5864 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5865 Type.name(type,"Function class");
5866}
5867
5868/**
5869 * An element may be an instance of type "Function class".
5870 */
5871private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5872{
5873 find interpretation(problem,interpretation);
5874 PartialInterpretation.newElements(interpretation,element);
5875 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5876 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5877 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5878 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5879 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5880 neg find scopeDisallowsNewFunction_class(problem, interpretation);
5881 neg find isPrimitive(element);
5882} or {
5883 find interpretation(problem,interpretation);
5884 PartialInterpretation.openWorldElements(interpretation,element);
5885 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5886 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5887 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5888 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5889 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5890 neg find scopeDisallowsNewFunction_class(problem, interpretation);
5891 neg find isPrimitive(element);
5892} or
5893{ find mustInstanceOfFunction_class(problem,interpretation,element); }
5894/**
5895 * An element must be an instance of type "FAMTerminator class".
5896 */
5897private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5898 Type.name(type,"FAMTerminator class");
5899 find directInstanceOf(problem,interpretation,element,type);
5900}
5901private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5902 find interpretation(problem,interpretation);
5903 PartialInterpretation.scopes(interpretation,scope);
5904 Scope.targetTypeInterpretation(scope,typeInterpretation);
5905 Scope.maxNewElements(scope,0);
5906 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5907 Type.name(type,"FAMTerminator class");
5908}
5909
5910/**
5911 * An element may be an instance of type "FAMTerminator class".
5912 */
5913private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5914{
5915 find interpretation(problem,interpretation);
5916 PartialInterpretation.newElements(interpretation,element);
5917 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5918 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5919 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5920 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5921 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5922 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
5923 neg find isPrimitive(element);
5924} or {
5925 find interpretation(problem,interpretation);
5926 PartialInterpretation.openWorldElements(interpretation,element);
5927 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5928 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5929 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5930 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
5931 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5932 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
5933 neg find isPrimitive(element);
5934} or
5935{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
5936/**
5937 * An element must be an instance of type "InformationLink class".
5938 */
5939private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5940 Type.name(type,"InformationLink class");
5941 find directInstanceOf(problem,interpretation,element,type);
5942}
5943private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5944 find interpretation(problem,interpretation);
5945 PartialInterpretation.scopes(interpretation,scope);
5946 Scope.targetTypeInterpretation(scope,typeInterpretation);
5947 Scope.maxNewElements(scope,0);
5948 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5949 Type.name(type,"InformationLink class");
5950}
5951
5952/**
5953 * An element may be an instance of type "InformationLink class".
5954 */
5955private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5956{
5957 find interpretation(problem,interpretation);
5958 PartialInterpretation.newElements(interpretation,element);
5959 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5960 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5961 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5962 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5963 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5964 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
5965 neg find isPrimitive(element);
5966} or {
5967 find interpretation(problem,interpretation);
5968 PartialInterpretation.openWorldElements(interpretation,element);
5969 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
5970 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
5971 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
5972 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
5973 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
5974 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
5975 neg find isPrimitive(element);
5976} or
5977{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
5978/**
5979 * An element must be an instance of type "FunctionalInterface class".
5980 */
5981private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
5982 Type.name(type,"FunctionalInterface class");
5983 find directInstanceOf(problem,interpretation,element,type);
5984}
5985private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
5986 find interpretation(problem,interpretation);
5987 PartialInterpretation.scopes(interpretation,scope);
5988 Scope.targetTypeInterpretation(scope,typeInterpretation);
5989 Scope.maxNewElements(scope,0);
5990 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
5991 Type.name(type,"FunctionalInterface class");
5992}
5993
5994/**
5995 * An element may be an instance of type "FunctionalInterface class".
5996 */
5997private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
5998{
5999 find interpretation(problem,interpretation);
6000 PartialInterpretation.newElements(interpretation,element);
6001 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6002 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
6003 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6004 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
6005 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6006 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
6007 neg find isPrimitive(element);
6008} or {
6009 find interpretation(problem,interpretation);
6010 PartialInterpretation.openWorldElements(interpretation,element);
6011 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6012 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
6013 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6014 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
6015 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6016 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
6017 neg find isPrimitive(element);
6018} or
6019{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
6020/**
6021 * An element must be an instance of type "FunctionalInput class".
6022 */
6023private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6024 Type.name(type,"FunctionalInput class");
6025 find directInstanceOf(problem,interpretation,element,type);
6026}
6027private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6028 find interpretation(problem,interpretation);
6029 PartialInterpretation.scopes(interpretation,scope);
6030 Scope.targetTypeInterpretation(scope,typeInterpretation);
6031 Scope.maxNewElements(scope,0);
6032 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6033 Type.name(type,"FunctionalInput class");
6034}
6035
6036/**
6037 * An element may be an instance of type "FunctionalInput class".
6038 */
6039private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6040{
6041 find interpretation(problem,interpretation);
6042 PartialInterpretation.newElements(interpretation,element);
6043 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6044 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
6045 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
6046 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6047 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6048 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
6049 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
6050 neg find isPrimitive(element);
6051} or {
6052 find interpretation(problem,interpretation);
6053 PartialInterpretation.openWorldElements(interpretation,element);
6054 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6055 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
6056 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
6057 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6058 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6059 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
6060 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
6061 neg find isPrimitive(element);
6062} or
6063{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
6064/**
6065 * An element must be an instance of type "FunctionalOutput class".
6066 */
6067private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6068 Type.name(type,"FunctionalOutput class");
6069 find directInstanceOf(problem,interpretation,element,type);
6070}
6071private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6072 find interpretation(problem,interpretation);
6073 PartialInterpretation.scopes(interpretation,scope);
6074 Scope.targetTypeInterpretation(scope,typeInterpretation);
6075 Scope.maxNewElements(scope,0);
6076 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6077 Type.name(type,"FunctionalOutput class");
6078}
6079
6080/**
6081 * An element may be an instance of type "FunctionalOutput class".
6082 */
6083private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6084{
6085 find interpretation(problem,interpretation);
6086 PartialInterpretation.newElements(interpretation,element);
6087 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
6088 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6089 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
6090 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6091 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6092 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
6093 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
6094 neg find isPrimitive(element);
6095} or {
6096 find interpretation(problem,interpretation);
6097 PartialInterpretation.openWorldElements(interpretation,element);
6098 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
6099 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6100 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
6101 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6102 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6103 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
6104 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
6105 neg find isPrimitive(element);
6106} or
6107{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
6108/**
6109 * An element must be an instance of type "FunctionalData class".
6110 */
6111private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6112 Type.name(type,"FunctionalData class");
6113 find directInstanceOf(problem,interpretation,element,type);
6114}
6115private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
6116 find interpretation(problem,interpretation);
6117 PartialInterpretation.scopes(interpretation,scope);
6118 Scope.targetTypeInterpretation(scope,typeInterpretation);
6119 Scope.maxNewElements(scope,0);
6120 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6121 Type.name(type,"FunctionalData class");
6122}
6123
6124/**
6125 * An element may be an instance of type "FunctionalData class".
6126 */
6127private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6128{
6129 find interpretation(problem,interpretation);
6130 PartialInterpretation.newElements(interpretation,element);
6131 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
6132 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6133 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
6134 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
6135 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6136 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6137 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
6138 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
6139 neg find isPrimitive(element);
6140} or {
6141 find interpretation(problem,interpretation);
6142 PartialInterpretation.openWorldElements(interpretation,element);
6143 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
6144 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6145 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
6146 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
6147 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6148 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6149 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
6150 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
6151 neg find isPrimitive(element);
6152} or
6153{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
6154/**
6155 * An element must be an instance of type "FunctionType enum".
6156 */
6157private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6158 Type.name(type,"FunctionType enum");
6159 find directInstanceOf(problem,interpretation,element,type);
6160}
6161private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
6162 find interpretation(problem,interpretation);
6163 PartialInterpretation.scopes(interpretation,scope);
6164 Scope.targetTypeInterpretation(scope,typeInterpretation);
6165 Scope.maxNewElements(scope,0);
6166 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6167 Type.name(type,"FunctionType enum");
6168}
6169
6170/**
6171 * An element may be an instance of type "FunctionType enum".
6172 */
6173private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6174{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
6175/**
6176 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
6177 */
6178private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6179 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
6180 find directInstanceOf(problem,interpretation,element,type);
6181}
6182private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
6183 find interpretation(problem,interpretation);
6184 PartialInterpretation.scopes(interpretation,scope);
6185 Scope.targetTypeInterpretation(scope,typeInterpretation);
6186 Scope.maxNewElements(scope,0);
6187 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6188 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
6189}
6190
6191/**
6192 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
6193 */
6194private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6195{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
6196/**
6197 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
6198 */
6199private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
6200 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
6201 find directInstanceOf(problem,interpretation,element,type);
6202}
6203private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
6204 find interpretation(problem,interpretation);
6205 PartialInterpretation.scopes(interpretation,scope);
6206 Scope.targetTypeInterpretation(scope,typeInterpretation);
6207 Scope.maxNewElements(scope,0);
6208 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
6209 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
6210}
6211
6212/**
6213 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
6214 */
6215private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
6216{
6217 find interpretation(problem,interpretation);
6218 PartialInterpretation.newElements(interpretation,element);
6219 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6220 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
6221 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6222 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6223 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
6224 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
6225 neg find isPrimitive(element);
6226} or {
6227 find interpretation(problem,interpretation);
6228 PartialInterpretation.openWorldElements(interpretation,element);
6229 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
6230 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
6231 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
6232 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
6233 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
6234 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
6235 neg find isPrimitive(element);
6236} or
6237{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
6238
6239//////////
6240// 1.2 Relation Declaration Indexers
6241//////////
6242/**
6243 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
6244 */
6245private pattern mustInRelationinterface_reference_FunctionalElement(
6246 problem:LogicProblem, interpretation:PartialInterpretation,
6247 source: DefinedElement, target:DefinedElement)
6248{
6249 find interpretation(problem,interpretation);
6250 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6251 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
6252 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6253 BinaryElementRelationLink.param1(link,source);
6254 BinaryElementRelationLink.param2(link,target);
6255}
6256/**
6257 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
6258 */
6259private pattern mayInRelationinterface_reference_FunctionalElement(
6260 problem:LogicProblem, interpretation:PartialInterpretation,
6261 source: DefinedElement, target:DefinedElement)
6262{
6263 find interpretation(problem,interpretation);
6264 // The two endpoint of the link have to exist
6265 find mayExist(problem, interpretation, source);
6266 find mayExist(problem, interpretation, target);
6267 // Type consistency
6268 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
6269 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
6270 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6271 // the upper bound of the multiplicity should be considered.
6272 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
6273 check(numberOfExistingReferences < 1);
6274 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
6275 // the upper bound of the opposite reference multiplicity should be considered.
6276 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
6277 check(numberOfExistingOppositeReferences < 1);
6278 // The reference is containment, then a new reference cannot be create if:
6279 // 1. Multiple parents
6280 neg find mustContains4(problem,interpretation,_,target);
6281 // 2. Circle in the containment hierarchy
6282 neg find mustTransitiveContains(source,target);
6283} or {
6284 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
6285}
6286/**
6287 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
6288 */
6289 private pattern mustInRelationmodel_reference_FunctionalElement(
6290 problem:LogicProblem, interpretation:PartialInterpretation,
6291 source: DefinedElement, target:DefinedElement)
6292 {
6293 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
6294 }
6295/**
6296 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
6297 */
6298 private pattern mayInRelationmodel_reference_FunctionalElement(
6299 problem:LogicProblem, interpretation:PartialInterpretation,
6300 source: DefinedElement, target:DefinedElement)
6301 {
6302 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
6303 }
6304/**
6305 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
6306 */
6307private pattern mustInRelationparent_reference_FunctionalElement(
6308 problem:LogicProblem, interpretation:PartialInterpretation,
6309 source: DefinedElement, target:DefinedElement)
6310{
6311 find interpretation(problem,interpretation);
6312 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6313 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
6314 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6315 BinaryElementRelationLink.param1(link,source);
6316 BinaryElementRelationLink.param2(link,target);
6317}
6318/**
6319 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
6320 */
6321private pattern mayInRelationparent_reference_FunctionalElement(
6322 problem:LogicProblem, interpretation:PartialInterpretation,
6323 source: DefinedElement, target:DefinedElement)
6324{
6325 find interpretation(problem,interpretation);
6326 // The two endpoint of the link have to exist
6327 find mayExist(problem, interpretation, source);
6328 find mayExist(problem, interpretation, target);
6329 // Type consistency
6330 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
6331 find mayInstanceOfFunction_class(problem,interpretation,target);
6332 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6333 // the upper bound of the multiplicity should be considered.
6334 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
6335 check(numberOfExistingReferences < 1);
6336 // The eOpposite of the reference is containment, then a referene cannot be created if
6337 // 1. Multiple parents
6338 neg find mustContains4(problem,interpretation,source,_);
6339 // 2. Circle in the containment hierarchy
6340 neg find mustTransitiveContains(source,target);
6341} or {
6342 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
6343}
6344/**
6345 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
6346 */
6347private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
6348 problem:LogicProblem, interpretation:PartialInterpretation,
6349 source: DefinedElement, target:DefinedElement)
6350{
6351 find interpretation(problem,interpretation);
6352 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6353 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
6354 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6355 BinaryElementRelationLink.param1(link,source);
6356 BinaryElementRelationLink.param2(link,target);
6357}
6358/**
6359 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
6360 */
6361private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
6362 problem:LogicProblem, interpretation:PartialInterpretation,
6363 source: DefinedElement, target:DefinedElement)
6364{
6365 find interpretation(problem,interpretation);
6366 // The two endpoint of the link have to exist
6367 find mayExist(problem, interpretation, source);
6368 find mayExist(problem, interpretation, target);
6369 // Type consistency
6370 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
6371 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
6372 // The reference is containment, then a new reference cannot be create if:
6373 // 1. Multiple parents
6374 neg find mustContains4(problem,interpretation,_,target);
6375 // 2. Circle in the containment hierarchy
6376 neg find mustTransitiveContains(source,target);
6377} or {
6378 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
6379}
6380/**
6381 * Matcher for detecting tuples t where []subElements reference Function(source,target)
6382 */
6383private pattern mustInRelationsubElements_reference_Function(
6384 problem:LogicProblem, interpretation:PartialInterpretation,
6385 source: DefinedElement, target:DefinedElement)
6386{
6387 find interpretation(problem,interpretation);
6388 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6389 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
6390 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6391 BinaryElementRelationLink.param1(link,source);
6392 BinaryElementRelationLink.param2(link,target);
6393}
6394/**
6395 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
6396 */
6397private pattern mayInRelationsubElements_reference_Function(
6398 problem:LogicProblem, interpretation:PartialInterpretation,
6399 source: DefinedElement, target:DefinedElement)
6400{
6401 find interpretation(problem,interpretation);
6402 // The two endpoint of the link have to exist
6403 find mayExist(problem, interpretation, source);
6404 find mayExist(problem, interpretation, target);
6405 // Type consistency
6406 find mayInstanceOfFunction_class(problem,interpretation,source);
6407 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
6408 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
6409 // the upper bound of the opposite reference multiplicity should be considered.
6410 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
6411 check(numberOfExistingOppositeReferences < 1);
6412 // The reference is containment, then a new reference cannot be create if:
6413 // 1. Multiple parents
6414 neg find mustContains4(problem,interpretation,_,target);
6415 // 2. Circle in the containment hierarchy
6416 neg find mustTransitiveContains(source,target);
6417} or {
6418 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
6419}
6420/**
6421 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
6422 */
6423private pattern mustInRelationdata_reference_FAMTerminator(
6424 problem:LogicProblem, interpretation:PartialInterpretation,
6425 source: DefinedElement, target:DefinedElement)
6426{
6427 find interpretation(problem,interpretation);
6428 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6429 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
6430 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6431 BinaryElementRelationLink.param1(link,source);
6432 BinaryElementRelationLink.param2(link,target);
6433}
6434/**
6435 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
6436 */
6437private pattern mayInRelationdata_reference_FAMTerminator(
6438 problem:LogicProblem, interpretation:PartialInterpretation,
6439 source: DefinedElement, target:DefinedElement)
6440{
6441 find interpretation(problem,interpretation);
6442 // The two endpoint of the link have to exist
6443 find mayExist(problem, interpretation, source);
6444 find mayExist(problem, interpretation, target);
6445 // Type consistency
6446 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
6447 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
6448 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6449 // the upper bound of the multiplicity should be considered.
6450 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
6451 check(numberOfExistingReferences < 1);
6452 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
6453 // the upper bound of the opposite reference multiplicity should be considered.
6454 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
6455 check(numberOfExistingOppositeReferences < 1);
6456 // The eOpposite of the reference is containment, then a referene cannot be created if
6457 // 1. Multiple parents
6458 neg find mustContains4(problem,interpretation,source,_);
6459 // 2. Circle in the containment hierarchy
6460 neg find mustTransitiveContains(source,target);
6461} or {
6462 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
6463}
6464/**
6465 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
6466 */
6467private pattern mustInRelationfrom_reference_InformationLink(
6468 problem:LogicProblem, interpretation:PartialInterpretation,
6469 source: DefinedElement, target:DefinedElement)
6470{
6471 find interpretation(problem,interpretation);
6472 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6473 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
6474 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6475 BinaryElementRelationLink.param1(link,source);
6476 BinaryElementRelationLink.param2(link,target);
6477}
6478/**
6479 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
6480 */
6481private pattern mayInRelationfrom_reference_InformationLink(
6482 problem:LogicProblem, interpretation:PartialInterpretation,
6483 source: DefinedElement, target:DefinedElement)
6484{
6485 find interpretation(problem,interpretation);
6486 // The two endpoint of the link have to exist
6487 find mayExist(problem, interpretation, source);
6488 find mayExist(problem, interpretation, target);
6489 // Type consistency
6490 find mayInstanceOfInformationLink_class(problem,interpretation,source);
6491 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
6492 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6493 // the upper bound of the multiplicity should be considered.
6494 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
6495 check(numberOfExistingReferences < 1);
6496 // The eOpposite of the reference is containment, then a referene cannot be created if
6497 // 1. Multiple parents
6498 neg find mustContains4(problem,interpretation,source,_);
6499 // 2. Circle in the containment hierarchy
6500 neg find mustTransitiveContains(source,target);
6501} or {
6502 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
6503}
6504/**
6505 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
6506 */
6507private pattern mustInRelationto_reference_InformationLink(
6508 problem:LogicProblem, interpretation:PartialInterpretation,
6509 source: DefinedElement, target:DefinedElement)
6510{
6511 find interpretation(problem,interpretation);
6512 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6513 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
6514 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6515 BinaryElementRelationLink.param1(link,source);
6516 BinaryElementRelationLink.param2(link,target);
6517}
6518/**
6519 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
6520 */
6521private pattern mayInRelationto_reference_InformationLink(
6522 problem:LogicProblem, interpretation:PartialInterpretation,
6523 source: DefinedElement, target:DefinedElement)
6524{
6525 find interpretation(problem,interpretation);
6526 // The two endpoint of the link have to exist
6527 find mayExist(problem, interpretation, source);
6528 find mayExist(problem, interpretation, target);
6529 // Type consistency
6530 find mayInstanceOfInformationLink_class(problem,interpretation,source);
6531 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
6532 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6533 // the upper bound of the multiplicity should be considered.
6534 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
6535 check(numberOfExistingReferences < 1);
6536} or {
6537 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
6538}
6539/**
6540 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
6541 */
6542private pattern mustInRelationdata_reference_FunctionalInterface(
6543 problem:LogicProblem, interpretation:PartialInterpretation,
6544 source: DefinedElement, target:DefinedElement)
6545{
6546 find interpretation(problem,interpretation);
6547 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6548 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
6549 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6550 BinaryElementRelationLink.param1(link,source);
6551 BinaryElementRelationLink.param2(link,target);
6552}
6553/**
6554 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
6555 */
6556private pattern mayInRelationdata_reference_FunctionalInterface(
6557 problem:LogicProblem, interpretation:PartialInterpretation,
6558 source: DefinedElement, target:DefinedElement)
6559{
6560 find interpretation(problem,interpretation);
6561 // The two endpoint of the link have to exist
6562 find mayExist(problem, interpretation, source);
6563 find mayExist(problem, interpretation, target);
6564 // Type consistency
6565 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
6566 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
6567 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
6568 // the upper bound of the opposite reference multiplicity should be considered.
6569 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
6570 check(numberOfExistingOppositeReferences < 1);
6571 // The reference is containment, then a new reference cannot be create if:
6572 // 1. Multiple parents
6573 neg find mustContains4(problem,interpretation,_,target);
6574 // 2. Circle in the containment hierarchy
6575 neg find mustTransitiveContains(source,target);
6576} or {
6577 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
6578}
6579/**
6580 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
6581 */
6582private pattern mustInRelationelement_reference_FunctionalInterface(
6583 problem:LogicProblem, interpretation:PartialInterpretation,
6584 source: DefinedElement, target:DefinedElement)
6585{
6586 find interpretation(problem,interpretation);
6587 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6588 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
6589 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6590 BinaryElementRelationLink.param1(link,source);
6591 BinaryElementRelationLink.param2(link,target);
6592}
6593/**
6594 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
6595 */
6596private pattern mayInRelationelement_reference_FunctionalInterface(
6597 problem:LogicProblem, interpretation:PartialInterpretation,
6598 source: DefinedElement, target:DefinedElement)
6599{
6600 find interpretation(problem,interpretation);
6601 // The two endpoint of the link have to exist
6602 find mayExist(problem, interpretation, source);
6603 find mayExist(problem, interpretation, target);
6604 // Type consistency
6605 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
6606 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
6607 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6608 // the upper bound of the multiplicity should be considered.
6609 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
6610 check(numberOfExistingReferences < 1);
6611 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
6612 // the upper bound of the opposite reference multiplicity should be considered.
6613 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
6614 check(numberOfExistingOppositeReferences < 1);
6615 // The eOpposite of the reference is containment, then a referene cannot be created if
6616 // 1. Multiple parents
6617 neg find mustContains4(problem,interpretation,source,_);
6618 // 2. Circle in the containment hierarchy
6619 neg find mustTransitiveContains(source,target);
6620} or {
6621 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
6622}
6623/**
6624 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
6625 */
6626private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
6627 problem:LogicProblem, interpretation:PartialInterpretation,
6628 source: DefinedElement, target:DefinedElement)
6629{
6630 find interpretation(problem,interpretation);
6631 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6632 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
6633 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6634 BinaryElementRelationLink.param1(link,source);
6635 BinaryElementRelationLink.param2(link,target);
6636}
6637/**
6638 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
6639 */
6640private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
6641 problem:LogicProblem, interpretation:PartialInterpretation,
6642 source: DefinedElement, target:DefinedElement)
6643{
6644 find interpretation(problem,interpretation);
6645 // The two endpoint of the link have to exist
6646 find mayExist(problem, interpretation, source);
6647 find mayExist(problem, interpretation, target);
6648 // Type consistency
6649 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
6650 find mayInstanceOfInformationLink_class(problem,interpretation,target);
6651 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
6652 // the upper bound of the opposite reference multiplicity should be considered.
6653 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
6654 check(numberOfExistingOppositeReferences < 1);
6655} or {
6656 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
6657}
6658/**
6659 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
6660 */
6661private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
6662 problem:LogicProblem, interpretation:PartialInterpretation,
6663 source: DefinedElement, target:DefinedElement)
6664{
6665 find interpretation(problem,interpretation);
6666 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6667 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
6668 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6669 BinaryElementRelationLink.param1(link,source);
6670 BinaryElementRelationLink.param2(link,target);
6671}
6672/**
6673 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
6674 */
6675private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
6676 problem:LogicProblem, interpretation:PartialInterpretation,
6677 source: DefinedElement, target:DefinedElement)
6678{
6679 find interpretation(problem,interpretation);
6680 // The two endpoint of the link have to exist
6681 find mayExist(problem, interpretation, source);
6682 find mayExist(problem, interpretation, target);
6683 // Type consistency
6684 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
6685 find mayInstanceOfInformationLink_class(problem,interpretation,target);
6686 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
6687 // the upper bound of the opposite reference multiplicity should be considered.
6688 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
6689 check(numberOfExistingOppositeReferences < 1);
6690 // The reference is containment, then a new reference cannot be create if:
6691 // 1. Multiple parents
6692 neg find mustContains4(problem,interpretation,_,target);
6693 // 2. Circle in the containment hierarchy
6694 neg find mustTransitiveContains(source,target);
6695} or {
6696 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
6697}
6698/**
6699 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
6700 */
6701private pattern mustInRelationterminator_reference_FunctionalData(
6702 problem:LogicProblem, interpretation:PartialInterpretation,
6703 source: DefinedElement, target:DefinedElement)
6704{
6705 find interpretation(problem,interpretation);
6706 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6707 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
6708 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6709 BinaryElementRelationLink.param1(link,source);
6710 BinaryElementRelationLink.param2(link,target);
6711}
6712/**
6713 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
6714 */
6715private pattern mayInRelationterminator_reference_FunctionalData(
6716 problem:LogicProblem, interpretation:PartialInterpretation,
6717 source: DefinedElement, target:DefinedElement)
6718{
6719 find interpretation(problem,interpretation);
6720 // The two endpoint of the link have to exist
6721 find mayExist(problem, interpretation, source);
6722 find mayExist(problem, interpretation, target);
6723 // Type consistency
6724 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
6725 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
6726 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6727 // the upper bound of the multiplicity should be considered.
6728 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
6729 check(numberOfExistingReferences < 1);
6730 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
6731 // the upper bound of the opposite reference multiplicity should be considered.
6732 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
6733 check(numberOfExistingOppositeReferences < 1);
6734 // The reference is containment, then a new reference cannot be create if:
6735 // 1. Multiple parents
6736 neg find mustContains4(problem,interpretation,_,target);
6737 // 2. Circle in the containment hierarchy
6738 neg find mustTransitiveContains(source,target);
6739} or {
6740 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
6741}
6742/**
6743 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
6744 */
6745private pattern mustInRelationinterface_reference_FunctionalData(
6746 problem:LogicProblem, interpretation:PartialInterpretation,
6747 source: DefinedElement, target:DefinedElement)
6748{
6749 find interpretation(problem,interpretation);
6750 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
6751 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
6752 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
6753 BinaryElementRelationLink.param1(link,source);
6754 BinaryElementRelationLink.param2(link,target);
6755}
6756/**
6757 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
6758 */
6759private pattern mayInRelationinterface_reference_FunctionalData(
6760 problem:LogicProblem, interpretation:PartialInterpretation,
6761 source: DefinedElement, target:DefinedElement)
6762{
6763 find interpretation(problem,interpretation);
6764 // The two endpoint of the link have to exist
6765 find mayExist(problem, interpretation, source);
6766 find mayExist(problem, interpretation, target);
6767 // Type consistency
6768 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
6769 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
6770 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
6771 // the upper bound of the multiplicity should be considered.
6772 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
6773 check(numberOfExistingReferences < 1);
6774 // The eOpposite of the reference is containment, then a referene cannot be created if
6775 // 1. Multiple parents
6776 neg find mustContains4(problem,interpretation,source,_);
6777 // 2. Circle in the containment hierarchy
6778 neg find mustTransitiveContains(source,target);
6779} or {
6780 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
6781}
6782/**
6783 * Matcher for detecting tuples t where []type attribute Function(source,target)
6784 */
6785 private pattern mustInRelationtype_attribute_Function(
6786 problem:LogicProblem, interpretation:PartialInterpretation,
6787 source: DefinedElement, target:DefinedElement)
6788 {
6789 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
6790 }
6791/**
6792 * Matcher for detecting tuples t where []type attribute Function(source,target)
6793 */
6794 private pattern mayInRelationtype_attribute_Function(
6795 problem:LogicProblem, interpretation:PartialInterpretation,
6796 source: DefinedElement, target:DefinedElement)
6797 {
6798 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
6799 }
6800
6801//////////
6802// 1.3 Relation Definition Indexers
6803//////////
6804// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation
6805private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
6806 problem:LogicProblem, interpretation:PartialInterpretation,
6807 var_T, var_I)
6808{
6809 find interpretation(problem,interpretation);
6810 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
6811 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
6812 // T is exported
6813 // I is exported
6814 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
6815 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
6816 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
6817 var_virtual0 == var_I;
6818 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
6819 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
6820 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
6821 var_virtual1 == var_T;
6822}or{
6823 find interpretation(problem,interpretation);
6824 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
6825 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
6826 // T is exported
6827 // I is exported
6828 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
6829 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
6830 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
6831 var_virtual0 == var_In;
6832 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
6833 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
6834 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
6835 var_virtual1 == var_T;
6836}
6837private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
6838 problem:LogicProblem, interpretation:PartialInterpretation,
6839 var_T, var_I)
6840{
6841 find interpretation(problem,interpretation);
6842 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
6843 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
6844 // T is exported
6845 // I is exported
6846 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
6847 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
6848 find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
6849 find mayEquivalent(problem, interpretation, var_virtual0, var_I);
6850 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
6851 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
6852 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
6853 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
6854}or{
6855 find interpretation(problem,interpretation);
6856 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
6857 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
6858 // T is exported
6859 // I is exported
6860 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
6861 find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
6862 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
6863 find mayEquivalent(problem, interpretation, var_virtual0, var_In);
6864 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In);
6865 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
6866 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
6867 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
6868}
6869private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
6870 problem:LogicProblem, interpretation:PartialInterpretation,
6871 var_T, var_I)
6872{
6873 find interpretation(problem,interpretation);
6874 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
6875 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
6876 // T is exported
6877 // I is exported
6878 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
6879 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
6880 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
6881 var_virtual0 == var_I;
6882 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
6883 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
6884 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
6885 var_virtual1 == var_T;
6886}or{
6887 find interpretation(problem,interpretation);
6888 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
6889 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
6890 // T is exported
6891 // I is exported
6892 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
6893 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
6894 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
6895 var_virtual0 == var_In;
6896 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
6897 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
6898 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
6899 var_virtual1 == var_T;
6900}
6901// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type
6902private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
6903 problem:LogicProblem, interpretation:PartialInterpretation,
6904 var_This, var_Target)
6905{
6906 find interpretation(problem,interpretation);
6907 find mustInstanceOfFunction_class(problem,interpretation,var_This);
6908 // type constraint is enforced by construction
6909 // This is exported
6910 // Target is exported
6911 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
6912 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
6913 var_Target == var_virtual0;
6914}or{
6915 find interpretation(problem,interpretation);
6916 find mustInstanceOfFunction_class(problem,interpretation,var_This);
6917 // type constraint is enforced by construction
6918 // This is exported
6919 // Target is exported
6920 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
6921 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
6922 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
6923 var_Target == var_virtual0;
6924}or{
6925 find interpretation(problem,interpretation);
6926 find mustInstanceOfFunction_class(problem,interpretation,var_This);
6927 // type constraint is enforced by construction
6928 // This is exported
6929 // Target is exported
6930 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
6931 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
6932 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
6933 var_Target == var_virtual0;
6934}
6935private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
6936 problem:LogicProblem, interpretation:PartialInterpretation,
6937 var_This, var_Target)
6938{
6939 find interpretation(problem,interpretation);
6940 find mayInstanceOfFunction_class(problem,interpretation,var_This);
6941 // type constraint is enforced by construction
6942 // This is exported
6943 // Target is exported
6944 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
6945 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
6946 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
6947}or{
6948 find interpretation(problem,interpretation);
6949 find mayInstanceOfFunction_class(problem,interpretation,var_This);
6950 // type constraint is enforced by construction
6951 // This is exported
6952 // Target is exported
6953 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
6954 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
6955 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
6956 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
6957}or{
6958 find interpretation(problem,interpretation);
6959 find mayInstanceOfFunction_class(problem,interpretation,var_This);
6960 // type constraint is enforced by construction
6961 // This is exported
6962 // Target is exported
6963 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
6964 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
6965 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
6966 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
6967}
6968private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
6969 problem:LogicProblem, interpretation:PartialInterpretation,
6970 var_This, var_Target)
6971{
6972 find interpretation(problem,interpretation);
6973 find mustInstanceOfFunction_class(problem,interpretation,var_This);
6974 // type constraint is enforced by construction
6975 // This is exported
6976 // Target is exported
6977 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
6978 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
6979 var_Target == var_virtual0;
6980}or{
6981 find interpretation(problem,interpretation);
6982 find mustInstanceOfFunction_class(problem,interpretation,var_This);
6983 // type constraint is enforced by construction
6984 // This is exported
6985 // Target is exported
6986 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
6987 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
6988 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
6989 var_Target == var_virtual0;
6990}or{
6991 find interpretation(problem,interpretation);
6992 find mustInstanceOfFunction_class(problem,interpretation,var_This);
6993 // type constraint is enforced by construction
6994 // This is exported
6995 // Target is exported
6996 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
6997 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
6998 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
6999 var_Target == var_virtual0;
7000}
7001// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements
7002private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
7003 problem:LogicProblem, interpretation:PartialInterpretation,
7004 var_Model, var_Root)
7005{
7006 find interpretation(problem,interpretation);
7007 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
7008 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
7009 // Model is exported
7010 // Root is exported
7011 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
7012 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
7013 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
7014 var_virtual0 == var_Root;
7015}
7016private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
7017 problem:LogicProblem, interpretation:PartialInterpretation,
7018 var_Model, var_Root)
7019{
7020 find interpretation(problem,interpretation);
7021 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
7022 find mayInstanceOfFunction_class(problem,interpretation,var_Root);
7023 // Model is exported
7024 // Root is exported
7025 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
7026 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
7027 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
7028 find mayEquivalent(problem, interpretation, var_virtual0, var_Root);
7029}
7030private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
7031 problem:LogicProblem, interpretation:PartialInterpretation,
7032 var_Model, var_Root)
7033{
7034 find interpretation(problem,interpretation);
7035 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
7036 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
7037 // Model is exported
7038 // Root is exported
7039 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
7040 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
7041 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
7042 var_virtual0 == var_Root;
7043}
7044// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent
7045private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
7046 problem:LogicProblem, interpretation:PartialInterpretation,
7047 var_Func, var_Par)
7048{
7049 find interpretation(problem,interpretation);
7050 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
7051 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
7052 // Func is exported
7053 // Par is exported
7054 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
7055 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
7056 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
7057 var_virtual0 == var_Par;
7058}
7059private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
7060 problem:LogicProblem, interpretation:PartialInterpretation,
7061 var_Func, var_Par)
7062{
7063 find interpretation(problem,interpretation);
7064 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
7065 find mayInstanceOfFunction_class(problem,interpretation,var_Par);
7066 // Func is exported
7067 // Par is exported
7068 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
7069 find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
7070 find mayInstanceOfFunction_class(problem,interpretation,var_virtual0);
7071 find mayEquivalent(problem, interpretation, var_virtual0, var_Par);
7072}
7073private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
7074 problem:LogicProblem, interpretation:PartialInterpretation,
7075 var_Func, var_Par)
7076{
7077 find interpretation(problem,interpretation);
7078 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
7079 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
7080 // Func is exported
7081 // Par is exported
7082 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
7083 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
7084 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
7085 var_virtual0 == var_Par;
7086}
7087// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model
7088private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
7089 problem:LogicProblem, interpretation:PartialInterpretation,
7090 var_This, var_Target)
7091{
7092 find interpretation(problem,interpretation);
7093 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
7094 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
7095 // This is exported
7096 // Target is exported
7097 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
7098 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
7099}
7100private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
7101 problem:LogicProblem, interpretation:PartialInterpretation,
7102 var_This, var_Target)
7103{
7104 find interpretation(problem,interpretation);
7105 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
7106 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
7107 // This is exported
7108 // Target is exported
7109 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
7110 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
7111}
7112private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
7113 problem:LogicProblem, interpretation:PartialInterpretation,
7114 var_This, var_Target)
7115{
7116 find interpretation(problem,interpretation);
7117 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
7118 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
7119 // This is exported
7120 // Target is exported
7121 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
7122 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
7123}
7124
7125//////////
7126// 1.4 Containment Indexer
7127//////////
7128private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
7129 find mustContains4(_,_,source,target);
7130}
7131
7132private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
7133 source: DefinedElement, target: DefinedElement)
7134 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
7135
7136 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
7137
7138 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
7139
7140 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
7141
7142 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
7143
7144 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
7145
7146private pattern mustTransitiveContains(source,target) {
7147 find mustContains2+(source,target);
7148}
7149
7150//////////
7151// 2. Invalidation Indexers
7152//////////
7153// 2.1 Invalidated by WF Queries
7154//////////
7155
7156//////////
7157// 3. Unfinishedness Indexers
7158//////////
7159// 3.1 Unfinishedness Measured by Multiplicity
7160//////////
7161pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
7162 find interpretation(problem,interpretation);
7163 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7164 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
7165 find mustInstanceOfInformationLink_class(problem,interpretation,object);
7166 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
7167 check(numberOfExistingReferences < 1);
7168 missingMultiplicity == eval(1-numberOfExistingReferences);
7169}
7170
7171//////////
7172// 3.2 Unfinishedness Measured by WF Queries
7173//////////
7174
7175//////////
7176// 4. Refinement Indexers
7177//////////
7178// 4.1 Object constructors
7179//////////
7180private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
7181{
7182 find interpretation(problem,interpretation);
7183 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
7184 find mustExist(problem, interpretation, root);
7185}or{
7186 find interpretation(problem,interpretation);
7187 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
7188 find mustExist(problem, interpretation, root);
7189}or{
7190 find interpretation(problem,interpretation);
7191 find mustInstanceOfInformationLink_class(problem,interpretation,root);
7192 find mustExist(problem, interpretation, root);
7193}or{
7194 find interpretation(problem,interpretation);
7195 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
7196 find mustExist(problem, interpretation, root);
7197}or{
7198 find interpretation(problem,interpretation);
7199 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
7200 find mustExist(problem, interpretation, root);
7201}or{
7202 find interpretation(problem,interpretation);
7203 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
7204 find mustExist(problem, interpretation, root);
7205}or{
7206 find interpretation(problem,interpretation);
7207 find mustInstanceOfFunction_class(problem,interpretation,root);
7208 find mustExist(problem, interpretation, root);
7209}or{
7210 find interpretation(problem,interpretation);
7211 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
7212 find mustExist(problem, interpretation, root);
7213}or{
7214 find interpretation(problem,interpretation);
7215 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
7216 find mustExist(problem, interpretation, root);
7217}or{
7218 find interpretation(problem,interpretation);
7219 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
7220 find mustExist(problem, interpretation, root);
7221}or{
7222 find interpretation(problem,interpretation);
7223 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
7224 find mustExist(problem, interpretation, root);
7225}
7226pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
7227 problem:LogicProblem, interpretation:PartialInterpretation,
7228 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
7229 container:DefinedElement)
7230{
7231 find interpretation(problem,interpretation);
7232 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7233 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
7234 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
7235 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
7236 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
7237 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
7238 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
7239 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
7240 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
7241 find mustExist(problem, interpretation, container);
7242 neg find mustExist(problem, interpretation, newObject);
7243}
7244pattern createObject_FunctionalInput_class(
7245 problem:LogicProblem, interpretation:PartialInterpretation,
7246 typeInterpretation:PartialComplexTypeInterpretation)
7247{
7248 find interpretation(problem,interpretation);
7249 neg find hasElementInContainment(problem,interpretation);
7250 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7251 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
7252 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
7253 find mayExist(problem, interpretation, newObject);
7254 neg find mustExist(problem, interpretation, newObject);
7255}
7256pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
7257 problem:LogicProblem, interpretation:PartialInterpretation,
7258 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
7259 container:DefinedElement)
7260{
7261 find interpretation(problem,interpretation);
7262 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7263 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
7264 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
7265 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
7266 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
7267 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
7268 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
7269 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
7270 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
7271 find mustExist(problem, interpretation, container);
7272 neg find mustExist(problem, interpretation, newObject);
7273}
7274pattern createObject_FunctionalOutput_class(
7275 problem:LogicProblem, interpretation:PartialInterpretation,
7276 typeInterpretation:PartialComplexTypeInterpretation)
7277{
7278 find interpretation(problem,interpretation);
7279 neg find hasElementInContainment(problem,interpretation);
7280 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7281 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
7282 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
7283 find mayExist(problem, interpretation, newObject);
7284 neg find mustExist(problem, interpretation, newObject);
7285}
7286pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
7287 problem:LogicProblem, interpretation:PartialInterpretation,
7288 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
7289 container:DefinedElement)
7290{
7291 find interpretation(problem,interpretation);
7292 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7293 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
7294 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
7295 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
7296 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
7297 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
7298 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
7299 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
7300 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
7301 find mustExist(problem, interpretation, container);
7302 neg find mustExist(problem, interpretation, newObject);
7303}
7304pattern createObject_FAMTerminator_class(
7305 problem:LogicProblem, interpretation:PartialInterpretation,
7306 typeInterpretation:PartialComplexTypeInterpretation)
7307{
7308 find interpretation(problem,interpretation);
7309 neg find hasElementInContainment(problem,interpretation);
7310 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7311 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
7312 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
7313 find mayExist(problem, interpretation, newObject);
7314 neg find mustExist(problem, interpretation, newObject);
7315}
7316pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
7317 problem:LogicProblem, interpretation:PartialInterpretation,
7318 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
7319 container:DefinedElement)
7320{
7321 find interpretation(problem,interpretation);
7322 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7323 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
7324 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
7325 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
7326 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
7327 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
7328 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
7329 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
7330 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
7331 find mustExist(problem, interpretation, container);
7332 neg find mustExist(problem, interpretation, newObject);
7333}
7334pattern createObject_InformationLink_class(
7335 problem:LogicProblem, interpretation:PartialInterpretation,
7336 typeInterpretation:PartialComplexTypeInterpretation)
7337{
7338 find interpretation(problem,interpretation);
7339 neg find hasElementInContainment(problem,interpretation);
7340 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7341 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
7342 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
7343 find mayExist(problem, interpretation, newObject);
7344 neg find mustExist(problem, interpretation, newObject);
7345}
7346pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
7347 problem:LogicProblem, interpretation:PartialInterpretation,
7348 typeInterpretation:PartialComplexTypeInterpretation)
7349{
7350 find interpretation(problem,interpretation);
7351 neg find hasElementInContainment(problem,interpretation);
7352 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7353 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
7354 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
7355 find mayExist(problem, interpretation, newObject);
7356 neg find mustExist(problem, interpretation, newObject);
7357}
7358pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
7359 problem:LogicProblem, interpretation:PartialInterpretation,
7360 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
7361 container:DefinedElement)
7362{
7363 find interpretation(problem,interpretation);
7364 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7365 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
7366 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
7367 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
7368 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
7369 find mayInstanceOfFunction_class(problem,interpretation,newObject);
7370 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
7371 find mustExist(problem, interpretation, container);
7372 neg find mustExist(problem, interpretation, newObject);
7373}
7374pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
7375 problem:LogicProblem, interpretation:PartialInterpretation,
7376 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
7377 container:DefinedElement)
7378{
7379 find interpretation(problem,interpretation);
7380 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7381 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
7382 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
7383 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
7384 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
7385 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
7386 find mustInstanceOfFunction_class(problem,interpretation,container);
7387 find mayInstanceOfFunction_class(problem,interpretation,newObject);
7388 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
7389 find mustExist(problem, interpretation, container);
7390 neg find mustExist(problem, interpretation, newObject);
7391}
7392pattern createObject_Function_class(
7393 problem:LogicProblem, interpretation:PartialInterpretation,
7394 typeInterpretation:PartialComplexTypeInterpretation)
7395{
7396 find interpretation(problem,interpretation);
7397 neg find hasElementInContainment(problem,interpretation);
7398 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7399 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
7400 find mayInstanceOfFunction_class(problem,interpretation,newObject);
7401 find mayExist(problem, interpretation, newObject);
7402 neg find mustExist(problem, interpretation, newObject);
7403}
7404pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
7405 problem:LogicProblem, interpretation:PartialInterpretation,
7406 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
7407 container:DefinedElement)
7408{
7409 find interpretation(problem,interpretation);
7410 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7411 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
7412 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
7413 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
7414 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
7415 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
7416 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
7417 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
7418 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
7419 find mustExist(problem, interpretation, container);
7420 neg find mustExist(problem, interpretation, newObject);
7421}
7422pattern createObject_FunctionalInterface_class(
7423 problem:LogicProblem, interpretation:PartialInterpretation,
7424 typeInterpretation:PartialComplexTypeInterpretation)
7425{
7426 find interpretation(problem,interpretation);
7427 neg find hasElementInContainment(problem,interpretation);
7428 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7429 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
7430 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
7431 find mayExist(problem, interpretation, newObject);
7432 neg find mustExist(problem, interpretation, newObject);
7433}
7434
7435//////////
7436// 4.2 Type refinement
7437//////////
7438pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
7439 find interpretation(problem,interpretation);
7440 PartialInterpretation.newElements(interpretation,element);
7441 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
7442 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
7443 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7444 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
7445 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7446 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7447 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7448 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7449}
7450pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
7451 find interpretation(problem,interpretation);
7452 PartialInterpretation.newElements(interpretation,element);
7453 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
7454 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
7455 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7456 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
7457 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7458 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7459 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7460 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7461}
7462pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
7463 find interpretation(problem,interpretation);
7464 PartialInterpretation.newElements(interpretation,element);
7465 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
7466 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7467 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7468 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7469 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7470 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7471 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7472}
7473pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
7474 find interpretation(problem,interpretation);
7475 PartialInterpretation.newElements(interpretation,element);
7476 find mayInstanceOfInformationLink_class(problem,interpretation,element);
7477 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7478 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7479 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7480 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7481 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7482 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7483}
7484pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
7485 find interpretation(problem,interpretation);
7486 PartialInterpretation.newElements(interpretation,element);
7487 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
7488 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7489 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7490 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7491 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7492 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
7493 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7494}
7495pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
7496 find interpretation(problem,interpretation);
7497 PartialInterpretation.newElements(interpretation,element);
7498 find mayInstanceOfFunction_class(problem,interpretation,element);
7499 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7500 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7501 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7502 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7503 neg find mustInstanceOfFunction_class(problem,interpretation,element);
7504 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7505}
7506pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
7507 find interpretation(problem,interpretation);
7508 PartialInterpretation.newElements(interpretation,element);
7509 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
7510 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7511 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7512 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7513 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7514 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7515 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7516}
7517
7518//////////
7519// 4.3 Relation refinement
7520//////////
7521pattern refineRelation_model_reference_FunctionalElement(
7522 problem:LogicProblem, interpretation:PartialInterpretation,
7523 relationIterpretation:PartialRelationInterpretation,
7524 from: DefinedElement, to: DefinedElement)
7525{
7526 find interpretation(problem,interpretation);
7527 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7528 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
7529 find mustExist(problem, interpretation, from);
7530 find mustExist(problem, interpretation, to);
7531 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
7532 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
7533 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
7534 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
7535}
7536pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
7537 problem:LogicProblem, interpretation:PartialInterpretation,
7538 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
7539 from: DefinedElement, to: DefinedElement)
7540{
7541 find interpretation(problem,interpretation);
7542 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7543 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
7544 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
7545 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
7546 find mustExist(problem, interpretation, from);
7547 find mustExist(problem, interpretation, to);
7548 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
7549 find mustInstanceOfInformationLink_class(problem,interpretation,to);
7550 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
7551 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
7552}
7553pattern refineRelation_type_attribute_Function(
7554 problem:LogicProblem, interpretation:PartialInterpretation,
7555 relationIterpretation:PartialRelationInterpretation,
7556 from: DefinedElement, to: DefinedElement)
7557{
7558 find interpretation(problem,interpretation);
7559 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
7560 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
7561 find mustExist(problem, interpretation, from);
7562 find mustExist(problem, interpretation, to);
7563 find mustInstanceOfFunction_class(problem,interpretation,from);
7564 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
7565 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
7566 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
7567}
7568import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
7569import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
7570import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
7571
7572//////////
7573// 0. Util
7574//////////
7575private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
7576 PartialInterpretation.problem(interpretation,problem);
7577}
7578
7579/////////////////////////
7580// 0.1 Existence
7581/////////////////////////
7582private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7583 find interpretation(problem,interpretation);
7584 LogicProblem.elements(problem,element);
7585} or {
7586 find interpretation(problem,interpretation);
7587 PartialInterpretation.newElements(interpretation,element);
7588}
7589
7590private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7591 find mustExist(problem,interpretation,element);
7592} or {
7593 find interpretation(problem,interpretation);
7594 neg find elementCloseWorld(element);
7595 PartialInterpretation.openWorldElements(interpretation,element);
7596}
7597
7598private pattern elementCloseWorld(element:DefinedElement) {
7599 PartialInterpretation.openWorldElements(i,element);
7600 PartialInterpretation.maxNewElements(i,0);
7601} or {
7602 Scope.targetTypeInterpretation(scope,interpretation);
7603 PartialTypeInterpratation.elements(interpretation,element);
7604 Scope.maxNewElements(scope,0);
7605}
7606
7607////////////////////////
7608// 0.2 Equivalence
7609////////////////////////
7610pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
7611 find mayExist(problem,interpretation,a);
7612 find mayExist(problem,interpretation,b);
7613 a == b;
7614}
7615
7616////////////////////////
7617// 0.3 Required Patterns by TypeIndexer
7618////////////////////////
7619private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
7620 find interpretation(problem,interpretation);
7621 LogicProblem.types(problem,type);
7622 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
7623 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
7624}
7625
7626private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
7627 find interpretation(problem,interpretation);
7628 LogicProblem.types(problem,type);
7629 TypeDefinition.elements(type,element);
7630} or {
7631 find interpretation(problem,interpretation);
7632 find typeInterpretation(problem,interpretation,type,typeInterpretation);
7633 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
7634}
7635
7636private pattern isPrimitive(element: PrimitiveElement) {
7637 PrimitiveElement(element);
7638}
7639
7640//////////
7641// 1. Problem-Specific Base Indexers
7642//////////
7643// 1.1 Type Indexers
7644//////////
7645// 1.1.1 primitive Type Indexers
7646//////////
7647
7648//////////
7649// 1.1.2 domain-specific Type Indexers
7650//////////
7651/**
7652 * An element must be an instance of type "FunctionalElement class".
7653 */
7654private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7655 Type.name(type,"FunctionalElement class");
7656 find directInstanceOf(problem,interpretation,element,type);
7657}
7658private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
7659 find interpretation(problem,interpretation);
7660 PartialInterpretation.scopes(interpretation,scope);
7661 Scope.targetTypeInterpretation(scope,typeInterpretation);
7662 Scope.maxNewElements(scope,0);
7663 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
7664 Type.name(type,"FunctionalElement class");
7665}
7666
7667/**
7668 * An element may be an instance of type "FunctionalElement class".
7669 */
7670private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
7671{
7672 find interpretation(problem,interpretation);
7673 PartialInterpretation.newElements(interpretation,element);
7674 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7675 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7676 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7677 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7678 neg find mustInstanceOfFunction_class(problem,interpretation,element);
7679 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7680 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
7681 neg find isPrimitive(element);
7682} or {
7683 find interpretation(problem,interpretation);
7684 PartialInterpretation.openWorldElements(interpretation,element);
7685 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7686 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7687 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7688 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7689 neg find mustInstanceOfFunction_class(problem,interpretation,element);
7690 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7691 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
7692 neg find isPrimitive(element);
7693} or
7694{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
7695/**
7696 * An element must be an instance of type "FunctionalArchitectureModel class".
7697 */
7698private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7699 Type.name(type,"FunctionalArchitectureModel class");
7700 find directInstanceOf(problem,interpretation,element,type);
7701}
7702private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
7703 find interpretation(problem,interpretation);
7704 PartialInterpretation.scopes(interpretation,scope);
7705 Scope.targetTypeInterpretation(scope,typeInterpretation);
7706 Scope.maxNewElements(scope,0);
7707 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
7708 Type.name(type,"FunctionalArchitectureModel class");
7709}
7710
7711/**
7712 * An element may be an instance of type "FunctionalArchitectureModel class".
7713 */
7714private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
7715{
7716 find interpretation(problem,interpretation);
7717 PartialInterpretation.newElements(interpretation,element);
7718 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7719 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
7720 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7721 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7722 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7723 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7724 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
7725 neg find isPrimitive(element);
7726} or {
7727 find interpretation(problem,interpretation);
7728 PartialInterpretation.openWorldElements(interpretation,element);
7729 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7730 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
7731 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7732 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7733 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7734 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7735 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
7736 neg find isPrimitive(element);
7737} or
7738{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
7739/**
7740 * An element must be an instance of type "Function class".
7741 */
7742private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7743 Type.name(type,"Function class");
7744 find directInstanceOf(problem,interpretation,element,type);
7745}
7746private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
7747 find interpretation(problem,interpretation);
7748 PartialInterpretation.scopes(interpretation,scope);
7749 Scope.targetTypeInterpretation(scope,typeInterpretation);
7750 Scope.maxNewElements(scope,0);
7751 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
7752 Type.name(type,"Function class");
7753}
7754
7755/**
7756 * An element may be an instance of type "Function class".
7757 */
7758private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
7759{
7760 find interpretation(problem,interpretation);
7761 PartialInterpretation.newElements(interpretation,element);
7762 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7763 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7764 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7765 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7766 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7767 neg find scopeDisallowsNewFunction_class(problem, interpretation);
7768 neg find isPrimitive(element);
7769} or {
7770 find interpretation(problem,interpretation);
7771 PartialInterpretation.openWorldElements(interpretation,element);
7772 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7773 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7774 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7775 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7776 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7777 neg find scopeDisallowsNewFunction_class(problem, interpretation);
7778 neg find isPrimitive(element);
7779} or
7780{ find mustInstanceOfFunction_class(problem,interpretation,element); }
7781/**
7782 * An element must be an instance of type "FAMTerminator class".
7783 */
7784private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7785 Type.name(type,"FAMTerminator class");
7786 find directInstanceOf(problem,interpretation,element,type);
7787}
7788private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
7789 find interpretation(problem,interpretation);
7790 PartialInterpretation.scopes(interpretation,scope);
7791 Scope.targetTypeInterpretation(scope,typeInterpretation);
7792 Scope.maxNewElements(scope,0);
7793 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
7794 Type.name(type,"FAMTerminator class");
7795}
7796
7797/**
7798 * An element may be an instance of type "FAMTerminator class".
7799 */
7800private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
7801{
7802 find interpretation(problem,interpretation);
7803 PartialInterpretation.newElements(interpretation,element);
7804 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7805 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7806 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7807 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7808 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7809 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
7810 neg find isPrimitive(element);
7811} or {
7812 find interpretation(problem,interpretation);
7813 PartialInterpretation.openWorldElements(interpretation,element);
7814 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7815 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7816 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7817 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7818 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7819 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
7820 neg find isPrimitive(element);
7821} or
7822{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
7823/**
7824 * An element must be an instance of type "InformationLink class".
7825 */
7826private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7827 Type.name(type,"InformationLink class");
7828 find directInstanceOf(problem,interpretation,element,type);
7829}
7830private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
7831 find interpretation(problem,interpretation);
7832 PartialInterpretation.scopes(interpretation,scope);
7833 Scope.targetTypeInterpretation(scope,typeInterpretation);
7834 Scope.maxNewElements(scope,0);
7835 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
7836 Type.name(type,"InformationLink class");
7837}
7838
7839/**
7840 * An element may be an instance of type "InformationLink class".
7841 */
7842private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
7843{
7844 find interpretation(problem,interpretation);
7845 PartialInterpretation.newElements(interpretation,element);
7846 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7847 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7848 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7849 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7850 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7851 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
7852 neg find isPrimitive(element);
7853} or {
7854 find interpretation(problem,interpretation);
7855 PartialInterpretation.openWorldElements(interpretation,element);
7856 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7857 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7858 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7859 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7860 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7861 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
7862 neg find isPrimitive(element);
7863} or
7864{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
7865/**
7866 * An element must be an instance of type "FunctionalInterface class".
7867 */
7868private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7869 Type.name(type,"FunctionalInterface class");
7870 find directInstanceOf(problem,interpretation,element,type);
7871}
7872private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
7873 find interpretation(problem,interpretation);
7874 PartialInterpretation.scopes(interpretation,scope);
7875 Scope.targetTypeInterpretation(scope,typeInterpretation);
7876 Scope.maxNewElements(scope,0);
7877 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
7878 Type.name(type,"FunctionalInterface class");
7879}
7880
7881/**
7882 * An element may be an instance of type "FunctionalInterface class".
7883 */
7884private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
7885{
7886 find interpretation(problem,interpretation);
7887 PartialInterpretation.newElements(interpretation,element);
7888 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7889 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7890 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7891 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7892 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7893 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
7894 neg find isPrimitive(element);
7895} or {
7896 find interpretation(problem,interpretation);
7897 PartialInterpretation.openWorldElements(interpretation,element);
7898 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7899 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
7900 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7901 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7902 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7903 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
7904 neg find isPrimitive(element);
7905} or
7906{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
7907/**
7908 * An element must be an instance of type "FunctionalInput class".
7909 */
7910private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7911 Type.name(type,"FunctionalInput class");
7912 find directInstanceOf(problem,interpretation,element,type);
7913}
7914private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
7915 find interpretation(problem,interpretation);
7916 PartialInterpretation.scopes(interpretation,scope);
7917 Scope.targetTypeInterpretation(scope,typeInterpretation);
7918 Scope.maxNewElements(scope,0);
7919 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
7920 Type.name(type,"FunctionalInput class");
7921}
7922
7923/**
7924 * An element may be an instance of type "FunctionalInput class".
7925 */
7926private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
7927{
7928 find interpretation(problem,interpretation);
7929 PartialInterpretation.newElements(interpretation,element);
7930 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7931 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
7932 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7933 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7934 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7935 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7936 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
7937 neg find isPrimitive(element);
7938} or {
7939 find interpretation(problem,interpretation);
7940 PartialInterpretation.openWorldElements(interpretation,element);
7941 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7942 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
7943 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7944 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7945 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7946 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7947 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
7948 neg find isPrimitive(element);
7949} or
7950{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
7951/**
7952 * An element must be an instance of type "FunctionalOutput class".
7953 */
7954private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7955 Type.name(type,"FunctionalOutput class");
7956 find directInstanceOf(problem,interpretation,element,type);
7957}
7958private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
7959 find interpretation(problem,interpretation);
7960 PartialInterpretation.scopes(interpretation,scope);
7961 Scope.targetTypeInterpretation(scope,typeInterpretation);
7962 Scope.maxNewElements(scope,0);
7963 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
7964 Type.name(type,"FunctionalOutput class");
7965}
7966
7967/**
7968 * An element may be an instance of type "FunctionalOutput class".
7969 */
7970private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
7971{
7972 find interpretation(problem,interpretation);
7973 PartialInterpretation.newElements(interpretation,element);
7974 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7975 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
7976 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7977 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7978 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7979 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7980 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
7981 neg find isPrimitive(element);
7982} or {
7983 find interpretation(problem,interpretation);
7984 PartialInterpretation.openWorldElements(interpretation,element);
7985 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
7986 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
7987 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
7988 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
7989 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
7990 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
7991 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
7992 neg find isPrimitive(element);
7993} or
7994{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
7995/**
7996 * An element must be an instance of type "FunctionalData class".
7997 */
7998private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
7999 Type.name(type,"FunctionalData class");
8000 find directInstanceOf(problem,interpretation,element,type);
8001}
8002private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
8003 find interpretation(problem,interpretation);
8004 PartialInterpretation.scopes(interpretation,scope);
8005 Scope.targetTypeInterpretation(scope,typeInterpretation);
8006 Scope.maxNewElements(scope,0);
8007 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
8008 Type.name(type,"FunctionalData class");
8009}
8010
8011/**
8012 * An element may be an instance of type "FunctionalData class".
8013 */
8014private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
8015{
8016 find interpretation(problem,interpretation);
8017 PartialInterpretation.newElements(interpretation,element);
8018 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
8019 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
8020 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
8021 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
8022 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
8023 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
8024 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
8025 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
8026 neg find isPrimitive(element);
8027} or {
8028 find interpretation(problem,interpretation);
8029 PartialInterpretation.openWorldElements(interpretation,element);
8030 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
8031 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
8032 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
8033 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
8034 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
8035 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
8036 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
8037 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
8038 neg find isPrimitive(element);
8039} or
8040{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
8041/**
8042 * An element must be an instance of type "FunctionType enum".
8043 */
8044private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
8045 Type.name(type,"FunctionType enum");
8046 find directInstanceOf(problem,interpretation,element,type);
8047}
8048private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
8049 find interpretation(problem,interpretation);
8050 PartialInterpretation.scopes(interpretation,scope);
8051 Scope.targetTypeInterpretation(scope,typeInterpretation);
8052 Scope.maxNewElements(scope,0);
8053 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
8054 Type.name(type,"FunctionType enum");
8055}
8056
8057/**
8058 * An element may be an instance of type "FunctionType enum".
8059 */
8060private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
8061{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
8062/**
8063 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
8064 */
8065private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
8066 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
8067 find directInstanceOf(problem,interpretation,element,type);
8068}
8069private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
8070 find interpretation(problem,interpretation);
8071 PartialInterpretation.scopes(interpretation,scope);
8072 Scope.targetTypeInterpretation(scope,typeInterpretation);
8073 Scope.maxNewElements(scope,0);
8074 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
8075 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
8076}
8077
8078/**
8079 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
8080 */
8081private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
8082{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
8083/**
8084 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
8085 */
8086private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
8087 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
8088 find directInstanceOf(problem,interpretation,element,type);
8089}
8090private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
8091 find interpretation(problem,interpretation);
8092 PartialInterpretation.scopes(interpretation,scope);
8093 Scope.targetTypeInterpretation(scope,typeInterpretation);
8094 Scope.maxNewElements(scope,0);
8095 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
8096 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
8097}
8098
8099/**
8100 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
8101 */
8102private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
8103{
8104 find interpretation(problem,interpretation);
8105 PartialInterpretation.newElements(interpretation,element);
8106 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
8107 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
8108 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
8109 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
8110 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
8111 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
8112 neg find isPrimitive(element);
8113} or {
8114 find interpretation(problem,interpretation);
8115 PartialInterpretation.openWorldElements(interpretation,element);
8116 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
8117 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
8118 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
8119 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
8120 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
8121 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
8122 neg find isPrimitive(element);
8123} or
8124{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
8125
8126//////////
8127// 1.2 Relation Declaration Indexers
8128//////////
8129/**
8130 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
8131 */
8132private pattern mustInRelationinterface_reference_FunctionalElement(
8133 problem:LogicProblem, interpretation:PartialInterpretation,
8134 source: DefinedElement, target:DefinedElement)
8135{
8136 find interpretation(problem,interpretation);
8137 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8138 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
8139 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8140 BinaryElementRelationLink.param1(link,source);
8141 BinaryElementRelationLink.param2(link,target);
8142}
8143/**
8144 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
8145 */
8146private pattern mayInRelationinterface_reference_FunctionalElement(
8147 problem:LogicProblem, interpretation:PartialInterpretation,
8148 source: DefinedElement, target:DefinedElement)
8149{
8150 find interpretation(problem,interpretation);
8151 // The two endpoint of the link have to exist
8152 find mayExist(problem, interpretation, source);
8153 find mayExist(problem, interpretation, target);
8154 // Type consistency
8155 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
8156 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
8157 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8158 // the upper bound of the multiplicity should be considered.
8159 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
8160 check(numberOfExistingReferences < 1);
8161 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
8162 // the upper bound of the opposite reference multiplicity should be considered.
8163 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
8164 check(numberOfExistingOppositeReferences < 1);
8165 // The reference is containment, then a new reference cannot be create if:
8166 // 1. Multiple parents
8167 neg find mustContains4(problem,interpretation,_,target);
8168 // 2. Circle in the containment hierarchy
8169 neg find mustTransitiveContains(source,target);
8170} or {
8171 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
8172}
8173/**
8174 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
8175 */
8176private pattern mustInRelationmodel_reference_FunctionalElement(
8177 problem:LogicProblem, interpretation:PartialInterpretation,
8178 source: DefinedElement, target:DefinedElement)
8179{
8180 find interpretation(problem,interpretation);
8181 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8182 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
8183 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8184 BinaryElementRelationLink.param1(link,source);
8185 BinaryElementRelationLink.param2(link,target);
8186}
8187/**
8188 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
8189 */
8190private pattern mayInRelationmodel_reference_FunctionalElement(
8191 problem:LogicProblem, interpretation:PartialInterpretation,
8192 source: DefinedElement, target:DefinedElement)
8193{
8194 find interpretation(problem,interpretation);
8195 // The two endpoint of the link have to exist
8196 find mayExist(problem, interpretation, source);
8197 find mayExist(problem, interpretation, target);
8198 // Type consistency
8199 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
8200 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
8201 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8202 // the upper bound of the multiplicity should be considered.
8203 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
8204 check(numberOfExistingReferences < 1);
8205} or {
8206 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
8207}
8208/**
8209 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
8210 */
8211private pattern mustInRelationparent_reference_FunctionalElement(
8212 problem:LogicProblem, interpretation:PartialInterpretation,
8213 source: DefinedElement, target:DefinedElement)
8214{
8215 find interpretation(problem,interpretation);
8216 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8217 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
8218 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8219 BinaryElementRelationLink.param1(link,source);
8220 BinaryElementRelationLink.param2(link,target);
8221}
8222/**
8223 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
8224 */
8225private pattern mayInRelationparent_reference_FunctionalElement(
8226 problem:LogicProblem, interpretation:PartialInterpretation,
8227 source: DefinedElement, target:DefinedElement)
8228{
8229 find interpretation(problem,interpretation);
8230 // The two endpoint of the link have to exist
8231 find mayExist(problem, interpretation, source);
8232 find mayExist(problem, interpretation, target);
8233 // Type consistency
8234 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
8235 find mayInstanceOfFunction_class(problem,interpretation,target);
8236 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8237 // the upper bound of the multiplicity should be considered.
8238 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
8239 check(numberOfExistingReferences < 1);
8240 // The eOpposite of the reference is containment, then a referene cannot be created if
8241 // 1. Multiple parents
8242 neg find mustContains4(problem,interpretation,source,_);
8243 // 2. Circle in the containment hierarchy
8244 neg find mustTransitiveContains(source,target);
8245} or {
8246 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
8247}
8248/**
8249 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
8250 */
8251private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
8252 problem:LogicProblem, interpretation:PartialInterpretation,
8253 source: DefinedElement, target:DefinedElement)
8254{
8255 find interpretation(problem,interpretation);
8256 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8257 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
8258 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8259 BinaryElementRelationLink.param1(link,source);
8260 BinaryElementRelationLink.param2(link,target);
8261}
8262/**
8263 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
8264 */
8265private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
8266 problem:LogicProblem, interpretation:PartialInterpretation,
8267 source: DefinedElement, target:DefinedElement)
8268{
8269 find interpretation(problem,interpretation);
8270 // The two endpoint of the link have to exist
8271 find mayExist(problem, interpretation, source);
8272 find mayExist(problem, interpretation, target);
8273 // Type consistency
8274 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
8275 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
8276 // The reference is containment, then a new reference cannot be create if:
8277 // 1. Multiple parents
8278 neg find mustContains4(problem,interpretation,_,target);
8279 // 2. Circle in the containment hierarchy
8280 neg find mustTransitiveContains(source,target);
8281} or {
8282 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
8283}
8284/**
8285 * Matcher for detecting tuples t where []subElements reference Function(source,target)
8286 */
8287private pattern mustInRelationsubElements_reference_Function(
8288 problem:LogicProblem, interpretation:PartialInterpretation,
8289 source: DefinedElement, target:DefinedElement)
8290{
8291 find interpretation(problem,interpretation);
8292 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8293 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
8294 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8295 BinaryElementRelationLink.param1(link,source);
8296 BinaryElementRelationLink.param2(link,target);
8297}
8298/**
8299 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
8300 */
8301private pattern mayInRelationsubElements_reference_Function(
8302 problem:LogicProblem, interpretation:PartialInterpretation,
8303 source: DefinedElement, target:DefinedElement)
8304{
8305 find interpretation(problem,interpretation);
8306 // The two endpoint of the link have to exist
8307 find mayExist(problem, interpretation, source);
8308 find mayExist(problem, interpretation, target);
8309 // Type consistency
8310 find mayInstanceOfFunction_class(problem,interpretation,source);
8311 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
8312 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
8313 // the upper bound of the opposite reference multiplicity should be considered.
8314 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
8315 check(numberOfExistingOppositeReferences < 1);
8316 // The reference is containment, then a new reference cannot be create if:
8317 // 1. Multiple parents
8318 neg find mustContains4(problem,interpretation,_,target);
8319 // 2. Circle in the containment hierarchy
8320 neg find mustTransitiveContains(source,target);
8321} or {
8322 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
8323}
8324/**
8325 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
8326 */
8327private pattern mustInRelationdata_reference_FAMTerminator(
8328 problem:LogicProblem, interpretation:PartialInterpretation,
8329 source: DefinedElement, target:DefinedElement)
8330{
8331 find interpretation(problem,interpretation);
8332 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8333 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
8334 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8335 BinaryElementRelationLink.param1(link,source);
8336 BinaryElementRelationLink.param2(link,target);
8337}
8338/**
8339 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
8340 */
8341private pattern mayInRelationdata_reference_FAMTerminator(
8342 problem:LogicProblem, interpretation:PartialInterpretation,
8343 source: DefinedElement, target:DefinedElement)
8344{
8345 find interpretation(problem,interpretation);
8346 // The two endpoint of the link have to exist
8347 find mayExist(problem, interpretation, source);
8348 find mayExist(problem, interpretation, target);
8349 // Type consistency
8350 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
8351 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
8352 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8353 // the upper bound of the multiplicity should be considered.
8354 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
8355 check(numberOfExistingReferences < 1);
8356 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
8357 // the upper bound of the opposite reference multiplicity should be considered.
8358 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
8359 check(numberOfExistingOppositeReferences < 1);
8360 // The eOpposite of the reference is containment, then a referene cannot be created if
8361 // 1. Multiple parents
8362 neg find mustContains4(problem,interpretation,source,_);
8363 // 2. Circle in the containment hierarchy
8364 neg find mustTransitiveContains(source,target);
8365} or {
8366 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
8367}
8368/**
8369 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
8370 */
8371private pattern mustInRelationfrom_reference_InformationLink(
8372 problem:LogicProblem, interpretation:PartialInterpretation,
8373 source: DefinedElement, target:DefinedElement)
8374{
8375 find interpretation(problem,interpretation);
8376 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8377 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
8378 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8379 BinaryElementRelationLink.param1(link,source);
8380 BinaryElementRelationLink.param2(link,target);
8381}
8382/**
8383 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
8384 */
8385private pattern mayInRelationfrom_reference_InformationLink(
8386 problem:LogicProblem, interpretation:PartialInterpretation,
8387 source: DefinedElement, target:DefinedElement)
8388{
8389 find interpretation(problem,interpretation);
8390 // The two endpoint of the link have to exist
8391 find mayExist(problem, interpretation, source);
8392 find mayExist(problem, interpretation, target);
8393 // Type consistency
8394 find mayInstanceOfInformationLink_class(problem,interpretation,source);
8395 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
8396 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8397 // the upper bound of the multiplicity should be considered.
8398 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
8399 check(numberOfExistingReferences < 1);
8400 // The eOpposite of the reference is containment, then a referene cannot be created if
8401 // 1. Multiple parents
8402 neg find mustContains4(problem,interpretation,source,_);
8403 // 2. Circle in the containment hierarchy
8404 neg find mustTransitiveContains(source,target);
8405} or {
8406 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
8407}
8408/**
8409 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
8410 */
8411private pattern mustInRelationto_reference_InformationLink(
8412 problem:LogicProblem, interpretation:PartialInterpretation,
8413 source: DefinedElement, target:DefinedElement)
8414{
8415 find interpretation(problem,interpretation);
8416 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8417 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
8418 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8419 BinaryElementRelationLink.param1(link,source);
8420 BinaryElementRelationLink.param2(link,target);
8421}
8422/**
8423 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
8424 */
8425private pattern mayInRelationto_reference_InformationLink(
8426 problem:LogicProblem, interpretation:PartialInterpretation,
8427 source: DefinedElement, target:DefinedElement)
8428{
8429 find interpretation(problem,interpretation);
8430 // The two endpoint of the link have to exist
8431 find mayExist(problem, interpretation, source);
8432 find mayExist(problem, interpretation, target);
8433 // Type consistency
8434 find mayInstanceOfInformationLink_class(problem,interpretation,source);
8435 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
8436 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8437 // the upper bound of the multiplicity should be considered.
8438 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
8439 check(numberOfExistingReferences < 1);
8440} or {
8441 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
8442}
8443/**
8444 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
8445 */
8446private pattern mustInRelationdata_reference_FunctionalInterface(
8447 problem:LogicProblem, interpretation:PartialInterpretation,
8448 source: DefinedElement, target:DefinedElement)
8449{
8450 find interpretation(problem,interpretation);
8451 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8452 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
8453 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8454 BinaryElementRelationLink.param1(link,source);
8455 BinaryElementRelationLink.param2(link,target);
8456}
8457/**
8458 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
8459 */
8460private pattern mayInRelationdata_reference_FunctionalInterface(
8461 problem:LogicProblem, interpretation:PartialInterpretation,
8462 source: DefinedElement, target:DefinedElement)
8463{
8464 find interpretation(problem,interpretation);
8465 // The two endpoint of the link have to exist
8466 find mayExist(problem, interpretation, source);
8467 find mayExist(problem, interpretation, target);
8468 // Type consistency
8469 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
8470 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
8471 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
8472 // the upper bound of the opposite reference multiplicity should be considered.
8473 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
8474 check(numberOfExistingOppositeReferences < 1);
8475 // The reference is containment, then a new reference cannot be create if:
8476 // 1. Multiple parents
8477 neg find mustContains4(problem,interpretation,_,target);
8478 // 2. Circle in the containment hierarchy
8479 neg find mustTransitiveContains(source,target);
8480} or {
8481 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
8482}
8483/**
8484 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
8485 */
8486private pattern mustInRelationelement_reference_FunctionalInterface(
8487 problem:LogicProblem, interpretation:PartialInterpretation,
8488 source: DefinedElement, target:DefinedElement)
8489{
8490 find interpretation(problem,interpretation);
8491 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8492 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
8493 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8494 BinaryElementRelationLink.param1(link,source);
8495 BinaryElementRelationLink.param2(link,target);
8496}
8497/**
8498 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
8499 */
8500private pattern mayInRelationelement_reference_FunctionalInterface(
8501 problem:LogicProblem, interpretation:PartialInterpretation,
8502 source: DefinedElement, target:DefinedElement)
8503{
8504 find interpretation(problem,interpretation);
8505 // The two endpoint of the link have to exist
8506 find mayExist(problem, interpretation, source);
8507 find mayExist(problem, interpretation, target);
8508 // Type consistency
8509 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
8510 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
8511 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8512 // the upper bound of the multiplicity should be considered.
8513 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
8514 check(numberOfExistingReferences < 1);
8515 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
8516 // the upper bound of the opposite reference multiplicity should be considered.
8517 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
8518 check(numberOfExistingOppositeReferences < 1);
8519 // The eOpposite of the reference is containment, then a referene cannot be created if
8520 // 1. Multiple parents
8521 neg find mustContains4(problem,interpretation,source,_);
8522 // 2. Circle in the containment hierarchy
8523 neg find mustTransitiveContains(source,target);
8524} or {
8525 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
8526}
8527/**
8528 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
8529 */
8530private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
8531 problem:LogicProblem, interpretation:PartialInterpretation,
8532 source: DefinedElement, target:DefinedElement)
8533{
8534 find interpretation(problem,interpretation);
8535 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8536 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
8537 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8538 BinaryElementRelationLink.param1(link,source);
8539 BinaryElementRelationLink.param2(link,target);
8540}
8541/**
8542 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
8543 */
8544private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
8545 problem:LogicProblem, interpretation:PartialInterpretation,
8546 source: DefinedElement, target:DefinedElement)
8547{
8548 find interpretation(problem,interpretation);
8549 // The two endpoint of the link have to exist
8550 find mayExist(problem, interpretation, source);
8551 find mayExist(problem, interpretation, target);
8552 // Type consistency
8553 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
8554 find mayInstanceOfInformationLink_class(problem,interpretation,target);
8555 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
8556 // the upper bound of the opposite reference multiplicity should be considered.
8557 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
8558 check(numberOfExistingOppositeReferences < 1);
8559} or {
8560 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
8561}
8562/**
8563 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
8564 */
8565private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
8566 problem:LogicProblem, interpretation:PartialInterpretation,
8567 source: DefinedElement, target:DefinedElement)
8568{
8569 find interpretation(problem,interpretation);
8570 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8571 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
8572 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8573 BinaryElementRelationLink.param1(link,source);
8574 BinaryElementRelationLink.param2(link,target);
8575}
8576/**
8577 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
8578 */
8579private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
8580 problem:LogicProblem, interpretation:PartialInterpretation,
8581 source: DefinedElement, target:DefinedElement)
8582{
8583 find interpretation(problem,interpretation);
8584 // The two endpoint of the link have to exist
8585 find mayExist(problem, interpretation, source);
8586 find mayExist(problem, interpretation, target);
8587 // Type consistency
8588 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
8589 find mayInstanceOfInformationLink_class(problem,interpretation,target);
8590 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
8591 // the upper bound of the opposite reference multiplicity should be considered.
8592 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
8593 check(numberOfExistingOppositeReferences < 1);
8594 // The reference is containment, then a new reference cannot be create if:
8595 // 1. Multiple parents
8596 neg find mustContains4(problem,interpretation,_,target);
8597 // 2. Circle in the containment hierarchy
8598 neg find mustTransitiveContains(source,target);
8599} or {
8600 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
8601}
8602/**
8603 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
8604 */
8605private pattern mustInRelationterminator_reference_FunctionalData(
8606 problem:LogicProblem, interpretation:PartialInterpretation,
8607 source: DefinedElement, target:DefinedElement)
8608{
8609 find interpretation(problem,interpretation);
8610 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8611 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
8612 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8613 BinaryElementRelationLink.param1(link,source);
8614 BinaryElementRelationLink.param2(link,target);
8615}
8616/**
8617 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
8618 */
8619private pattern mayInRelationterminator_reference_FunctionalData(
8620 problem:LogicProblem, interpretation:PartialInterpretation,
8621 source: DefinedElement, target:DefinedElement)
8622{
8623 find interpretation(problem,interpretation);
8624 // The two endpoint of the link have to exist
8625 find mayExist(problem, interpretation, source);
8626 find mayExist(problem, interpretation, target);
8627 // Type consistency
8628 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
8629 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
8630 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8631 // the upper bound of the multiplicity should be considered.
8632 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
8633 check(numberOfExistingReferences < 1);
8634 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
8635 // the upper bound of the opposite reference multiplicity should be considered.
8636 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
8637 check(numberOfExistingOppositeReferences < 1);
8638 // The reference is containment, then a new reference cannot be create if:
8639 // 1. Multiple parents
8640 neg find mustContains4(problem,interpretation,_,target);
8641 // 2. Circle in the containment hierarchy
8642 neg find mustTransitiveContains(source,target);
8643} or {
8644 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
8645}
8646/**
8647 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
8648 */
8649private pattern mustInRelationinterface_reference_FunctionalData(
8650 problem:LogicProblem, interpretation:PartialInterpretation,
8651 source: DefinedElement, target:DefinedElement)
8652{
8653 find interpretation(problem,interpretation);
8654 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8655 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
8656 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8657 BinaryElementRelationLink.param1(link,source);
8658 BinaryElementRelationLink.param2(link,target);
8659}
8660/**
8661 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
8662 */
8663private pattern mayInRelationinterface_reference_FunctionalData(
8664 problem:LogicProblem, interpretation:PartialInterpretation,
8665 source: DefinedElement, target:DefinedElement)
8666{
8667 find interpretation(problem,interpretation);
8668 // The two endpoint of the link have to exist
8669 find mayExist(problem, interpretation, source);
8670 find mayExist(problem, interpretation, target);
8671 // Type consistency
8672 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
8673 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
8674 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8675 // the upper bound of the multiplicity should be considered.
8676 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
8677 check(numberOfExistingReferences < 1);
8678 // The eOpposite of the reference is containment, then a referene cannot be created if
8679 // 1. Multiple parents
8680 neg find mustContains4(problem,interpretation,source,_);
8681 // 2. Circle in the containment hierarchy
8682 neg find mustTransitiveContains(source,target);
8683} or {
8684 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
8685}
8686/**
8687 * Matcher for detecting tuples t where []type attribute Function(source,target)
8688 */
8689private pattern mustInRelationtype_attribute_Function(
8690 problem:LogicProblem, interpretation:PartialInterpretation,
8691 source: DefinedElement, target:DefinedElement)
8692{
8693 find interpretation(problem,interpretation);
8694 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8695 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
8696 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
8697 BinaryElementRelationLink.param1(link,source);
8698 BinaryElementRelationLink.param2(link,target);
8699}
8700/**
8701 * Matcher for detecting tuples t where <>type attribute Function(source,target)
8702 */
8703private pattern mayInRelationtype_attribute_Function(
8704 problem:LogicProblem, interpretation:PartialInterpretation,
8705 source: DefinedElement, target:DefinedElement)
8706{
8707 find interpretation(problem,interpretation);
8708 // The two endpoint of the link have to exist
8709 find mayExist(problem, interpretation, source);
8710 find mayExist(problem, interpretation, target);
8711 // Type consistency
8712 find mayInstanceOfFunction_class(problem,interpretation,source);
8713 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
8714 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
8715 // the upper bound of the multiplicity should be considered.
8716 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
8717 check(numberOfExistingReferences < 1);
8718} or {
8719 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
8720}
8721
8722//////////
8723// 1.3 Relation Definition Indexers
8724//////////
8725
8726//////////
8727// 1.4 Containment Indexer
8728//////////
8729private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
8730 find mustContains4(_,_,source,target);
8731}
8732
8733private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
8734 source: DefinedElement, target: DefinedElement)
8735 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
8736
8737 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
8738
8739 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
8740
8741 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
8742
8743 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
8744
8745 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
8746
8747private pattern mustTransitiveContains(source,target) {
8748 find mustContains2+(source,target);
8749}
8750
8751//////////
8752// 2. Invalidation Indexers
8753//////////
8754// 2.1 Invalidated by WF Queries
8755//////////
8756
8757//////////
8758// 3. Unfinishedness Indexers
8759//////////
8760// 3.1 Unfinishedness Measured by Multiplicity
8761//////////
8762pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
8763 find interpretation(problem,interpretation);
8764 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8765 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
8766 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
8767 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
8768 check(numberOfExistingReferences < 1);
8769 missingMultiplicity == eval(1-numberOfExistingReferences);
8770}
8771pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
8772 find interpretation(problem,interpretation);
8773 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8774 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
8775 find mustInstanceOfInformationLink_class(problem,interpretation,object);
8776 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
8777 check(numberOfExistingReferences < 1);
8778 missingMultiplicity == eval(1-numberOfExistingReferences);
8779}
8780pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
8781 find interpretation(problem,interpretation);
8782 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
8783 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
8784 find mustInstanceOfFunction_class(problem,interpretation,object);
8785 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
8786 check(numberOfExistingReferences < 1);
8787 missingMultiplicity == eval(1-numberOfExistingReferences);
8788}
8789
8790//////////
8791// 3.2 Unfinishedness Measured by WF Queries
8792//////////
8793
8794//////////
8795// 4. Refinement Indexers
8796//////////
8797// 4.1 Object constructors
8798//////////
8799private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
8800{
8801 find interpretation(problem,interpretation);
8802 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
8803 find mustExist(problem, interpretation, root);
8804}or{
8805 find interpretation(problem,interpretation);
8806 find mustInstanceOfInformationLink_class(problem,interpretation,root);
8807 find mustExist(problem, interpretation, root);
8808}or{
8809 find interpretation(problem,interpretation);
8810 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
8811 find mustExist(problem, interpretation, root);
8812}or{
8813 find interpretation(problem,interpretation);
8814 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
8815 find mustExist(problem, interpretation, root);
8816}or{
8817 find interpretation(problem,interpretation);
8818 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
8819 find mustExist(problem, interpretation, root);
8820}or{
8821 find interpretation(problem,interpretation);
8822 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
8823 find mustExist(problem, interpretation, root);
8824}or{
8825 find interpretation(problem,interpretation);
8826 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
8827 find mustExist(problem, interpretation, root);
8828}or{
8829 find interpretation(problem,interpretation);
8830 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
8831 find mustExist(problem, interpretation, root);
8832}or{
8833 find interpretation(problem,interpretation);
8834 find mustInstanceOfFunction_class(problem,interpretation,root);
8835 find mustExist(problem, interpretation, root);
8836}or{
8837 find interpretation(problem,interpretation);
8838 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
8839 find mustExist(problem, interpretation, root);
8840}or{
8841 find interpretation(problem,interpretation);
8842 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
8843 find mustExist(problem, interpretation, root);
8844}
8845pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
8846 problem:LogicProblem, interpretation:PartialInterpretation,
8847 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
8848 container:DefinedElement)
8849{
8850 find interpretation(problem,interpretation);
8851 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8852 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
8853 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
8854 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
8855 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
8856 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
8857 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
8858 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
8859 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
8860 find mustExist(problem, interpretation, container);
8861 neg find mustExist(problem, interpretation, newObject);
8862}
8863pattern createObject_InformationLink_class(
8864 problem:LogicProblem, interpretation:PartialInterpretation,
8865 typeInterpretation:PartialComplexTypeInterpretation)
8866{
8867 find interpretation(problem,interpretation);
8868 neg find hasElementInContainment(problem,interpretation);
8869 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8870 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
8871 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
8872 find mayExist(problem, interpretation, newObject);
8873 neg find mustExist(problem, interpretation, newObject);
8874}
8875pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
8876 problem:LogicProblem, interpretation:PartialInterpretation,
8877 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
8878 container:DefinedElement)
8879{
8880 find interpretation(problem,interpretation);
8881 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8882 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
8883 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
8884 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
8885 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
8886 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
8887 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
8888 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
8889 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
8890 find mustExist(problem, interpretation, container);
8891 neg find mustExist(problem, interpretation, newObject);
8892}
8893pattern createObject_FunctionalOutput_class(
8894 problem:LogicProblem, interpretation:PartialInterpretation,
8895 typeInterpretation:PartialComplexTypeInterpretation)
8896{
8897 find interpretation(problem,interpretation);
8898 neg find hasElementInContainment(problem,interpretation);
8899 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8900 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
8901 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
8902 find mayExist(problem, interpretation, newObject);
8903 neg find mustExist(problem, interpretation, newObject);
8904}
8905pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
8906 problem:LogicProblem, interpretation:PartialInterpretation,
8907 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
8908 container:DefinedElement)
8909{
8910 find interpretation(problem,interpretation);
8911 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8912 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
8913 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
8914 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
8915 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
8916 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
8917 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
8918 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
8919 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
8920 find mustExist(problem, interpretation, container);
8921 neg find mustExist(problem, interpretation, newObject);
8922}
8923pattern createObject_FunctionalInput_class(
8924 problem:LogicProblem, interpretation:PartialInterpretation,
8925 typeInterpretation:PartialComplexTypeInterpretation)
8926{
8927 find interpretation(problem,interpretation);
8928 neg find hasElementInContainment(problem,interpretation);
8929 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8930 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
8931 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
8932 find mayExist(problem, interpretation, newObject);
8933 neg find mustExist(problem, interpretation, newObject);
8934}
8935pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
8936 problem:LogicProblem, interpretation:PartialInterpretation,
8937 typeInterpretation:PartialComplexTypeInterpretation)
8938{
8939 find interpretation(problem,interpretation);
8940 neg find hasElementInContainment(problem,interpretation);
8941 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8942 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
8943 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
8944 find mayExist(problem, interpretation, newObject);
8945 neg find mustExist(problem, interpretation, newObject);
8946}
8947pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
8948 problem:LogicProblem, interpretation:PartialInterpretation,
8949 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
8950 container:DefinedElement)
8951{
8952 find interpretation(problem,interpretation);
8953 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8954 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
8955 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
8956 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
8957 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
8958 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
8959 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
8960 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
8961 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
8962 find mustExist(problem, interpretation, container);
8963 neg find mustExist(problem, interpretation, newObject);
8964}
8965pattern createObject_FunctionalInterface_class(
8966 problem:LogicProblem, interpretation:PartialInterpretation,
8967 typeInterpretation:PartialComplexTypeInterpretation)
8968{
8969 find interpretation(problem,interpretation);
8970 neg find hasElementInContainment(problem,interpretation);
8971 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8972 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
8973 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
8974 find mayExist(problem, interpretation, newObject);
8975 neg find mustExist(problem, interpretation, newObject);
8976}
8977pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
8978 problem:LogicProblem, interpretation:PartialInterpretation,
8979 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
8980 container:DefinedElement)
8981{
8982 find interpretation(problem,interpretation);
8983 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
8984 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
8985 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
8986 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
8987 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
8988 find mayInstanceOfFunction_class(problem,interpretation,newObject);
8989 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
8990 find mustExist(problem, interpretation, container);
8991 neg find mustExist(problem, interpretation, newObject);
8992}
8993pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
8994 problem:LogicProblem, interpretation:PartialInterpretation,
8995 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
8996 container:DefinedElement)
8997{
8998 find interpretation(problem,interpretation);
8999 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9000 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
9001 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9002 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
9003 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
9004 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
9005 find mustInstanceOfFunction_class(problem,interpretation,container);
9006 find mayInstanceOfFunction_class(problem,interpretation,newObject);
9007 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
9008 find mustExist(problem, interpretation, container);
9009 neg find mustExist(problem, interpretation, newObject);
9010}
9011pattern createObject_Function_class(
9012 problem:LogicProblem, interpretation:PartialInterpretation,
9013 typeInterpretation:PartialComplexTypeInterpretation)
9014{
9015 find interpretation(problem,interpretation);
9016 neg find hasElementInContainment(problem,interpretation);
9017 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9018 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
9019 find mayInstanceOfFunction_class(problem,interpretation,newObject);
9020 find mayExist(problem, interpretation, newObject);
9021 neg find mustExist(problem, interpretation, newObject);
9022}
9023pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
9024 problem:LogicProblem, interpretation:PartialInterpretation,
9025 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
9026 container:DefinedElement)
9027{
9028 find interpretation(problem,interpretation);
9029 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9030 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
9031 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
9032 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
9033 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
9034 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
9035 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
9036 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
9037 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
9038 find mustExist(problem, interpretation, container);
9039 neg find mustExist(problem, interpretation, newObject);
9040}
9041pattern createObject_FAMTerminator_class(
9042 problem:LogicProblem, interpretation:PartialInterpretation,
9043 typeInterpretation:PartialComplexTypeInterpretation)
9044{
9045 find interpretation(problem,interpretation);
9046 neg find hasElementInContainment(problem,interpretation);
9047 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9048 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
9049 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
9050 find mayExist(problem, interpretation, newObject);
9051 neg find mustExist(problem, interpretation, newObject);
9052}
9053
9054//////////
9055// 4.2 Type refinement
9056//////////
9057pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
9058 find interpretation(problem,interpretation);
9059 PartialInterpretation.newElements(interpretation,element);
9060 find mayInstanceOfInformationLink_class(problem,interpretation,element);
9061 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9062 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9063 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9064 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9065 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9066 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9067}
9068pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
9069 find interpretation(problem,interpretation);
9070 PartialInterpretation.newElements(interpretation,element);
9071 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
9072 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9073 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
9074 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
9075 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9076 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9077 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9078 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9079}
9080pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
9081 find interpretation(problem,interpretation);
9082 PartialInterpretation.newElements(interpretation,element);
9083 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
9084 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9085 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
9086 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
9087 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9088 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9089 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9090 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9091}
9092pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
9093 find interpretation(problem,interpretation);
9094 PartialInterpretation.newElements(interpretation,element);
9095 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
9096 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9097 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
9098 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9099 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9100 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9101 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9102}
9103pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
9104 find interpretation(problem,interpretation);
9105 PartialInterpretation.newElements(interpretation,element);
9106 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
9107 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9108 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9109 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9110 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9111 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9112 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9113}
9114pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
9115 find interpretation(problem,interpretation);
9116 PartialInterpretation.newElements(interpretation,element);
9117 find mayInstanceOfFunction_class(problem,interpretation,element);
9118 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9119 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9120 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9121 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9122 neg find mustInstanceOfFunction_class(problem,interpretation,element);
9123 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9124}
9125pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
9126 find interpretation(problem,interpretation);
9127 PartialInterpretation.newElements(interpretation,element);
9128 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
9129 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9130 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9131 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9132 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9133 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9134 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9135}
9136
9137//////////
9138// 4.3 Relation refinement
9139//////////
9140pattern refineRelation_model_reference_FunctionalElement(
9141 problem:LogicProblem, interpretation:PartialInterpretation,
9142 relationIterpretation:PartialRelationInterpretation,
9143 from: DefinedElement, to: DefinedElement)
9144{
9145 find interpretation(problem,interpretation);
9146 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9147 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
9148 find mustExist(problem, interpretation, from);
9149 find mustExist(problem, interpretation, to);
9150 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
9151 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
9152 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
9153 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
9154}
9155pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
9156 problem:LogicProblem, interpretation:PartialInterpretation,
9157 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
9158 from: DefinedElement, to: DefinedElement)
9159{
9160 find interpretation(problem,interpretation);
9161 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9162 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
9163 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
9164 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
9165 find mustExist(problem, interpretation, from);
9166 find mustExist(problem, interpretation, to);
9167 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
9168 find mustInstanceOfInformationLink_class(problem,interpretation,to);
9169 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
9170 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
9171}
9172pattern refineRelation_type_attribute_Function(
9173 problem:LogicProblem, interpretation:PartialInterpretation,
9174 relationIterpretation:PartialRelationInterpretation,
9175 from: DefinedElement, to: DefinedElement)
9176{
9177 find interpretation(problem,interpretation);
9178 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9179 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
9180 find mustExist(problem, interpretation, from);
9181 find mustExist(problem, interpretation, to);
9182 find mustInstanceOfFunction_class(problem,interpretation,from);
9183 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
9184 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
9185 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
9186}
9187import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
9188import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
9189import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
9190
9191//////////
9192// 0. Util
9193//////////
9194private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
9195 PartialInterpretation.problem(interpretation,problem);
9196}
9197
9198/////////////////////////
9199// 0.1 Existence
9200/////////////////////////
9201private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9202 find interpretation(problem,interpretation);
9203 LogicProblem.elements(problem,element);
9204} or {
9205 find interpretation(problem,interpretation);
9206 PartialInterpretation.newElements(interpretation,element);
9207}
9208
9209private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9210 find mustExist(problem,interpretation,element);
9211} or {
9212 find interpretation(problem,interpretation);
9213 neg find elementCloseWorld(element);
9214 PartialInterpretation.openWorldElements(interpretation,element);
9215}
9216
9217private pattern elementCloseWorld(element:DefinedElement) {
9218 PartialInterpretation.openWorldElements(i,element);
9219 PartialInterpretation.maxNewElements(i,0);
9220} or {
9221 Scope.targetTypeInterpretation(scope,interpretation);
9222 PartialTypeInterpratation.elements(interpretation,element);
9223 Scope.maxNewElements(scope,0);
9224}
9225
9226////////////////////////
9227// 0.2 Equivalence
9228////////////////////////
9229pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
9230 find mayExist(problem,interpretation,a);
9231 find mayExist(problem,interpretation,b);
9232 a == b;
9233}
9234
9235////////////////////////
9236// 0.3 Required Patterns by TypeIndexer
9237////////////////////////
9238private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
9239 find interpretation(problem,interpretation);
9240 LogicProblem.types(problem,type);
9241 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
9242 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9243}
9244
9245private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
9246 find interpretation(problem,interpretation);
9247 LogicProblem.types(problem,type);
9248 TypeDefinition.elements(type,element);
9249} or {
9250 find interpretation(problem,interpretation);
9251 find typeInterpretation(problem,interpretation,type,typeInterpretation);
9252 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
9253}
9254
9255private pattern isPrimitive(element: PrimitiveElement) {
9256 PrimitiveElement(element);
9257}
9258
9259//////////
9260// 1. Problem-Specific Base Indexers
9261//////////
9262// 1.1 Type Indexers
9263//////////
9264// 1.1.1 primitive Type Indexers
9265//////////
9266
9267//////////
9268// 1.1.2 domain-specific Type Indexers
9269//////////
9270/**
9271 * An element must be an instance of type "FunctionalElement class".
9272 */
9273private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9274 Type.name(type,"FunctionalElement class");
9275 find directInstanceOf(problem,interpretation,element,type);
9276}
9277private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
9278 find interpretation(problem,interpretation);
9279 PartialInterpretation.scopes(interpretation,scope);
9280 Scope.targetTypeInterpretation(scope,typeInterpretation);
9281 Scope.maxNewElements(scope,0);
9282 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9283 Type.name(type,"FunctionalElement class");
9284}
9285
9286/**
9287 * An element may be an instance of type "FunctionalElement class".
9288 */
9289private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9290{
9291 find interpretation(problem,interpretation);
9292 PartialInterpretation.newElements(interpretation,element);
9293 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9294 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9295 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9296 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9297 neg find mustInstanceOfFunction_class(problem,interpretation,element);
9298 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9299 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
9300 neg find isPrimitive(element);
9301} or {
9302 find interpretation(problem,interpretation);
9303 PartialInterpretation.openWorldElements(interpretation,element);
9304 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9305 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9306 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9307 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9308 neg find mustInstanceOfFunction_class(problem,interpretation,element);
9309 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9310 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
9311 neg find isPrimitive(element);
9312} or
9313{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
9314/**
9315 * An element must be an instance of type "FunctionalArchitectureModel class".
9316 */
9317private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9318 Type.name(type,"FunctionalArchitectureModel class");
9319 find directInstanceOf(problem,interpretation,element,type);
9320}
9321private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
9322 find interpretation(problem,interpretation);
9323 PartialInterpretation.scopes(interpretation,scope);
9324 Scope.targetTypeInterpretation(scope,typeInterpretation);
9325 Scope.maxNewElements(scope,0);
9326 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9327 Type.name(type,"FunctionalArchitectureModel class");
9328}
9329
9330/**
9331 * An element may be an instance of type "FunctionalArchitectureModel class".
9332 */
9333private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9334{
9335 find interpretation(problem,interpretation);
9336 PartialInterpretation.newElements(interpretation,element);
9337 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9338 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
9339 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9340 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9341 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9342 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9343 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
9344 neg find isPrimitive(element);
9345} or {
9346 find interpretation(problem,interpretation);
9347 PartialInterpretation.openWorldElements(interpretation,element);
9348 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9349 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
9350 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9351 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9352 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9353 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9354 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
9355 neg find isPrimitive(element);
9356} or
9357{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
9358/**
9359 * An element must be an instance of type "Function class".
9360 */
9361private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9362 Type.name(type,"Function class");
9363 find directInstanceOf(problem,interpretation,element,type);
9364}
9365private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
9366 find interpretation(problem,interpretation);
9367 PartialInterpretation.scopes(interpretation,scope);
9368 Scope.targetTypeInterpretation(scope,typeInterpretation);
9369 Scope.maxNewElements(scope,0);
9370 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9371 Type.name(type,"Function class");
9372}
9373
9374/**
9375 * An element may be an instance of type "Function class".
9376 */
9377private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9378{
9379 find interpretation(problem,interpretation);
9380 PartialInterpretation.newElements(interpretation,element);
9381 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9382 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9383 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9384 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9385 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9386 neg find scopeDisallowsNewFunction_class(problem, interpretation);
9387 neg find isPrimitive(element);
9388} or {
9389 find interpretation(problem,interpretation);
9390 PartialInterpretation.openWorldElements(interpretation,element);
9391 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9392 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9393 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9394 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9395 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9396 neg find scopeDisallowsNewFunction_class(problem, interpretation);
9397 neg find isPrimitive(element);
9398} or
9399{ find mustInstanceOfFunction_class(problem,interpretation,element); }
9400/**
9401 * An element must be an instance of type "FAMTerminator class".
9402 */
9403private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9404 Type.name(type,"FAMTerminator class");
9405 find directInstanceOf(problem,interpretation,element,type);
9406}
9407private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
9408 find interpretation(problem,interpretation);
9409 PartialInterpretation.scopes(interpretation,scope);
9410 Scope.targetTypeInterpretation(scope,typeInterpretation);
9411 Scope.maxNewElements(scope,0);
9412 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9413 Type.name(type,"FAMTerminator class");
9414}
9415
9416/**
9417 * An element may be an instance of type "FAMTerminator class".
9418 */
9419private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9420{
9421 find interpretation(problem,interpretation);
9422 PartialInterpretation.newElements(interpretation,element);
9423 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9424 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9425 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9426 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9427 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9428 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
9429 neg find isPrimitive(element);
9430} or {
9431 find interpretation(problem,interpretation);
9432 PartialInterpretation.openWorldElements(interpretation,element);
9433 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9434 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9435 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9436 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9437 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9438 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
9439 neg find isPrimitive(element);
9440} or
9441{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
9442/**
9443 * An element must be an instance of type "InformationLink class".
9444 */
9445private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9446 Type.name(type,"InformationLink class");
9447 find directInstanceOf(problem,interpretation,element,type);
9448}
9449private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
9450 find interpretation(problem,interpretation);
9451 PartialInterpretation.scopes(interpretation,scope);
9452 Scope.targetTypeInterpretation(scope,typeInterpretation);
9453 Scope.maxNewElements(scope,0);
9454 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9455 Type.name(type,"InformationLink class");
9456}
9457
9458/**
9459 * An element may be an instance of type "InformationLink class".
9460 */
9461private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9462{
9463 find interpretation(problem,interpretation);
9464 PartialInterpretation.newElements(interpretation,element);
9465 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9466 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9467 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9468 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9469 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9470 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
9471 neg find isPrimitive(element);
9472} or {
9473 find interpretation(problem,interpretation);
9474 PartialInterpretation.openWorldElements(interpretation,element);
9475 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9476 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9477 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9478 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9479 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9480 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
9481 neg find isPrimitive(element);
9482} or
9483{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
9484/**
9485 * An element must be an instance of type "FunctionalInterface class".
9486 */
9487private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9488 Type.name(type,"FunctionalInterface class");
9489 find directInstanceOf(problem,interpretation,element,type);
9490}
9491private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
9492 find interpretation(problem,interpretation);
9493 PartialInterpretation.scopes(interpretation,scope);
9494 Scope.targetTypeInterpretation(scope,typeInterpretation);
9495 Scope.maxNewElements(scope,0);
9496 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9497 Type.name(type,"FunctionalInterface class");
9498}
9499
9500/**
9501 * An element may be an instance of type "FunctionalInterface class".
9502 */
9503private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9504{
9505 find interpretation(problem,interpretation);
9506 PartialInterpretation.newElements(interpretation,element);
9507 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9508 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9509 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9510 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9511 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9512 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
9513 neg find isPrimitive(element);
9514} or {
9515 find interpretation(problem,interpretation);
9516 PartialInterpretation.openWorldElements(interpretation,element);
9517 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9518 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9519 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9520 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9521 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9522 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
9523 neg find isPrimitive(element);
9524} or
9525{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
9526/**
9527 * An element must be an instance of type "FunctionalInput class".
9528 */
9529private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9530 Type.name(type,"FunctionalInput class");
9531 find directInstanceOf(problem,interpretation,element,type);
9532}
9533private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
9534 find interpretation(problem,interpretation);
9535 PartialInterpretation.scopes(interpretation,scope);
9536 Scope.targetTypeInterpretation(scope,typeInterpretation);
9537 Scope.maxNewElements(scope,0);
9538 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9539 Type.name(type,"FunctionalInput class");
9540}
9541
9542/**
9543 * An element may be an instance of type "FunctionalInput class".
9544 */
9545private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9546{
9547 find interpretation(problem,interpretation);
9548 PartialInterpretation.newElements(interpretation,element);
9549 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9550 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9551 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9552 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
9553 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9554 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9555 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
9556 neg find isPrimitive(element);
9557} or {
9558 find interpretation(problem,interpretation);
9559 PartialInterpretation.openWorldElements(interpretation,element);
9560 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9561 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9562 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9563 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
9564 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9565 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9566 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
9567 neg find isPrimitive(element);
9568} or
9569{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
9570/**
9571 * An element must be an instance of type "FunctionalOutput class".
9572 */
9573private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9574 Type.name(type,"FunctionalOutput class");
9575 find directInstanceOf(problem,interpretation,element,type);
9576}
9577private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
9578 find interpretation(problem,interpretation);
9579 PartialInterpretation.scopes(interpretation,scope);
9580 Scope.targetTypeInterpretation(scope,typeInterpretation);
9581 Scope.maxNewElements(scope,0);
9582 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9583 Type.name(type,"FunctionalOutput class");
9584}
9585
9586/**
9587 * An element may be an instance of type "FunctionalOutput class".
9588 */
9589private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9590{
9591 find interpretation(problem,interpretation);
9592 PartialInterpretation.newElements(interpretation,element);
9593 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
9594 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9595 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9596 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9597 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9598 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9599 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
9600 neg find isPrimitive(element);
9601} or {
9602 find interpretation(problem,interpretation);
9603 PartialInterpretation.openWorldElements(interpretation,element);
9604 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
9605 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9606 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9607 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9608 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9609 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9610 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
9611 neg find isPrimitive(element);
9612} or
9613{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
9614/**
9615 * An element must be an instance of type "FunctionalData class".
9616 */
9617private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9618 Type.name(type,"FunctionalData class");
9619 find directInstanceOf(problem,interpretation,element,type);
9620}
9621private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
9622 find interpretation(problem,interpretation);
9623 PartialInterpretation.scopes(interpretation,scope);
9624 Scope.targetTypeInterpretation(scope,typeInterpretation);
9625 Scope.maxNewElements(scope,0);
9626 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9627 Type.name(type,"FunctionalData class");
9628}
9629
9630/**
9631 * An element may be an instance of type "FunctionalData class".
9632 */
9633private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9634{
9635 find interpretation(problem,interpretation);
9636 PartialInterpretation.newElements(interpretation,element);
9637 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9638 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
9639 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9640 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9641 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
9642 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9643 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9644 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
9645 neg find isPrimitive(element);
9646} or {
9647 find interpretation(problem,interpretation);
9648 PartialInterpretation.openWorldElements(interpretation,element);
9649 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9650 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
9651 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
9652 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9653 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
9654 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9655 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9656 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
9657 neg find isPrimitive(element);
9658} or
9659{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
9660/**
9661 * An element must be an instance of type "FunctionType enum".
9662 */
9663private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9664 Type.name(type,"FunctionType enum");
9665 find directInstanceOf(problem,interpretation,element,type);
9666}
9667private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
9668 find interpretation(problem,interpretation);
9669 PartialInterpretation.scopes(interpretation,scope);
9670 Scope.targetTypeInterpretation(scope,typeInterpretation);
9671 Scope.maxNewElements(scope,0);
9672 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9673 Type.name(type,"FunctionType enum");
9674}
9675
9676/**
9677 * An element may be an instance of type "FunctionType enum".
9678 */
9679private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9680{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
9681/**
9682 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
9683 */
9684private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9685 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
9686 find directInstanceOf(problem,interpretation,element,type);
9687}
9688private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
9689 find interpretation(problem,interpretation);
9690 PartialInterpretation.scopes(interpretation,scope);
9691 Scope.targetTypeInterpretation(scope,typeInterpretation);
9692 Scope.maxNewElements(scope,0);
9693 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9694 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
9695}
9696
9697/**
9698 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
9699 */
9700private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9701{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
9702/**
9703 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
9704 */
9705private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
9706 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
9707 find directInstanceOf(problem,interpretation,element,type);
9708}
9709private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
9710 find interpretation(problem,interpretation);
9711 PartialInterpretation.scopes(interpretation,scope);
9712 Scope.targetTypeInterpretation(scope,typeInterpretation);
9713 Scope.maxNewElements(scope,0);
9714 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
9715 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
9716}
9717
9718/**
9719 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
9720 */
9721private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
9722{
9723 find interpretation(problem,interpretation);
9724 PartialInterpretation.newElements(interpretation,element);
9725 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9726 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9727 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9728 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9729 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9730 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
9731 neg find isPrimitive(element);
9732} or {
9733 find interpretation(problem,interpretation);
9734 PartialInterpretation.openWorldElements(interpretation,element);
9735 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
9736 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
9737 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
9738 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
9739 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
9740 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
9741 neg find isPrimitive(element);
9742} or
9743{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
9744
9745//////////
9746// 1.2 Relation Declaration Indexers
9747//////////
9748/**
9749 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
9750 */
9751private pattern mustInRelationinterface_reference_FunctionalElement(
9752 problem:LogicProblem, interpretation:PartialInterpretation,
9753 source: DefinedElement, target:DefinedElement)
9754{
9755 find interpretation(problem,interpretation);
9756 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9757 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
9758 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9759 BinaryElementRelationLink.param1(link,source);
9760 BinaryElementRelationLink.param2(link,target);
9761}
9762/**
9763 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
9764 */
9765private pattern mayInRelationinterface_reference_FunctionalElement(
9766 problem:LogicProblem, interpretation:PartialInterpretation,
9767 source: DefinedElement, target:DefinedElement)
9768{
9769 find interpretation(problem,interpretation);
9770 // The two endpoint of the link have to exist
9771 find mayExist(problem, interpretation, source);
9772 find mayExist(problem, interpretation, target);
9773 // Type consistency
9774 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
9775 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
9776 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9777 // the upper bound of the multiplicity should be considered.
9778 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
9779 check(numberOfExistingReferences < 1);
9780 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
9781 // the upper bound of the opposite reference multiplicity should be considered.
9782 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
9783 check(numberOfExistingOppositeReferences < 1);
9784 // The reference is containment, then a new reference cannot be create if:
9785 // 1. Multiple parents
9786 neg find mustContains4(problem,interpretation,_,target);
9787 // 2. Circle in the containment hierarchy
9788 neg find mustTransitiveContains(source,target);
9789} or {
9790 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
9791}
9792/**
9793 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
9794 */
9795private pattern mustInRelationmodel_reference_FunctionalElement(
9796 problem:LogicProblem, interpretation:PartialInterpretation,
9797 source: DefinedElement, target:DefinedElement)
9798{
9799 find interpretation(problem,interpretation);
9800 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9801 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
9802 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9803 BinaryElementRelationLink.param1(link,source);
9804 BinaryElementRelationLink.param2(link,target);
9805}
9806/**
9807 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
9808 */
9809private pattern mayInRelationmodel_reference_FunctionalElement(
9810 problem:LogicProblem, interpretation:PartialInterpretation,
9811 source: DefinedElement, target:DefinedElement)
9812{
9813 find interpretation(problem,interpretation);
9814 // The two endpoint of the link have to exist
9815 find mayExist(problem, interpretation, source);
9816 find mayExist(problem, interpretation, target);
9817 // Type consistency
9818 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
9819 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
9820 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9821 // the upper bound of the multiplicity should be considered.
9822 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
9823 check(numberOfExistingReferences < 1);
9824} or {
9825 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
9826}
9827/**
9828 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
9829 */
9830private pattern mustInRelationparent_reference_FunctionalElement(
9831 problem:LogicProblem, interpretation:PartialInterpretation,
9832 source: DefinedElement, target:DefinedElement)
9833{
9834 find interpretation(problem,interpretation);
9835 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9836 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
9837 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9838 BinaryElementRelationLink.param1(link,source);
9839 BinaryElementRelationLink.param2(link,target);
9840}
9841/**
9842 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
9843 */
9844private pattern mayInRelationparent_reference_FunctionalElement(
9845 problem:LogicProblem, interpretation:PartialInterpretation,
9846 source: DefinedElement, target:DefinedElement)
9847{
9848 find interpretation(problem,interpretation);
9849 // The two endpoint of the link have to exist
9850 find mayExist(problem, interpretation, source);
9851 find mayExist(problem, interpretation, target);
9852 // Type consistency
9853 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
9854 find mayInstanceOfFunction_class(problem,interpretation,target);
9855 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9856 // the upper bound of the multiplicity should be considered.
9857 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
9858 check(numberOfExistingReferences < 1);
9859 // The eOpposite of the reference is containment, then a referene cannot be created if
9860 // 1. Multiple parents
9861 neg find mustContains4(problem,interpretation,source,_);
9862 // 2. Circle in the containment hierarchy
9863 neg find mustTransitiveContains(source,target);
9864} or {
9865 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
9866}
9867/**
9868 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
9869 */
9870private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
9871 problem:LogicProblem, interpretation:PartialInterpretation,
9872 source: DefinedElement, target:DefinedElement)
9873{
9874 find interpretation(problem,interpretation);
9875 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9876 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
9877 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9878 BinaryElementRelationLink.param1(link,source);
9879 BinaryElementRelationLink.param2(link,target);
9880}
9881/**
9882 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
9883 */
9884private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
9885 problem:LogicProblem, interpretation:PartialInterpretation,
9886 source: DefinedElement, target:DefinedElement)
9887{
9888 find interpretation(problem,interpretation);
9889 // The two endpoint of the link have to exist
9890 find mayExist(problem, interpretation, source);
9891 find mayExist(problem, interpretation, target);
9892 // Type consistency
9893 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
9894 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
9895 // The reference is containment, then a new reference cannot be create if:
9896 // 1. Multiple parents
9897 neg find mustContains4(problem,interpretation,_,target);
9898 // 2. Circle in the containment hierarchy
9899 neg find mustTransitiveContains(source,target);
9900} or {
9901 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
9902}
9903/**
9904 * Matcher for detecting tuples t where []subElements reference Function(source,target)
9905 */
9906private pattern mustInRelationsubElements_reference_Function(
9907 problem:LogicProblem, interpretation:PartialInterpretation,
9908 source: DefinedElement, target:DefinedElement)
9909{
9910 find interpretation(problem,interpretation);
9911 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9912 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
9913 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9914 BinaryElementRelationLink.param1(link,source);
9915 BinaryElementRelationLink.param2(link,target);
9916}
9917/**
9918 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
9919 */
9920private pattern mayInRelationsubElements_reference_Function(
9921 problem:LogicProblem, interpretation:PartialInterpretation,
9922 source: DefinedElement, target:DefinedElement)
9923{
9924 find interpretation(problem,interpretation);
9925 // The two endpoint of the link have to exist
9926 find mayExist(problem, interpretation, source);
9927 find mayExist(problem, interpretation, target);
9928 // Type consistency
9929 find mayInstanceOfFunction_class(problem,interpretation,source);
9930 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
9931 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
9932 // the upper bound of the opposite reference multiplicity should be considered.
9933 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
9934 check(numberOfExistingOppositeReferences < 1);
9935 // The reference is containment, then a new reference cannot be create if:
9936 // 1. Multiple parents
9937 neg find mustContains4(problem,interpretation,_,target);
9938 // 2. Circle in the containment hierarchy
9939 neg find mustTransitiveContains(source,target);
9940} or {
9941 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
9942}
9943/**
9944 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
9945 */
9946private pattern mustInRelationdata_reference_FAMTerminator(
9947 problem:LogicProblem, interpretation:PartialInterpretation,
9948 source: DefinedElement, target:DefinedElement)
9949{
9950 find interpretation(problem,interpretation);
9951 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9952 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
9953 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9954 BinaryElementRelationLink.param1(link,source);
9955 BinaryElementRelationLink.param2(link,target);
9956}
9957/**
9958 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
9959 */
9960private pattern mayInRelationdata_reference_FAMTerminator(
9961 problem:LogicProblem, interpretation:PartialInterpretation,
9962 source: DefinedElement, target:DefinedElement)
9963{
9964 find interpretation(problem,interpretation);
9965 // The two endpoint of the link have to exist
9966 find mayExist(problem, interpretation, source);
9967 find mayExist(problem, interpretation, target);
9968 // Type consistency
9969 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
9970 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
9971 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
9972 // the upper bound of the multiplicity should be considered.
9973 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
9974 check(numberOfExistingReferences < 1);
9975 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
9976 // the upper bound of the opposite reference multiplicity should be considered.
9977 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
9978 check(numberOfExistingOppositeReferences < 1);
9979 // The eOpposite of the reference is containment, then a referene cannot be created if
9980 // 1. Multiple parents
9981 neg find mustContains4(problem,interpretation,source,_);
9982 // 2. Circle in the containment hierarchy
9983 neg find mustTransitiveContains(source,target);
9984} or {
9985 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
9986}
9987/**
9988 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
9989 */
9990private pattern mustInRelationfrom_reference_InformationLink(
9991 problem:LogicProblem, interpretation:PartialInterpretation,
9992 source: DefinedElement, target:DefinedElement)
9993{
9994 find interpretation(problem,interpretation);
9995 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
9996 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
9997 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
9998 BinaryElementRelationLink.param1(link,source);
9999 BinaryElementRelationLink.param2(link,target);
10000}
10001/**
10002 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
10003 */
10004private pattern mayInRelationfrom_reference_InformationLink(
10005 problem:LogicProblem, interpretation:PartialInterpretation,
10006 source: DefinedElement, target:DefinedElement)
10007{
10008 find interpretation(problem,interpretation);
10009 // The two endpoint of the link have to exist
10010 find mayExist(problem, interpretation, source);
10011 find mayExist(problem, interpretation, target);
10012 // Type consistency
10013 find mayInstanceOfInformationLink_class(problem,interpretation,source);
10014 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
10015 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
10016 // the upper bound of the multiplicity should be considered.
10017 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
10018 check(numberOfExistingReferences < 1);
10019 // The eOpposite of the reference is containment, then a referene cannot be created if
10020 // 1. Multiple parents
10021 neg find mustContains4(problem,interpretation,source,_);
10022 // 2. Circle in the containment hierarchy
10023 neg find mustTransitiveContains(source,target);
10024} or {
10025 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
10026}
10027/**
10028 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
10029 */
10030private pattern mustInRelationto_reference_InformationLink(
10031 problem:LogicProblem, interpretation:PartialInterpretation,
10032 source: DefinedElement, target:DefinedElement)
10033{
10034 find interpretation(problem,interpretation);
10035 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10036 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
10037 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
10038 BinaryElementRelationLink.param1(link,source);
10039 BinaryElementRelationLink.param2(link,target);
10040}
10041/**
10042 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
10043 */
10044private pattern mayInRelationto_reference_InformationLink(
10045 problem:LogicProblem, interpretation:PartialInterpretation,
10046 source: DefinedElement, target:DefinedElement)
10047{
10048 find interpretation(problem,interpretation);
10049 // The two endpoint of the link have to exist
10050 find mayExist(problem, interpretation, source);
10051 find mayExist(problem, interpretation, target);
10052 // Type consistency
10053 find mayInstanceOfInformationLink_class(problem,interpretation,source);
10054 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
10055 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
10056 // the upper bound of the multiplicity should be considered.
10057 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
10058 check(numberOfExistingReferences < 1);
10059} or {
10060 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
10061}
10062/**
10063 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
10064 */
10065private pattern mustInRelationdata_reference_FunctionalInterface(
10066 problem:LogicProblem, interpretation:PartialInterpretation,
10067 source: DefinedElement, target:DefinedElement)
10068{
10069 find interpretation(problem,interpretation);
10070 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10071 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
10072 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
10073 BinaryElementRelationLink.param1(link,source);
10074 BinaryElementRelationLink.param2(link,target);
10075}
10076/**
10077 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
10078 */
10079private pattern mayInRelationdata_reference_FunctionalInterface(
10080 problem:LogicProblem, interpretation:PartialInterpretation,
10081 source: DefinedElement, target:DefinedElement)
10082{
10083 find interpretation(problem,interpretation);
10084 // The two endpoint of the link have to exist
10085 find mayExist(problem, interpretation, source);
10086 find mayExist(problem, interpretation, target);
10087 // Type consistency
10088 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
10089 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
10090 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
10091 // the upper bound of the opposite reference multiplicity should be considered.
10092 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
10093 check(numberOfExistingOppositeReferences < 1);
10094 // The reference is containment, then a new reference cannot be create if:
10095 // 1. Multiple parents
10096 neg find mustContains4(problem,interpretation,_,target);
10097 // 2. Circle in the containment hierarchy
10098 neg find mustTransitiveContains(source,target);
10099} or {
10100 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
10101}
10102/**
10103 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
10104 */
10105private pattern mustInRelationelement_reference_FunctionalInterface(
10106 problem:LogicProblem, interpretation:PartialInterpretation,
10107 source: DefinedElement, target:DefinedElement)
10108{
10109 find interpretation(problem,interpretation);
10110 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10111 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
10112 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
10113 BinaryElementRelationLink.param1(link,source);
10114 BinaryElementRelationLink.param2(link,target);
10115}
10116/**
10117 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
10118 */
10119private pattern mayInRelationelement_reference_FunctionalInterface(
10120 problem:LogicProblem, interpretation:PartialInterpretation,
10121 source: DefinedElement, target:DefinedElement)
10122{
10123 find interpretation(problem,interpretation);
10124 // The two endpoint of the link have to exist
10125 find mayExist(problem, interpretation, source);
10126 find mayExist(problem, interpretation, target);
10127 // Type consistency
10128 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
10129 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
10130 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
10131 // the upper bound of the multiplicity should be considered.
10132 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
10133 check(numberOfExistingReferences < 1);
10134 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
10135 // the upper bound of the opposite reference multiplicity should be considered.
10136 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
10137 check(numberOfExistingOppositeReferences < 1);
10138 // The eOpposite of the reference is containment, then a referene cannot be created if
10139 // 1. Multiple parents
10140 neg find mustContains4(problem,interpretation,source,_);
10141 // 2. Circle in the containment hierarchy
10142 neg find mustTransitiveContains(source,target);
10143} or {
10144 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
10145}
10146/**
10147 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
10148 */
10149private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
10150 problem:LogicProblem, interpretation:PartialInterpretation,
10151 source: DefinedElement, target:DefinedElement)
10152{
10153 find interpretation(problem,interpretation);
10154 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10155 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
10156 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
10157 BinaryElementRelationLink.param1(link,source);
10158 BinaryElementRelationLink.param2(link,target);
10159}
10160/**
10161 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
10162 */
10163private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
10164 problem:LogicProblem, interpretation:PartialInterpretation,
10165 source: DefinedElement, target:DefinedElement)
10166{
10167 find interpretation(problem,interpretation);
10168 // The two endpoint of the link have to exist
10169 find mayExist(problem, interpretation, source);
10170 find mayExist(problem, interpretation, target);
10171 // Type consistency
10172 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
10173 find mayInstanceOfInformationLink_class(problem,interpretation,target);
10174 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
10175 // the upper bound of the opposite reference multiplicity should be considered.
10176 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
10177 check(numberOfExistingOppositeReferences < 1);
10178} or {
10179 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
10180}
10181/**
10182 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
10183 */
10184private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
10185 problem:LogicProblem, interpretation:PartialInterpretation,
10186 source: DefinedElement, target:DefinedElement)
10187{
10188 find interpretation(problem,interpretation);
10189 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10190 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
10191 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
10192 BinaryElementRelationLink.param1(link,source);
10193 BinaryElementRelationLink.param2(link,target);
10194}
10195/**
10196 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
10197 */
10198private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
10199 problem:LogicProblem, interpretation:PartialInterpretation,
10200 source: DefinedElement, target:DefinedElement)
10201{
10202 find interpretation(problem,interpretation);
10203 // The two endpoint of the link have to exist
10204 find mayExist(problem, interpretation, source);
10205 find mayExist(problem, interpretation, target);
10206 // Type consistency
10207 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
10208 find mayInstanceOfInformationLink_class(problem,interpretation,target);
10209 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
10210 // the upper bound of the opposite reference multiplicity should be considered.
10211 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
10212 check(numberOfExistingOppositeReferences < 1);
10213 // The reference is containment, then a new reference cannot be create if:
10214 // 1. Multiple parents
10215 neg find mustContains4(problem,interpretation,_,target);
10216 // 2. Circle in the containment hierarchy
10217 neg find mustTransitiveContains(source,target);
10218} or {
10219 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
10220}
10221/**
10222 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
10223 */
10224private pattern mustInRelationterminator_reference_FunctionalData(
10225 problem:LogicProblem, interpretation:PartialInterpretation,
10226 source: DefinedElement, target:DefinedElement)
10227{
10228 find interpretation(problem,interpretation);
10229 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10230 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
10231 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
10232 BinaryElementRelationLink.param1(link,source);
10233 BinaryElementRelationLink.param2(link,target);
10234}
10235/**
10236 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
10237 */
10238private pattern mayInRelationterminator_reference_FunctionalData(
10239 problem:LogicProblem, interpretation:PartialInterpretation,
10240 source: DefinedElement, target:DefinedElement)
10241{
10242 find interpretation(problem,interpretation);
10243 // The two endpoint of the link have to exist
10244 find mayExist(problem, interpretation, source);
10245 find mayExist(problem, interpretation, target);
10246 // Type consistency
10247 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
10248 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
10249 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
10250 // the upper bound of the multiplicity should be considered.
10251 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
10252 check(numberOfExistingReferences < 1);
10253 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
10254 // the upper bound of the opposite reference multiplicity should be considered.
10255 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
10256 check(numberOfExistingOppositeReferences < 1);
10257 // The reference is containment, then a new reference cannot be create if:
10258 // 1. Multiple parents
10259 neg find mustContains4(problem,interpretation,_,target);
10260 // 2. Circle in the containment hierarchy
10261 neg find mustTransitiveContains(source,target);
10262} or {
10263 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
10264}
10265/**
10266 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
10267 */
10268private pattern mustInRelationinterface_reference_FunctionalData(
10269 problem:LogicProblem, interpretation:PartialInterpretation,
10270 source: DefinedElement, target:DefinedElement)
10271{
10272 find interpretation(problem,interpretation);
10273 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10274 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
10275 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
10276 BinaryElementRelationLink.param1(link,source);
10277 BinaryElementRelationLink.param2(link,target);
10278}
10279/**
10280 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
10281 */
10282private pattern mayInRelationinterface_reference_FunctionalData(
10283 problem:LogicProblem, interpretation:PartialInterpretation,
10284 source: DefinedElement, target:DefinedElement)
10285{
10286 find interpretation(problem,interpretation);
10287 // The two endpoint of the link have to exist
10288 find mayExist(problem, interpretation, source);
10289 find mayExist(problem, interpretation, target);
10290 // Type consistency
10291 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
10292 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
10293 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
10294 // the upper bound of the multiplicity should be considered.
10295 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
10296 check(numberOfExistingReferences < 1);
10297 // The eOpposite of the reference is containment, then a referene cannot be created if
10298 // 1. Multiple parents
10299 neg find mustContains4(problem,interpretation,source,_);
10300 // 2. Circle in the containment hierarchy
10301 neg find mustTransitiveContains(source,target);
10302} or {
10303 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
10304}
10305/**
10306 * Matcher for detecting tuples t where []type attribute Function(source,target)
10307 */
10308private pattern mustInRelationtype_attribute_Function(
10309 problem:LogicProblem, interpretation:PartialInterpretation,
10310 source: DefinedElement, target:DefinedElement)
10311{
10312 find interpretation(problem,interpretation);
10313 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10314 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
10315 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
10316 BinaryElementRelationLink.param1(link,source);
10317 BinaryElementRelationLink.param2(link,target);
10318}
10319/**
10320 * Matcher for detecting tuples t where <>type attribute Function(source,target)
10321 */
10322private pattern mayInRelationtype_attribute_Function(
10323 problem:LogicProblem, interpretation:PartialInterpretation,
10324 source: DefinedElement, target:DefinedElement)
10325{
10326 find interpretation(problem,interpretation);
10327 // The two endpoint of the link have to exist
10328 find mayExist(problem, interpretation, source);
10329 find mayExist(problem, interpretation, target);
10330 // Type consistency
10331 find mayInstanceOfFunction_class(problem,interpretation,source);
10332 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
10333 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
10334 // the upper bound of the multiplicity should be considered.
10335 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
10336 check(numberOfExistingReferences < 1);
10337} or {
10338 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
10339}
10340
10341//////////
10342// 1.3 Relation Definition Indexers
10343//////////
10344
10345//////////
10346// 1.4 Containment Indexer
10347//////////
10348private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
10349 find mustContains4(_,_,source,target);
10350}
10351
10352private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
10353 source: DefinedElement, target: DefinedElement)
10354 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
10355
10356 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
10357
10358 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
10359
10360 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
10361
10362 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
10363
10364 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
10365
10366private pattern mustTransitiveContains(source,target) {
10367 find mustContains2+(source,target);
10368}
10369
10370//////////
10371// 2. Invalidation Indexers
10372//////////
10373// 2.1 Invalidated by WF Queries
10374//////////
10375
10376//////////
10377// 3. Unfinishedness Indexers
10378//////////
10379// 3.1 Unfinishedness Measured by Multiplicity
10380//////////
10381pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
10382 find interpretation(problem,interpretation);
10383 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10384 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
10385 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
10386 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
10387 check(numberOfExistingReferences < 1);
10388 missingMultiplicity == eval(1-numberOfExistingReferences);
10389}
10390pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
10391 find interpretation(problem,interpretation);
10392 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10393 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
10394 find mustInstanceOfInformationLink_class(problem,interpretation,object);
10395 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
10396 check(numberOfExistingReferences < 1);
10397 missingMultiplicity == eval(1-numberOfExistingReferences);
10398}
10399pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
10400 find interpretation(problem,interpretation);
10401 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10402 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
10403 find mustInstanceOfFunction_class(problem,interpretation,object);
10404 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
10405 check(numberOfExistingReferences < 1);
10406 missingMultiplicity == eval(1-numberOfExistingReferences);
10407}
10408
10409//////////
10410// 3.2 Unfinishedness Measured by WF Queries
10411//////////
10412
10413//////////
10414// 4. Refinement Indexers
10415//////////
10416// 4.1 Object constructors
10417//////////
10418private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
10419{
10420 find interpretation(problem,interpretation);
10421 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
10422 find mustExist(problem, interpretation, root);
10423}or{
10424 find interpretation(problem,interpretation);
10425 find mustInstanceOfFunction_class(problem,interpretation,root);
10426 find mustExist(problem, interpretation, root);
10427}or{
10428 find interpretation(problem,interpretation);
10429 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
10430 find mustExist(problem, interpretation, root);
10431}or{
10432 find interpretation(problem,interpretation);
10433 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
10434 find mustExist(problem, interpretation, root);
10435}or{
10436 find interpretation(problem,interpretation);
10437 find mustInstanceOfInformationLink_class(problem,interpretation,root);
10438 find mustExist(problem, interpretation, root);
10439}or{
10440 find interpretation(problem,interpretation);
10441 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
10442 find mustExist(problem, interpretation, root);
10443}or{
10444 find interpretation(problem,interpretation);
10445 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
10446 find mustExist(problem, interpretation, root);
10447}or{
10448 find interpretation(problem,interpretation);
10449 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
10450 find mustExist(problem, interpretation, root);
10451}or{
10452 find interpretation(problem,interpretation);
10453 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
10454 find mustExist(problem, interpretation, root);
10455}or{
10456 find interpretation(problem,interpretation);
10457 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
10458 find mustExist(problem, interpretation, root);
10459}or{
10460 find interpretation(problem,interpretation);
10461 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
10462 find mustExist(problem, interpretation, root);
10463}
10464pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
10465 problem:LogicProblem, interpretation:PartialInterpretation,
10466 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10467 container:DefinedElement)
10468{
10469 find interpretation(problem,interpretation);
10470 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10471 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
10472 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10473 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
10474 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10475 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
10476 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
10477 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
10478 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
10479 find mustExist(problem, interpretation, container);
10480 neg find mustExist(problem, interpretation, newObject);
10481}
10482pattern createObject_FunctionalInterface_class(
10483 problem:LogicProblem, interpretation:PartialInterpretation,
10484 typeInterpretation:PartialComplexTypeInterpretation)
10485{
10486 find interpretation(problem,interpretation);
10487 neg find hasElementInContainment(problem,interpretation);
10488 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10489 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
10490 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
10491 find mayExist(problem, interpretation, newObject);
10492 neg find mustExist(problem, interpretation, newObject);
10493}
10494pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
10495 problem:LogicProblem, interpretation:PartialInterpretation,
10496 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10497 container:DefinedElement)
10498{
10499 find interpretation(problem,interpretation);
10500 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10501 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
10502 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10503 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
10504 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10505 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
10506 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
10507 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
10508 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
10509 find mustExist(problem, interpretation, container);
10510 neg find mustExist(problem, interpretation, newObject);
10511}
10512pattern createObject_FunctionalInput_class(
10513 problem:LogicProblem, interpretation:PartialInterpretation,
10514 typeInterpretation:PartialComplexTypeInterpretation)
10515{
10516 find interpretation(problem,interpretation);
10517 neg find hasElementInContainment(problem,interpretation);
10518 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10519 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
10520 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
10521 find mayExist(problem, interpretation, newObject);
10522 neg find mustExist(problem, interpretation, newObject);
10523}
10524pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
10525 problem:LogicProblem, interpretation:PartialInterpretation,
10526 typeInterpretation:PartialComplexTypeInterpretation)
10527{
10528 find interpretation(problem,interpretation);
10529 neg find hasElementInContainment(problem,interpretation);
10530 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10531 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
10532 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
10533 find mayExist(problem, interpretation, newObject);
10534 neg find mustExist(problem, interpretation, newObject);
10535}
10536pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
10537 problem:LogicProblem, interpretation:PartialInterpretation,
10538 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10539 container:DefinedElement)
10540{
10541 find interpretation(problem,interpretation);
10542 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10543 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
10544 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10545 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
10546 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10547 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
10548 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
10549 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
10550 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
10551 find mustExist(problem, interpretation, container);
10552 neg find mustExist(problem, interpretation, newObject);
10553}
10554pattern createObject_InformationLink_class(
10555 problem:LogicProblem, interpretation:PartialInterpretation,
10556 typeInterpretation:PartialComplexTypeInterpretation)
10557{
10558 find interpretation(problem,interpretation);
10559 neg find hasElementInContainment(problem,interpretation);
10560 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10561 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
10562 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
10563 find mayExist(problem, interpretation, newObject);
10564 neg find mustExist(problem, interpretation, newObject);
10565}
10566pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
10567 problem:LogicProblem, interpretation:PartialInterpretation,
10568 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10569 container:DefinedElement)
10570{
10571 find interpretation(problem,interpretation);
10572 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10573 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
10574 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10575 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
10576 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10577 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
10578 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
10579 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
10580 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
10581 find mustExist(problem, interpretation, container);
10582 neg find mustExist(problem, interpretation, newObject);
10583}
10584pattern createObject_FunctionalOutput_class(
10585 problem:LogicProblem, interpretation:PartialInterpretation,
10586 typeInterpretation:PartialComplexTypeInterpretation)
10587{
10588 find interpretation(problem,interpretation);
10589 neg find hasElementInContainment(problem,interpretation);
10590 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10591 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
10592 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
10593 find mayExist(problem, interpretation, newObject);
10594 neg find mustExist(problem, interpretation, newObject);
10595}
10596pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
10597 problem:LogicProblem, interpretation:PartialInterpretation,
10598 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10599 container:DefinedElement)
10600{
10601 find interpretation(problem,interpretation);
10602 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10603 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
10604 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10605 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
10606 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
10607 find mayInstanceOfFunction_class(problem,interpretation,newObject);
10608 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
10609 find mustExist(problem, interpretation, container);
10610 neg find mustExist(problem, interpretation, newObject);
10611}
10612pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
10613 problem:LogicProblem, interpretation:PartialInterpretation,
10614 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10615 container:DefinedElement)
10616{
10617 find interpretation(problem,interpretation);
10618 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10619 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
10620 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10621 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
10622 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10623 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
10624 find mustInstanceOfFunction_class(problem,interpretation,container);
10625 find mayInstanceOfFunction_class(problem,interpretation,newObject);
10626 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
10627 find mustExist(problem, interpretation, container);
10628 neg find mustExist(problem, interpretation, newObject);
10629}
10630pattern createObject_Function_class(
10631 problem:LogicProblem, interpretation:PartialInterpretation,
10632 typeInterpretation:PartialComplexTypeInterpretation)
10633{
10634 find interpretation(problem,interpretation);
10635 neg find hasElementInContainment(problem,interpretation);
10636 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10637 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
10638 find mayInstanceOfFunction_class(problem,interpretation,newObject);
10639 find mayExist(problem, interpretation, newObject);
10640 neg find mustExist(problem, interpretation, newObject);
10641}
10642pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
10643 problem:LogicProblem, interpretation:PartialInterpretation,
10644 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
10645 container:DefinedElement)
10646{
10647 find interpretation(problem,interpretation);
10648 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10649 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
10650 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
10651 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
10652 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
10653 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
10654 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
10655 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
10656 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
10657 find mustExist(problem, interpretation, container);
10658 neg find mustExist(problem, interpretation, newObject);
10659}
10660pattern createObject_FAMTerminator_class(
10661 problem:LogicProblem, interpretation:PartialInterpretation,
10662 typeInterpretation:PartialComplexTypeInterpretation)
10663{
10664 find interpretation(problem,interpretation);
10665 neg find hasElementInContainment(problem,interpretation);
10666 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10667 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
10668 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
10669 find mayExist(problem, interpretation, newObject);
10670 neg find mustExist(problem, interpretation, newObject);
10671}
10672
10673//////////
10674// 4.2 Type refinement
10675//////////
10676pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10677 find interpretation(problem,interpretation);
10678 PartialInterpretation.newElements(interpretation,element);
10679 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
10680 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10681 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
10682 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10683 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
10684 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
10685 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10686}
10687pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10688 find interpretation(problem,interpretation);
10689 PartialInterpretation.newElements(interpretation,element);
10690 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
10691 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10692 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
10693 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
10694 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10695 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
10696 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
10697 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10698}
10699pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10700 find interpretation(problem,interpretation);
10701 PartialInterpretation.newElements(interpretation,element);
10702 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
10703 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10704 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
10705 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10706 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
10707 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
10708 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10709}
10710pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10711 find interpretation(problem,interpretation);
10712 PartialInterpretation.newElements(interpretation,element);
10713 find mayInstanceOfInformationLink_class(problem,interpretation,element);
10714 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10715 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
10716 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10717 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
10718 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
10719 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10720}
10721pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10722 find interpretation(problem,interpretation);
10723 PartialInterpretation.newElements(interpretation,element);
10724 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
10725 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
10726 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10727 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
10728 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10729 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
10730 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
10731 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10732}
10733pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10734 find interpretation(problem,interpretation);
10735 PartialInterpretation.newElements(interpretation,element);
10736 find mayInstanceOfFunction_class(problem,interpretation,element);
10737 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10738 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
10739 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10740 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
10741 neg find mustInstanceOfFunction_class(problem,interpretation,element);
10742 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10743}
10744pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
10745 find interpretation(problem,interpretation);
10746 PartialInterpretation.newElements(interpretation,element);
10747 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
10748 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10749 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
10750 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10751 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
10752 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
10753 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10754}
10755
10756//////////
10757// 4.3 Relation refinement
10758//////////
10759pattern refineRelation_model_reference_FunctionalElement(
10760 problem:LogicProblem, interpretation:PartialInterpretation,
10761 relationIterpretation:PartialRelationInterpretation,
10762 from: DefinedElement, to: DefinedElement)
10763{
10764 find interpretation(problem,interpretation);
10765 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10766 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
10767 find mustExist(problem, interpretation, from);
10768 find mustExist(problem, interpretation, to);
10769 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
10770 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
10771 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
10772 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
10773}
10774pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
10775 problem:LogicProblem, interpretation:PartialInterpretation,
10776 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
10777 from: DefinedElement, to: DefinedElement)
10778{
10779 find interpretation(problem,interpretation);
10780 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10781 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
10782 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
10783 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
10784 find mustExist(problem, interpretation, from);
10785 find mustExist(problem, interpretation, to);
10786 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
10787 find mustInstanceOfInformationLink_class(problem,interpretation,to);
10788 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
10789 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
10790}
10791pattern refineRelation_type_attribute_Function(
10792 problem:LogicProblem, interpretation:PartialInterpretation,
10793 relationIterpretation:PartialRelationInterpretation,
10794 from: DefinedElement, to: DefinedElement)
10795{
10796 find interpretation(problem,interpretation);
10797 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
10798 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
10799 find mustExist(problem, interpretation, from);
10800 find mustExist(problem, interpretation, to);
10801 find mustInstanceOfFunction_class(problem,interpretation,from);
10802 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
10803 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
10804 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
10805}
10806import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
10807import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
10808import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
10809
10810//////////
10811// 0. Util
10812//////////
10813private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
10814 PartialInterpretation.problem(interpretation,problem);
10815}
10816
10817/////////////////////////
10818// 0.1 Existence
10819/////////////////////////
10820private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
10821 find interpretation(problem,interpretation);
10822 LogicProblem.elements(problem,element);
10823} or {
10824 find interpretation(problem,interpretation);
10825 PartialInterpretation.newElements(interpretation,element);
10826}
10827
10828private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
10829 find mustExist(problem,interpretation,element);
10830} or {
10831 find interpretation(problem,interpretation);
10832 neg find elementCloseWorld(element);
10833 PartialInterpretation.openWorldElements(interpretation,element);
10834}
10835
10836private pattern elementCloseWorld(element:DefinedElement) {
10837 PartialInterpretation.openWorldElements(i,element);
10838 PartialInterpretation.maxNewElements(i,0);
10839} or {
10840 Scope.targetTypeInterpretation(scope,interpretation);
10841 PartialTypeInterpratation.elements(interpretation,element);
10842 Scope.maxNewElements(scope,0);
10843}
10844
10845////////////////////////
10846// 0.2 Equivalence
10847////////////////////////
10848pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
10849 find mayExist(problem,interpretation,a);
10850 find mayExist(problem,interpretation,b);
10851 a == b;
10852}
10853
10854////////////////////////
10855// 0.3 Required Patterns by TypeIndexer
10856////////////////////////
10857private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
10858 find interpretation(problem,interpretation);
10859 LogicProblem.types(problem,type);
10860 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
10861 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
10862}
10863
10864private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
10865 find interpretation(problem,interpretation);
10866 LogicProblem.types(problem,type);
10867 TypeDefinition.elements(type,element);
10868} or {
10869 find interpretation(problem,interpretation);
10870 find typeInterpretation(problem,interpretation,type,typeInterpretation);
10871 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
10872}
10873
10874private pattern isPrimitive(element: PrimitiveElement) {
10875 PrimitiveElement(element);
10876}
10877
10878//////////
10879// 1. Problem-Specific Base Indexers
10880//////////
10881// 1.1 Type Indexers
10882//////////
10883// 1.1.1 primitive Type Indexers
10884//////////
10885
10886//////////
10887// 1.1.2 domain-specific Type Indexers
10888//////////
10889/**
10890 * An element must be an instance of type "FunctionalElement class".
10891 */
10892private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
10893 Type.name(type,"FunctionalElement class");
10894 find directInstanceOf(problem,interpretation,element,type);
10895}
10896private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
10897 find interpretation(problem,interpretation);
10898 PartialInterpretation.scopes(interpretation,scope);
10899 Scope.targetTypeInterpretation(scope,typeInterpretation);
10900 Scope.maxNewElements(scope,0);
10901 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
10902 Type.name(type,"FunctionalElement class");
10903}
10904
10905/**
10906 * An element may be an instance of type "FunctionalElement class".
10907 */
10908private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
10909{
10910 find interpretation(problem,interpretation);
10911 PartialInterpretation.newElements(interpretation,element);
10912 neg find mustInstanceOfFunction_class(problem,interpretation,element);
10913 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10914 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10915 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
10916 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
10917 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10918 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
10919 neg find isPrimitive(element);
10920} or {
10921 find interpretation(problem,interpretation);
10922 PartialInterpretation.openWorldElements(interpretation,element);
10923 neg find mustInstanceOfFunction_class(problem,interpretation,element);
10924 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10925 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10926 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
10927 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
10928 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10929 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
10930 neg find isPrimitive(element);
10931} or
10932{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
10933/**
10934 * An element must be an instance of type "FunctionalArchitectureModel class".
10935 */
10936private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
10937 Type.name(type,"FunctionalArchitectureModel class");
10938 find directInstanceOf(problem,interpretation,element,type);
10939}
10940private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
10941 find interpretation(problem,interpretation);
10942 PartialInterpretation.scopes(interpretation,scope);
10943 Scope.targetTypeInterpretation(scope,typeInterpretation);
10944 Scope.maxNewElements(scope,0);
10945 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
10946 Type.name(type,"FunctionalArchitectureModel class");
10947}
10948
10949/**
10950 * An element may be an instance of type "FunctionalArchitectureModel class".
10951 */
10952private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
10953{
10954 find interpretation(problem,interpretation);
10955 PartialInterpretation.newElements(interpretation,element);
10956 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10957 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10958 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
10959 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
10960 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10961 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
10962 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
10963 neg find isPrimitive(element);
10964} or {
10965 find interpretation(problem,interpretation);
10966 PartialInterpretation.openWorldElements(interpretation,element);
10967 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
10968 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
10969 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
10970 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
10971 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
10972 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
10973 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
10974 neg find isPrimitive(element);
10975} or
10976{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
10977/**
10978 * An element must be an instance of type "Function class".
10979 */
10980private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
10981 Type.name(type,"Function class");
10982 find directInstanceOf(problem,interpretation,element,type);
10983}
10984private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
10985 find interpretation(problem,interpretation);
10986 PartialInterpretation.scopes(interpretation,scope);
10987 Scope.targetTypeInterpretation(scope,typeInterpretation);
10988 Scope.maxNewElements(scope,0);
10989 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
10990 Type.name(type,"Function class");
10991}
10992
10993/**
10994 * An element may be an instance of type "Function class".
10995 */
10996private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
10997{
10998 find interpretation(problem,interpretation);
10999 PartialInterpretation.newElements(interpretation,element);
11000 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11001 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11002 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11003 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11004 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11005 neg find scopeDisallowsNewFunction_class(problem, interpretation);
11006 neg find isPrimitive(element);
11007} or {
11008 find interpretation(problem,interpretation);
11009 PartialInterpretation.openWorldElements(interpretation,element);
11010 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11011 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11012 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11013 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11014 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11015 neg find scopeDisallowsNewFunction_class(problem, interpretation);
11016 neg find isPrimitive(element);
11017} or
11018{ find mustInstanceOfFunction_class(problem,interpretation,element); }
11019/**
11020 * An element must be an instance of type "FAMTerminator class".
11021 */
11022private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11023 Type.name(type,"FAMTerminator class");
11024 find directInstanceOf(problem,interpretation,element,type);
11025}
11026private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11027 find interpretation(problem,interpretation);
11028 PartialInterpretation.scopes(interpretation,scope);
11029 Scope.targetTypeInterpretation(scope,typeInterpretation);
11030 Scope.maxNewElements(scope,0);
11031 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11032 Type.name(type,"FAMTerminator class");
11033}
11034
11035/**
11036 * An element may be an instance of type "FAMTerminator class".
11037 */
11038private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11039{
11040 find interpretation(problem,interpretation);
11041 PartialInterpretation.newElements(interpretation,element);
11042 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11043 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11044 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11045 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11046 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11047 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
11048 neg find isPrimitive(element);
11049} or {
11050 find interpretation(problem,interpretation);
11051 PartialInterpretation.openWorldElements(interpretation,element);
11052 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11053 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11054 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11055 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11056 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11057 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
11058 neg find isPrimitive(element);
11059} or
11060{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
11061/**
11062 * An element must be an instance of type "InformationLink class".
11063 */
11064private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11065 Type.name(type,"InformationLink class");
11066 find directInstanceOf(problem,interpretation,element,type);
11067}
11068private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11069 find interpretation(problem,interpretation);
11070 PartialInterpretation.scopes(interpretation,scope);
11071 Scope.targetTypeInterpretation(scope,typeInterpretation);
11072 Scope.maxNewElements(scope,0);
11073 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11074 Type.name(type,"InformationLink class");
11075}
11076
11077/**
11078 * An element may be an instance of type "InformationLink class".
11079 */
11080private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11081{
11082 find interpretation(problem,interpretation);
11083 PartialInterpretation.newElements(interpretation,element);
11084 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11085 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11086 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11087 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11088 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11089 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
11090 neg find isPrimitive(element);
11091} or {
11092 find interpretation(problem,interpretation);
11093 PartialInterpretation.openWorldElements(interpretation,element);
11094 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11095 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11096 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11097 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11098 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11099 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
11100 neg find isPrimitive(element);
11101} or
11102{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
11103/**
11104 * An element must be an instance of type "FunctionalInterface class".
11105 */
11106private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11107 Type.name(type,"FunctionalInterface class");
11108 find directInstanceOf(problem,interpretation,element,type);
11109}
11110private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11111 find interpretation(problem,interpretation);
11112 PartialInterpretation.scopes(interpretation,scope);
11113 Scope.targetTypeInterpretation(scope,typeInterpretation);
11114 Scope.maxNewElements(scope,0);
11115 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11116 Type.name(type,"FunctionalInterface class");
11117}
11118
11119/**
11120 * An element may be an instance of type "FunctionalInterface class".
11121 */
11122private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11123{
11124 find interpretation(problem,interpretation);
11125 PartialInterpretation.newElements(interpretation,element);
11126 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11127 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11128 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11129 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11130 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11131 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
11132 neg find isPrimitive(element);
11133} or {
11134 find interpretation(problem,interpretation);
11135 PartialInterpretation.openWorldElements(interpretation,element);
11136 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11137 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11138 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11139 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11140 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11141 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
11142 neg find isPrimitive(element);
11143} or
11144{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
11145/**
11146 * An element must be an instance of type "FunctionalInput class".
11147 */
11148private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11149 Type.name(type,"FunctionalInput class");
11150 find directInstanceOf(problem,interpretation,element,type);
11151}
11152private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11153 find interpretation(problem,interpretation);
11154 PartialInterpretation.scopes(interpretation,scope);
11155 Scope.targetTypeInterpretation(scope,typeInterpretation);
11156 Scope.maxNewElements(scope,0);
11157 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11158 Type.name(type,"FunctionalInput class");
11159}
11160
11161/**
11162 * An element may be an instance of type "FunctionalInput class".
11163 */
11164private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11165{
11166 find interpretation(problem,interpretation);
11167 PartialInterpretation.newElements(interpretation,element);
11168 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11169 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11170 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
11171 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11172 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11173 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11174 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
11175 neg find isPrimitive(element);
11176} or {
11177 find interpretation(problem,interpretation);
11178 PartialInterpretation.openWorldElements(interpretation,element);
11179 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11180 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11181 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
11182 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11183 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11184 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11185 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
11186 neg find isPrimitive(element);
11187} or
11188{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
11189/**
11190 * An element must be an instance of type "FunctionalOutput class".
11191 */
11192private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11193 Type.name(type,"FunctionalOutput class");
11194 find directInstanceOf(problem,interpretation,element,type);
11195}
11196private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11197 find interpretation(problem,interpretation);
11198 PartialInterpretation.scopes(interpretation,scope);
11199 Scope.targetTypeInterpretation(scope,typeInterpretation);
11200 Scope.maxNewElements(scope,0);
11201 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11202 Type.name(type,"FunctionalOutput class");
11203}
11204
11205/**
11206 * An element may be an instance of type "FunctionalOutput class".
11207 */
11208private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11209{
11210 find interpretation(problem,interpretation);
11211 PartialInterpretation.newElements(interpretation,element);
11212 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11213 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11214 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
11215 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11216 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11217 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11218 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
11219 neg find isPrimitive(element);
11220} or {
11221 find interpretation(problem,interpretation);
11222 PartialInterpretation.openWorldElements(interpretation,element);
11223 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11224 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11225 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
11226 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11227 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11228 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11229 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
11230 neg find isPrimitive(element);
11231} or
11232{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
11233/**
11234 * An element must be an instance of type "FunctionalData class".
11235 */
11236private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11237 Type.name(type,"FunctionalData class");
11238 find directInstanceOf(problem,interpretation,element,type);
11239}
11240private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
11241 find interpretation(problem,interpretation);
11242 PartialInterpretation.scopes(interpretation,scope);
11243 Scope.targetTypeInterpretation(scope,typeInterpretation);
11244 Scope.maxNewElements(scope,0);
11245 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11246 Type.name(type,"FunctionalData class");
11247}
11248
11249/**
11250 * An element may be an instance of type "FunctionalData class".
11251 */
11252private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11253{
11254 find interpretation(problem,interpretation);
11255 PartialInterpretation.newElements(interpretation,element);
11256 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11257 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11258 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
11259 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
11260 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11261 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11262 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11263 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
11264 neg find isPrimitive(element);
11265} or {
11266 find interpretation(problem,interpretation);
11267 PartialInterpretation.openWorldElements(interpretation,element);
11268 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11269 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11270 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
11271 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
11272 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
11273 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11274 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11275 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
11276 neg find isPrimitive(element);
11277} or
11278{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
11279/**
11280 * An element must be an instance of type "FunctionType enum".
11281 */
11282private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11283 Type.name(type,"FunctionType enum");
11284 find directInstanceOf(problem,interpretation,element,type);
11285}
11286private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
11287 find interpretation(problem,interpretation);
11288 PartialInterpretation.scopes(interpretation,scope);
11289 Scope.targetTypeInterpretation(scope,typeInterpretation);
11290 Scope.maxNewElements(scope,0);
11291 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11292 Type.name(type,"FunctionType enum");
11293}
11294
11295/**
11296 * An element may be an instance of type "FunctionType enum".
11297 */
11298private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11299{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
11300/**
11301 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
11302 */
11303private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11304 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
11305 find directInstanceOf(problem,interpretation,element,type);
11306}
11307private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
11308 find interpretation(problem,interpretation);
11309 PartialInterpretation.scopes(interpretation,scope);
11310 Scope.targetTypeInterpretation(scope,typeInterpretation);
11311 Scope.maxNewElements(scope,0);
11312 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11313 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
11314}
11315
11316/**
11317 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
11318 */
11319private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11320{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
11321/**
11322 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
11323 */
11324private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
11325 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
11326 find directInstanceOf(problem,interpretation,element,type);
11327}
11328private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
11329 find interpretation(problem,interpretation);
11330 PartialInterpretation.scopes(interpretation,scope);
11331 Scope.targetTypeInterpretation(scope,typeInterpretation);
11332 Scope.maxNewElements(scope,0);
11333 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
11334 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
11335}
11336
11337/**
11338 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
11339 */
11340private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
11341{
11342 find interpretation(problem,interpretation);
11343 PartialInterpretation.newElements(interpretation,element);
11344 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11345 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11346 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11347 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11348 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11349 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
11350 neg find isPrimitive(element);
11351} or {
11352 find interpretation(problem,interpretation);
11353 PartialInterpretation.openWorldElements(interpretation,element);
11354 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
11355 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
11356 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
11357 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
11358 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
11359 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
11360 neg find isPrimitive(element);
11361} or
11362{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
11363
11364//////////
11365// 1.2 Relation Declaration Indexers
11366//////////
11367/**
11368 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
11369 */
11370private pattern mustInRelationinterface_reference_FunctionalElement(
11371 problem:LogicProblem, interpretation:PartialInterpretation,
11372 source: DefinedElement, target:DefinedElement)
11373{
11374 find interpretation(problem,interpretation);
11375 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11376 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
11377 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11378 BinaryElementRelationLink.param1(link,source);
11379 BinaryElementRelationLink.param2(link,target);
11380}
11381/**
11382 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
11383 */
11384private pattern mayInRelationinterface_reference_FunctionalElement(
11385 problem:LogicProblem, interpretation:PartialInterpretation,
11386 source: DefinedElement, target:DefinedElement)
11387{
11388 find interpretation(problem,interpretation);
11389 // The two endpoint of the link have to exist
11390 find mayExist(problem, interpretation, source);
11391 find mayExist(problem, interpretation, target);
11392 // Type consistency
11393 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
11394 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
11395 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11396 // the upper bound of the multiplicity should be considered.
11397 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
11398 check(numberOfExistingReferences < 1);
11399 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
11400 // the upper bound of the opposite reference multiplicity should be considered.
11401 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
11402 check(numberOfExistingOppositeReferences < 1);
11403 // The reference is containment, then a new reference cannot be create if:
11404 // 1. Multiple parents
11405 neg find mustContains4(problem,interpretation,_,target);
11406 // 2. Circle in the containment hierarchy
11407 neg find mustTransitiveContains(source,target);
11408} or {
11409 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
11410}
11411/**
11412 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
11413 */
11414private pattern mustInRelationmodel_reference_FunctionalElement(
11415 problem:LogicProblem, interpretation:PartialInterpretation,
11416 source: DefinedElement, target:DefinedElement)
11417{
11418 find interpretation(problem,interpretation);
11419 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11420 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
11421 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11422 BinaryElementRelationLink.param1(link,source);
11423 BinaryElementRelationLink.param2(link,target);
11424}
11425/**
11426 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
11427 */
11428private pattern mayInRelationmodel_reference_FunctionalElement(
11429 problem:LogicProblem, interpretation:PartialInterpretation,
11430 source: DefinedElement, target:DefinedElement)
11431{
11432 find interpretation(problem,interpretation);
11433 // The two endpoint of the link have to exist
11434 find mayExist(problem, interpretation, source);
11435 find mayExist(problem, interpretation, target);
11436 // Type consistency
11437 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
11438 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
11439 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11440 // the upper bound of the multiplicity should be considered.
11441 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
11442 check(numberOfExistingReferences < 1);
11443} or {
11444 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
11445}
11446/**
11447 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
11448 */
11449private pattern mustInRelationparent_reference_FunctionalElement(
11450 problem:LogicProblem, interpretation:PartialInterpretation,
11451 source: DefinedElement, target:DefinedElement)
11452{
11453 find interpretation(problem,interpretation);
11454 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11455 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
11456 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11457 BinaryElementRelationLink.param1(link,source);
11458 BinaryElementRelationLink.param2(link,target);
11459}
11460/**
11461 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
11462 */
11463private pattern mayInRelationparent_reference_FunctionalElement(
11464 problem:LogicProblem, interpretation:PartialInterpretation,
11465 source: DefinedElement, target:DefinedElement)
11466{
11467 find interpretation(problem,interpretation);
11468 // The two endpoint of the link have to exist
11469 find mayExist(problem, interpretation, source);
11470 find mayExist(problem, interpretation, target);
11471 // Type consistency
11472 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
11473 find mayInstanceOfFunction_class(problem,interpretation,target);
11474 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11475 // the upper bound of the multiplicity should be considered.
11476 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
11477 check(numberOfExistingReferences < 1);
11478 // The eOpposite of the reference is containment, then a referene cannot be created if
11479 // 1. Multiple parents
11480 neg find mustContains4(problem,interpretation,source,_);
11481 // 2. Circle in the containment hierarchy
11482 neg find mustTransitiveContains(source,target);
11483} or {
11484 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
11485}
11486/**
11487 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
11488 */
11489private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
11490 problem:LogicProblem, interpretation:PartialInterpretation,
11491 source: DefinedElement, target:DefinedElement)
11492{
11493 find interpretation(problem,interpretation);
11494 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11495 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
11496 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11497 BinaryElementRelationLink.param1(link,source);
11498 BinaryElementRelationLink.param2(link,target);
11499}
11500/**
11501 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
11502 */
11503private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
11504 problem:LogicProblem, interpretation:PartialInterpretation,
11505 source: DefinedElement, target:DefinedElement)
11506{
11507 find interpretation(problem,interpretation);
11508 // The two endpoint of the link have to exist
11509 find mayExist(problem, interpretation, source);
11510 find mayExist(problem, interpretation, target);
11511 // Type consistency
11512 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
11513 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
11514 // The reference is containment, then a new reference cannot be create if:
11515 // 1. Multiple parents
11516 neg find mustContains4(problem,interpretation,_,target);
11517 // 2. Circle in the containment hierarchy
11518 neg find mustTransitiveContains(source,target);
11519} or {
11520 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
11521}
11522/**
11523 * Matcher for detecting tuples t where []subElements reference Function(source,target)
11524 */
11525private pattern mustInRelationsubElements_reference_Function(
11526 problem:LogicProblem, interpretation:PartialInterpretation,
11527 source: DefinedElement, target:DefinedElement)
11528{
11529 find interpretation(problem,interpretation);
11530 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11531 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
11532 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11533 BinaryElementRelationLink.param1(link,source);
11534 BinaryElementRelationLink.param2(link,target);
11535}
11536/**
11537 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
11538 */
11539private pattern mayInRelationsubElements_reference_Function(
11540 problem:LogicProblem, interpretation:PartialInterpretation,
11541 source: DefinedElement, target:DefinedElement)
11542{
11543 find interpretation(problem,interpretation);
11544 // The two endpoint of the link have to exist
11545 find mayExist(problem, interpretation, source);
11546 find mayExist(problem, interpretation, target);
11547 // Type consistency
11548 find mayInstanceOfFunction_class(problem,interpretation,source);
11549 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
11550 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
11551 // the upper bound of the opposite reference multiplicity should be considered.
11552 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
11553 check(numberOfExistingOppositeReferences < 1);
11554 // The reference is containment, then a new reference cannot be create if:
11555 // 1. Multiple parents
11556 neg find mustContains4(problem,interpretation,_,target);
11557 // 2. Circle in the containment hierarchy
11558 neg find mustTransitiveContains(source,target);
11559} or {
11560 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
11561}
11562/**
11563 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
11564 */
11565private pattern mustInRelationdata_reference_FAMTerminator(
11566 problem:LogicProblem, interpretation:PartialInterpretation,
11567 source: DefinedElement, target:DefinedElement)
11568{
11569 find interpretation(problem,interpretation);
11570 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11571 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
11572 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11573 BinaryElementRelationLink.param1(link,source);
11574 BinaryElementRelationLink.param2(link,target);
11575}
11576/**
11577 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
11578 */
11579private pattern mayInRelationdata_reference_FAMTerminator(
11580 problem:LogicProblem, interpretation:PartialInterpretation,
11581 source: DefinedElement, target:DefinedElement)
11582{
11583 find interpretation(problem,interpretation);
11584 // The two endpoint of the link have to exist
11585 find mayExist(problem, interpretation, source);
11586 find mayExist(problem, interpretation, target);
11587 // Type consistency
11588 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
11589 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
11590 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11591 // the upper bound of the multiplicity should be considered.
11592 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
11593 check(numberOfExistingReferences < 1);
11594 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
11595 // the upper bound of the opposite reference multiplicity should be considered.
11596 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
11597 check(numberOfExistingOppositeReferences < 1);
11598 // The eOpposite of the reference is containment, then a referene cannot be created if
11599 // 1. Multiple parents
11600 neg find mustContains4(problem,interpretation,source,_);
11601 // 2. Circle in the containment hierarchy
11602 neg find mustTransitiveContains(source,target);
11603} or {
11604 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
11605}
11606/**
11607 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
11608 */
11609private pattern mustInRelationfrom_reference_InformationLink(
11610 problem:LogicProblem, interpretation:PartialInterpretation,
11611 source: DefinedElement, target:DefinedElement)
11612{
11613 find interpretation(problem,interpretation);
11614 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11615 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
11616 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11617 BinaryElementRelationLink.param1(link,source);
11618 BinaryElementRelationLink.param2(link,target);
11619}
11620/**
11621 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
11622 */
11623private pattern mayInRelationfrom_reference_InformationLink(
11624 problem:LogicProblem, interpretation:PartialInterpretation,
11625 source: DefinedElement, target:DefinedElement)
11626{
11627 find interpretation(problem,interpretation);
11628 // The two endpoint of the link have to exist
11629 find mayExist(problem, interpretation, source);
11630 find mayExist(problem, interpretation, target);
11631 // Type consistency
11632 find mayInstanceOfInformationLink_class(problem,interpretation,source);
11633 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
11634 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11635 // the upper bound of the multiplicity should be considered.
11636 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
11637 check(numberOfExistingReferences < 1);
11638 // The eOpposite of the reference is containment, then a referene cannot be created if
11639 // 1. Multiple parents
11640 neg find mustContains4(problem,interpretation,source,_);
11641 // 2. Circle in the containment hierarchy
11642 neg find mustTransitiveContains(source,target);
11643} or {
11644 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
11645}
11646/**
11647 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
11648 */
11649private pattern mustInRelationto_reference_InformationLink(
11650 problem:LogicProblem, interpretation:PartialInterpretation,
11651 source: DefinedElement, target:DefinedElement)
11652{
11653 find interpretation(problem,interpretation);
11654 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11655 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
11656 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11657 BinaryElementRelationLink.param1(link,source);
11658 BinaryElementRelationLink.param2(link,target);
11659}
11660/**
11661 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
11662 */
11663private pattern mayInRelationto_reference_InformationLink(
11664 problem:LogicProblem, interpretation:PartialInterpretation,
11665 source: DefinedElement, target:DefinedElement)
11666{
11667 find interpretation(problem,interpretation);
11668 // The two endpoint of the link have to exist
11669 find mayExist(problem, interpretation, source);
11670 find mayExist(problem, interpretation, target);
11671 // Type consistency
11672 find mayInstanceOfInformationLink_class(problem,interpretation,source);
11673 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
11674 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11675 // the upper bound of the multiplicity should be considered.
11676 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
11677 check(numberOfExistingReferences < 1);
11678} or {
11679 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
11680}
11681/**
11682 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
11683 */
11684private pattern mustInRelationdata_reference_FunctionalInterface(
11685 problem:LogicProblem, interpretation:PartialInterpretation,
11686 source: DefinedElement, target:DefinedElement)
11687{
11688 find interpretation(problem,interpretation);
11689 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11690 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
11691 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11692 BinaryElementRelationLink.param1(link,source);
11693 BinaryElementRelationLink.param2(link,target);
11694}
11695/**
11696 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
11697 */
11698private pattern mayInRelationdata_reference_FunctionalInterface(
11699 problem:LogicProblem, interpretation:PartialInterpretation,
11700 source: DefinedElement, target:DefinedElement)
11701{
11702 find interpretation(problem,interpretation);
11703 // The two endpoint of the link have to exist
11704 find mayExist(problem, interpretation, source);
11705 find mayExist(problem, interpretation, target);
11706 // Type consistency
11707 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
11708 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
11709 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
11710 // the upper bound of the opposite reference multiplicity should be considered.
11711 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
11712 check(numberOfExistingOppositeReferences < 1);
11713 // The reference is containment, then a new reference cannot be create if:
11714 // 1. Multiple parents
11715 neg find mustContains4(problem,interpretation,_,target);
11716 // 2. Circle in the containment hierarchy
11717 neg find mustTransitiveContains(source,target);
11718} or {
11719 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
11720}
11721/**
11722 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
11723 */
11724private pattern mustInRelationelement_reference_FunctionalInterface(
11725 problem:LogicProblem, interpretation:PartialInterpretation,
11726 source: DefinedElement, target:DefinedElement)
11727{
11728 find interpretation(problem,interpretation);
11729 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11730 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
11731 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11732 BinaryElementRelationLink.param1(link,source);
11733 BinaryElementRelationLink.param2(link,target);
11734}
11735/**
11736 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
11737 */
11738private pattern mayInRelationelement_reference_FunctionalInterface(
11739 problem:LogicProblem, interpretation:PartialInterpretation,
11740 source: DefinedElement, target:DefinedElement)
11741{
11742 find interpretation(problem,interpretation);
11743 // The two endpoint of the link have to exist
11744 find mayExist(problem, interpretation, source);
11745 find mayExist(problem, interpretation, target);
11746 // Type consistency
11747 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
11748 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
11749 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11750 // the upper bound of the multiplicity should be considered.
11751 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
11752 check(numberOfExistingReferences < 1);
11753 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
11754 // the upper bound of the opposite reference multiplicity should be considered.
11755 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
11756 check(numberOfExistingOppositeReferences < 1);
11757 // The eOpposite of the reference is containment, then a referene cannot be created if
11758 // 1. Multiple parents
11759 neg find mustContains4(problem,interpretation,source,_);
11760 // 2. Circle in the containment hierarchy
11761 neg find mustTransitiveContains(source,target);
11762} or {
11763 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
11764}
11765/**
11766 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
11767 */
11768private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
11769 problem:LogicProblem, interpretation:PartialInterpretation,
11770 source: DefinedElement, target:DefinedElement)
11771{
11772 find interpretation(problem,interpretation);
11773 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11774 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
11775 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11776 BinaryElementRelationLink.param1(link,source);
11777 BinaryElementRelationLink.param2(link,target);
11778}
11779/**
11780 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
11781 */
11782private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
11783 problem:LogicProblem, interpretation:PartialInterpretation,
11784 source: DefinedElement, target:DefinedElement)
11785{
11786 find interpretation(problem,interpretation);
11787 // The two endpoint of the link have to exist
11788 find mayExist(problem, interpretation, source);
11789 find mayExist(problem, interpretation, target);
11790 // Type consistency
11791 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
11792 find mayInstanceOfInformationLink_class(problem,interpretation,target);
11793 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
11794 // the upper bound of the opposite reference multiplicity should be considered.
11795 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
11796 check(numberOfExistingOppositeReferences < 1);
11797} or {
11798 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
11799}
11800/**
11801 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
11802 */
11803private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
11804 problem:LogicProblem, interpretation:PartialInterpretation,
11805 source: DefinedElement, target:DefinedElement)
11806{
11807 find interpretation(problem,interpretation);
11808 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11809 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
11810 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11811 BinaryElementRelationLink.param1(link,source);
11812 BinaryElementRelationLink.param2(link,target);
11813}
11814/**
11815 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
11816 */
11817private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
11818 problem:LogicProblem, interpretation:PartialInterpretation,
11819 source: DefinedElement, target:DefinedElement)
11820{
11821 find interpretation(problem,interpretation);
11822 // The two endpoint of the link have to exist
11823 find mayExist(problem, interpretation, source);
11824 find mayExist(problem, interpretation, target);
11825 // Type consistency
11826 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
11827 find mayInstanceOfInformationLink_class(problem,interpretation,target);
11828 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
11829 // the upper bound of the opposite reference multiplicity should be considered.
11830 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
11831 check(numberOfExistingOppositeReferences < 1);
11832 // The reference is containment, then a new reference cannot be create if:
11833 // 1. Multiple parents
11834 neg find mustContains4(problem,interpretation,_,target);
11835 // 2. Circle in the containment hierarchy
11836 neg find mustTransitiveContains(source,target);
11837} or {
11838 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
11839}
11840/**
11841 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
11842 */
11843private pattern mustInRelationterminator_reference_FunctionalData(
11844 problem:LogicProblem, interpretation:PartialInterpretation,
11845 source: DefinedElement, target:DefinedElement)
11846{
11847 find interpretation(problem,interpretation);
11848 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11849 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
11850 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11851 BinaryElementRelationLink.param1(link,source);
11852 BinaryElementRelationLink.param2(link,target);
11853}
11854/**
11855 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
11856 */
11857private pattern mayInRelationterminator_reference_FunctionalData(
11858 problem:LogicProblem, interpretation:PartialInterpretation,
11859 source: DefinedElement, target:DefinedElement)
11860{
11861 find interpretation(problem,interpretation);
11862 // The two endpoint of the link have to exist
11863 find mayExist(problem, interpretation, source);
11864 find mayExist(problem, interpretation, target);
11865 // Type consistency
11866 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
11867 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
11868 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11869 // the upper bound of the multiplicity should be considered.
11870 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
11871 check(numberOfExistingReferences < 1);
11872 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
11873 // the upper bound of the opposite reference multiplicity should be considered.
11874 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
11875 check(numberOfExistingOppositeReferences < 1);
11876 // The reference is containment, then a new reference cannot be create if:
11877 // 1. Multiple parents
11878 neg find mustContains4(problem,interpretation,_,target);
11879 // 2. Circle in the containment hierarchy
11880 neg find mustTransitiveContains(source,target);
11881} or {
11882 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
11883}
11884/**
11885 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
11886 */
11887private pattern mustInRelationinterface_reference_FunctionalData(
11888 problem:LogicProblem, interpretation:PartialInterpretation,
11889 source: DefinedElement, target:DefinedElement)
11890{
11891 find interpretation(problem,interpretation);
11892 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11893 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
11894 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11895 BinaryElementRelationLink.param1(link,source);
11896 BinaryElementRelationLink.param2(link,target);
11897}
11898/**
11899 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
11900 */
11901private pattern mayInRelationinterface_reference_FunctionalData(
11902 problem:LogicProblem, interpretation:PartialInterpretation,
11903 source: DefinedElement, target:DefinedElement)
11904{
11905 find interpretation(problem,interpretation);
11906 // The two endpoint of the link have to exist
11907 find mayExist(problem, interpretation, source);
11908 find mayExist(problem, interpretation, target);
11909 // Type consistency
11910 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
11911 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
11912 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11913 // the upper bound of the multiplicity should be considered.
11914 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
11915 check(numberOfExistingReferences < 1);
11916 // The eOpposite of the reference is containment, then a referene cannot be created if
11917 // 1. Multiple parents
11918 neg find mustContains4(problem,interpretation,source,_);
11919 // 2. Circle in the containment hierarchy
11920 neg find mustTransitiveContains(source,target);
11921} or {
11922 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
11923}
11924/**
11925 * Matcher for detecting tuples t where []type attribute Function(source,target)
11926 */
11927private pattern mustInRelationtype_attribute_Function(
11928 problem:LogicProblem, interpretation:PartialInterpretation,
11929 source: DefinedElement, target:DefinedElement)
11930{
11931 find interpretation(problem,interpretation);
11932 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
11933 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
11934 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
11935 BinaryElementRelationLink.param1(link,source);
11936 BinaryElementRelationLink.param2(link,target);
11937}
11938/**
11939 * Matcher for detecting tuples t where <>type attribute Function(source,target)
11940 */
11941private pattern mayInRelationtype_attribute_Function(
11942 problem:LogicProblem, interpretation:PartialInterpretation,
11943 source: DefinedElement, target:DefinedElement)
11944{
11945 find interpretation(problem,interpretation);
11946 // The two endpoint of the link have to exist
11947 find mayExist(problem, interpretation, source);
11948 find mayExist(problem, interpretation, target);
11949 // Type consistency
11950 find mayInstanceOfFunction_class(problem,interpretation,source);
11951 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
11952 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
11953 // the upper bound of the multiplicity should be considered.
11954 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
11955 check(numberOfExistingReferences < 1);
11956} or {
11957 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
11958}
11959
11960//////////
11961// 1.3 Relation Definition Indexers
11962//////////
11963
11964//////////
11965// 1.4 Containment Indexer
11966//////////
11967private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
11968 find mustContains4(_,_,source,target);
11969}
11970
11971private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
11972 source: DefinedElement, target: DefinedElement)
11973 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
11974
11975 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
11976
11977 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
11978
11979 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
11980
11981 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
11982
11983 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
11984
11985private pattern mustTransitiveContains(source,target) {
11986 find mustContains2+(source,target);
11987}
11988
11989//////////
11990// 2. Invalidation Indexers
11991//////////
11992// 2.1 Invalidated by WF Queries
11993//////////
11994
11995//////////
11996// 3. Unfinishedness Indexers
11997//////////
11998// 3.1 Unfinishedness Measured by Multiplicity
11999//////////
12000pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
12001 find interpretation(problem,interpretation);
12002 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12003 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
12004 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
12005 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
12006 check(numberOfExistingReferences < 1);
12007 missingMultiplicity == eval(1-numberOfExistingReferences);
12008}
12009pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
12010 find interpretation(problem,interpretation);
12011 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12012 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
12013 find mustInstanceOfInformationLink_class(problem,interpretation,object);
12014 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
12015 check(numberOfExistingReferences < 1);
12016 missingMultiplicity == eval(1-numberOfExistingReferences);
12017}
12018pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
12019 find interpretation(problem,interpretation);
12020 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12021 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
12022 find mustInstanceOfFunction_class(problem,interpretation,object);
12023 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
12024 check(numberOfExistingReferences < 1);
12025 missingMultiplicity == eval(1-numberOfExistingReferences);
12026}
12027
12028//////////
12029// 3.2 Unfinishedness Measured by WF Queries
12030//////////
12031
12032//////////
12033// 4. Refinement Indexers
12034//////////
12035// 4.1 Object constructors
12036//////////
12037private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
12038{
12039 find interpretation(problem,interpretation);
12040 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
12041 find mustExist(problem, interpretation, root);
12042}or{
12043 find interpretation(problem,interpretation);
12044 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
12045 find mustExist(problem, interpretation, root);
12046}or{
12047 find interpretation(problem,interpretation);
12048 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
12049 find mustExist(problem, interpretation, root);
12050}or{
12051 find interpretation(problem,interpretation);
12052 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
12053 find mustExist(problem, interpretation, root);
12054}or{
12055 find interpretation(problem,interpretation);
12056 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
12057 find mustExist(problem, interpretation, root);
12058}or{
12059 find interpretation(problem,interpretation);
12060 find mustInstanceOfInformationLink_class(problem,interpretation,root);
12061 find mustExist(problem, interpretation, root);
12062}or{
12063 find interpretation(problem,interpretation);
12064 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
12065 find mustExist(problem, interpretation, root);
12066}or{
12067 find interpretation(problem,interpretation);
12068 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
12069 find mustExist(problem, interpretation, root);
12070}or{
12071 find interpretation(problem,interpretation);
12072 find mustInstanceOfFunction_class(problem,interpretation,root);
12073 find mustExist(problem, interpretation, root);
12074}or{
12075 find interpretation(problem,interpretation);
12076 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
12077 find mustExist(problem, interpretation, root);
12078}or{
12079 find interpretation(problem,interpretation);
12080 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
12081 find mustExist(problem, interpretation, root);
12082}
12083pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
12084 problem:LogicProblem, interpretation:PartialInterpretation,
12085 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
12086 container:DefinedElement)
12087{
12088 find interpretation(problem,interpretation);
12089 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12090 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
12091 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
12092 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
12093 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
12094 find mayInstanceOfFunction_class(problem,interpretation,newObject);
12095 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
12096 find mustExist(problem, interpretation, container);
12097 neg find mustExist(problem, interpretation, newObject);
12098}
12099pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
12100 problem:LogicProblem, interpretation:PartialInterpretation,
12101 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
12102 container:DefinedElement)
12103{
12104 find interpretation(problem,interpretation);
12105 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12106 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
12107 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
12108 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
12109 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
12110 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
12111 find mustInstanceOfFunction_class(problem,interpretation,container);
12112 find mayInstanceOfFunction_class(problem,interpretation,newObject);
12113 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
12114 find mustExist(problem, interpretation, container);
12115 neg find mustExist(problem, interpretation, newObject);
12116}
12117pattern createObject_Function_class(
12118 problem:LogicProblem, interpretation:PartialInterpretation,
12119 typeInterpretation:PartialComplexTypeInterpretation)
12120{
12121 find interpretation(problem,interpretation);
12122 neg find hasElementInContainment(problem,interpretation);
12123 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12124 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
12125 find mayInstanceOfFunction_class(problem,interpretation,newObject);
12126 find mayExist(problem, interpretation, newObject);
12127 neg find mustExist(problem, interpretation, newObject);
12128}
12129pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
12130 problem:LogicProblem, interpretation:PartialInterpretation,
12131 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
12132 container:DefinedElement)
12133{
12134 find interpretation(problem,interpretation);
12135 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12136 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
12137 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
12138 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
12139 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
12140 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
12141 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
12142 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
12143 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
12144 find mustExist(problem, interpretation, container);
12145 neg find mustExist(problem, interpretation, newObject);
12146}
12147pattern createObject_InformationLink_class(
12148 problem:LogicProblem, interpretation:PartialInterpretation,
12149 typeInterpretation:PartialComplexTypeInterpretation)
12150{
12151 find interpretation(problem,interpretation);
12152 neg find hasElementInContainment(problem,interpretation);
12153 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12154 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
12155 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
12156 find mayExist(problem, interpretation, newObject);
12157 neg find mustExist(problem, interpretation, newObject);
12158}
12159pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
12160 problem:LogicProblem, interpretation:PartialInterpretation,
12161 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
12162 container:DefinedElement)
12163{
12164 find interpretation(problem,interpretation);
12165 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12166 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
12167 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
12168 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
12169 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
12170 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
12171 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
12172 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
12173 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
12174 find mustExist(problem, interpretation, container);
12175 neg find mustExist(problem, interpretation, newObject);
12176}
12177pattern createObject_FAMTerminator_class(
12178 problem:LogicProblem, interpretation:PartialInterpretation,
12179 typeInterpretation:PartialComplexTypeInterpretation)
12180{
12181 find interpretation(problem,interpretation);
12182 neg find hasElementInContainment(problem,interpretation);
12183 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12184 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
12185 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
12186 find mayExist(problem, interpretation, newObject);
12187 neg find mustExist(problem, interpretation, newObject);
12188}
12189pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
12190 problem:LogicProblem, interpretation:PartialInterpretation,
12191 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
12192 container:DefinedElement)
12193{
12194 find interpretation(problem,interpretation);
12195 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12196 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
12197 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
12198 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
12199 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
12200 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
12201 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
12202 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
12203 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
12204 find mustExist(problem, interpretation, container);
12205 neg find mustExist(problem, interpretation, newObject);
12206}
12207pattern createObject_FunctionalInput_class(
12208 problem:LogicProblem, interpretation:PartialInterpretation,
12209 typeInterpretation:PartialComplexTypeInterpretation)
12210{
12211 find interpretation(problem,interpretation);
12212 neg find hasElementInContainment(problem,interpretation);
12213 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12214 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
12215 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
12216 find mayExist(problem, interpretation, newObject);
12217 neg find mustExist(problem, interpretation, newObject);
12218}
12219pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
12220 problem:LogicProblem, interpretation:PartialInterpretation,
12221 typeInterpretation:PartialComplexTypeInterpretation)
12222{
12223 find interpretation(problem,interpretation);
12224 neg find hasElementInContainment(problem,interpretation);
12225 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12226 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
12227 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
12228 find mayExist(problem, interpretation, newObject);
12229 neg find mustExist(problem, interpretation, newObject);
12230}
12231pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
12232 problem:LogicProblem, interpretation:PartialInterpretation,
12233 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
12234 container:DefinedElement)
12235{
12236 find interpretation(problem,interpretation);
12237 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12238 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
12239 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
12240 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
12241 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
12242 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
12243 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
12244 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
12245 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
12246 find mustExist(problem, interpretation, container);
12247 neg find mustExist(problem, interpretation, newObject);
12248}
12249pattern createObject_FunctionalOutput_class(
12250 problem:LogicProblem, interpretation:PartialInterpretation,
12251 typeInterpretation:PartialComplexTypeInterpretation)
12252{
12253 find interpretation(problem,interpretation);
12254 neg find hasElementInContainment(problem,interpretation);
12255 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12256 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
12257 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
12258 find mayExist(problem, interpretation, newObject);
12259 neg find mustExist(problem, interpretation, newObject);
12260}
12261pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
12262 problem:LogicProblem, interpretation:PartialInterpretation,
12263 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
12264 container:DefinedElement)
12265{
12266 find interpretation(problem,interpretation);
12267 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12268 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
12269 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
12270 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
12271 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
12272 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
12273 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
12274 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
12275 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
12276 find mustExist(problem, interpretation, container);
12277 neg find mustExist(problem, interpretation, newObject);
12278}
12279pattern createObject_FunctionalInterface_class(
12280 problem:LogicProblem, interpretation:PartialInterpretation,
12281 typeInterpretation:PartialComplexTypeInterpretation)
12282{
12283 find interpretation(problem,interpretation);
12284 neg find hasElementInContainment(problem,interpretation);
12285 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12286 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
12287 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
12288 find mayExist(problem, interpretation, newObject);
12289 neg find mustExist(problem, interpretation, newObject);
12290}
12291
12292//////////
12293// 4.2 Type refinement
12294//////////
12295pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
12296 find interpretation(problem,interpretation);
12297 PartialInterpretation.newElements(interpretation,element);
12298 find mayInstanceOfFunction_class(problem,interpretation,element);
12299 neg find mustInstanceOfFunction_class(problem,interpretation,element);
12300 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12301 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12302 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12303 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12304 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12305}
12306pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
12307 find interpretation(problem,interpretation);
12308 PartialInterpretation.newElements(interpretation,element);
12309 find mayInstanceOfInformationLink_class(problem,interpretation,element);
12310 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12311 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12312 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12313 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12314 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12315 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12316}
12317pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
12318 find interpretation(problem,interpretation);
12319 PartialInterpretation.newElements(interpretation,element);
12320 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
12321 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12322 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12323 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12324 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12325 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12326 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12327}
12328pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
12329 find interpretation(problem,interpretation);
12330 PartialInterpretation.newElements(interpretation,element);
12331 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
12332 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12333 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12334 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
12335 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
12336 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12337 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12338 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12339}
12340pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
12341 find interpretation(problem,interpretation);
12342 PartialInterpretation.newElements(interpretation,element);
12343 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
12344 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12345 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12346 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12347 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
12348 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12349 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12350}
12351pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
12352 find interpretation(problem,interpretation);
12353 PartialInterpretation.newElements(interpretation,element);
12354 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
12355 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12356 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12357 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
12358 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
12359 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12360 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12361 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12362}
12363pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
12364 find interpretation(problem,interpretation);
12365 PartialInterpretation.newElements(interpretation,element);
12366 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
12367 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12368 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12369 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12370 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12371 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12372 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12373}
12374
12375//////////
12376// 4.3 Relation refinement
12377//////////
12378pattern refineRelation_model_reference_FunctionalElement(
12379 problem:LogicProblem, interpretation:PartialInterpretation,
12380 relationIterpretation:PartialRelationInterpretation,
12381 from: DefinedElement, to: DefinedElement)
12382{
12383 find interpretation(problem,interpretation);
12384 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12385 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
12386 find mustExist(problem, interpretation, from);
12387 find mustExist(problem, interpretation, to);
12388 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
12389 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
12390 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
12391 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
12392}
12393pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
12394 problem:LogicProblem, interpretation:PartialInterpretation,
12395 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
12396 from: DefinedElement, to: DefinedElement)
12397{
12398 find interpretation(problem,interpretation);
12399 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12400 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
12401 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
12402 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
12403 find mustExist(problem, interpretation, from);
12404 find mustExist(problem, interpretation, to);
12405 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
12406 find mustInstanceOfInformationLink_class(problem,interpretation,to);
12407 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
12408 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
12409}
12410pattern refineRelation_type_attribute_Function(
12411 problem:LogicProblem, interpretation:PartialInterpretation,
12412 relationIterpretation:PartialRelationInterpretation,
12413 from: DefinedElement, to: DefinedElement)
12414{
12415 find interpretation(problem,interpretation);
12416 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12417 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
12418 find mustExist(problem, interpretation, from);
12419 find mustExist(problem, interpretation, to);
12420 find mustInstanceOfFunction_class(problem,interpretation,from);
12421 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
12422 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
12423 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
12424}
12425import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
12426import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
12427import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
12428
12429//////////
12430// 0. Util
12431//////////
12432private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
12433 PartialInterpretation.problem(interpretation,problem);
12434}
12435
12436/////////////////////////
12437// 0.1 Existence
12438/////////////////////////
12439private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12440 find interpretation(problem,interpretation);
12441 LogicProblem.elements(problem,element);
12442} or {
12443 find interpretation(problem,interpretation);
12444 PartialInterpretation.newElements(interpretation,element);
12445}
12446
12447private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12448 find mustExist(problem,interpretation,element);
12449} or {
12450 find interpretation(problem,interpretation);
12451 neg find elementCloseWorld(element);
12452 PartialInterpretation.openWorldElements(interpretation,element);
12453}
12454
12455private pattern elementCloseWorld(element:DefinedElement) {
12456 PartialInterpretation.openWorldElements(i,element);
12457 PartialInterpretation.maxNewElements(i,0);
12458} or {
12459 Scope.targetTypeInterpretation(scope,interpretation);
12460 PartialTypeInterpratation.elements(interpretation,element);
12461 Scope.maxNewElements(scope,0);
12462}
12463
12464////////////////////////
12465// 0.2 Equivalence
12466////////////////////////
12467pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
12468 find mayExist(problem,interpretation,a);
12469 find mayExist(problem,interpretation,b);
12470 a == b;
12471}
12472
12473////////////////////////
12474// 0.3 Required Patterns by TypeIndexer
12475////////////////////////
12476private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
12477 find interpretation(problem,interpretation);
12478 LogicProblem.types(problem,type);
12479 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
12480 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12481}
12482
12483private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
12484 find interpretation(problem,interpretation);
12485 LogicProblem.types(problem,type);
12486 TypeDefinition.elements(type,element);
12487} or {
12488 find interpretation(problem,interpretation);
12489 find typeInterpretation(problem,interpretation,type,typeInterpretation);
12490 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
12491}
12492
12493private pattern isPrimitive(element: PrimitiveElement) {
12494 PrimitiveElement(element);
12495}
12496
12497//////////
12498// 1. Problem-Specific Base Indexers
12499//////////
12500// 1.1 Type Indexers
12501//////////
12502// 1.1.1 primitive Type Indexers
12503//////////
12504
12505//////////
12506// 1.1.2 domain-specific Type Indexers
12507//////////
12508/**
12509 * An element must be an instance of type "FunctionalElement class".
12510 */
12511private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12512 Type.name(type,"FunctionalElement class");
12513 find directInstanceOf(problem,interpretation,element,type);
12514}
12515private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12516 find interpretation(problem,interpretation);
12517 PartialInterpretation.scopes(interpretation,scope);
12518 Scope.targetTypeInterpretation(scope,typeInterpretation);
12519 Scope.maxNewElements(scope,0);
12520 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12521 Type.name(type,"FunctionalElement class");
12522}
12523
12524/**
12525 * An element may be an instance of type "FunctionalElement class".
12526 */
12527private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12528{
12529 find interpretation(problem,interpretation);
12530 PartialInterpretation.newElements(interpretation,element);
12531 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12532 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12533 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12534 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12535 neg find mustInstanceOfFunction_class(problem,interpretation,element);
12536 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12537 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
12538 neg find isPrimitive(element);
12539} or {
12540 find interpretation(problem,interpretation);
12541 PartialInterpretation.openWorldElements(interpretation,element);
12542 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12543 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12544 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12545 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12546 neg find mustInstanceOfFunction_class(problem,interpretation,element);
12547 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12548 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
12549 neg find isPrimitive(element);
12550} or
12551{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
12552/**
12553 * An element must be an instance of type "FunctionalArchitectureModel class".
12554 */
12555private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12556 Type.name(type,"FunctionalArchitectureModel class");
12557 find directInstanceOf(problem,interpretation,element,type);
12558}
12559private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12560 find interpretation(problem,interpretation);
12561 PartialInterpretation.scopes(interpretation,scope);
12562 Scope.targetTypeInterpretation(scope,typeInterpretation);
12563 Scope.maxNewElements(scope,0);
12564 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12565 Type.name(type,"FunctionalArchitectureModel class");
12566}
12567
12568/**
12569 * An element may be an instance of type "FunctionalArchitectureModel class".
12570 */
12571private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12572{
12573 find interpretation(problem,interpretation);
12574 PartialInterpretation.newElements(interpretation,element);
12575 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12576 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12577 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12578 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12579 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12580 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
12581 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
12582 neg find isPrimitive(element);
12583} or {
12584 find interpretation(problem,interpretation);
12585 PartialInterpretation.openWorldElements(interpretation,element);
12586 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12587 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12588 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12589 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12590 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12591 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
12592 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
12593 neg find isPrimitive(element);
12594} or
12595{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
12596/**
12597 * An element must be an instance of type "Function class".
12598 */
12599private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12600 Type.name(type,"Function class");
12601 find directInstanceOf(problem,interpretation,element,type);
12602}
12603private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12604 find interpretation(problem,interpretation);
12605 PartialInterpretation.scopes(interpretation,scope);
12606 Scope.targetTypeInterpretation(scope,typeInterpretation);
12607 Scope.maxNewElements(scope,0);
12608 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12609 Type.name(type,"Function class");
12610}
12611
12612/**
12613 * An element may be an instance of type "Function class".
12614 */
12615private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12616{
12617 find interpretation(problem,interpretation);
12618 PartialInterpretation.newElements(interpretation,element);
12619 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12620 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12621 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12622 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12623 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12624 neg find scopeDisallowsNewFunction_class(problem, interpretation);
12625 neg find isPrimitive(element);
12626} or {
12627 find interpretation(problem,interpretation);
12628 PartialInterpretation.openWorldElements(interpretation,element);
12629 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12630 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12631 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12632 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12633 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12634 neg find scopeDisallowsNewFunction_class(problem, interpretation);
12635 neg find isPrimitive(element);
12636} or
12637{ find mustInstanceOfFunction_class(problem,interpretation,element); }
12638/**
12639 * An element must be an instance of type "FAMTerminator class".
12640 */
12641private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12642 Type.name(type,"FAMTerminator class");
12643 find directInstanceOf(problem,interpretation,element,type);
12644}
12645private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12646 find interpretation(problem,interpretation);
12647 PartialInterpretation.scopes(interpretation,scope);
12648 Scope.targetTypeInterpretation(scope,typeInterpretation);
12649 Scope.maxNewElements(scope,0);
12650 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12651 Type.name(type,"FAMTerminator class");
12652}
12653
12654/**
12655 * An element may be an instance of type "FAMTerminator class".
12656 */
12657private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12658{
12659 find interpretation(problem,interpretation);
12660 PartialInterpretation.newElements(interpretation,element);
12661 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12662 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12663 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12664 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12665 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12666 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
12667 neg find isPrimitive(element);
12668} or {
12669 find interpretation(problem,interpretation);
12670 PartialInterpretation.openWorldElements(interpretation,element);
12671 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12672 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12673 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12674 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12675 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12676 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
12677 neg find isPrimitive(element);
12678} or
12679{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
12680/**
12681 * An element must be an instance of type "InformationLink class".
12682 */
12683private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12684 Type.name(type,"InformationLink class");
12685 find directInstanceOf(problem,interpretation,element,type);
12686}
12687private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12688 find interpretation(problem,interpretation);
12689 PartialInterpretation.scopes(interpretation,scope);
12690 Scope.targetTypeInterpretation(scope,typeInterpretation);
12691 Scope.maxNewElements(scope,0);
12692 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12693 Type.name(type,"InformationLink class");
12694}
12695
12696/**
12697 * An element may be an instance of type "InformationLink class".
12698 */
12699private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12700{
12701 find interpretation(problem,interpretation);
12702 PartialInterpretation.newElements(interpretation,element);
12703 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12704 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12705 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12706 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12707 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12708 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
12709 neg find isPrimitive(element);
12710} or {
12711 find interpretation(problem,interpretation);
12712 PartialInterpretation.openWorldElements(interpretation,element);
12713 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12714 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12715 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12716 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12717 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12718 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
12719 neg find isPrimitive(element);
12720} or
12721{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
12722/**
12723 * An element must be an instance of type "FunctionalInterface class".
12724 */
12725private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12726 Type.name(type,"FunctionalInterface class");
12727 find directInstanceOf(problem,interpretation,element,type);
12728}
12729private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12730 find interpretation(problem,interpretation);
12731 PartialInterpretation.scopes(interpretation,scope);
12732 Scope.targetTypeInterpretation(scope,typeInterpretation);
12733 Scope.maxNewElements(scope,0);
12734 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12735 Type.name(type,"FunctionalInterface class");
12736}
12737
12738/**
12739 * An element may be an instance of type "FunctionalInterface class".
12740 */
12741private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12742{
12743 find interpretation(problem,interpretation);
12744 PartialInterpretation.newElements(interpretation,element);
12745 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12746 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12747 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12748 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12749 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12750 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
12751 neg find isPrimitive(element);
12752} or {
12753 find interpretation(problem,interpretation);
12754 PartialInterpretation.openWorldElements(interpretation,element);
12755 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12756 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12757 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12758 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12759 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12760 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
12761 neg find isPrimitive(element);
12762} or
12763{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
12764/**
12765 * An element must be an instance of type "FunctionalInput class".
12766 */
12767private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12768 Type.name(type,"FunctionalInput class");
12769 find directInstanceOf(problem,interpretation,element,type);
12770}
12771private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12772 find interpretation(problem,interpretation);
12773 PartialInterpretation.scopes(interpretation,scope);
12774 Scope.targetTypeInterpretation(scope,typeInterpretation);
12775 Scope.maxNewElements(scope,0);
12776 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12777 Type.name(type,"FunctionalInput class");
12778}
12779
12780/**
12781 * An element may be an instance of type "FunctionalInput class".
12782 */
12783private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12784{
12785 find interpretation(problem,interpretation);
12786 PartialInterpretation.newElements(interpretation,element);
12787 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
12788 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12789 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12790 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12791 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12792 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12793 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
12794 neg find isPrimitive(element);
12795} or {
12796 find interpretation(problem,interpretation);
12797 PartialInterpretation.openWorldElements(interpretation,element);
12798 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
12799 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12800 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12801 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12802 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12803 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12804 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
12805 neg find isPrimitive(element);
12806} or
12807{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
12808/**
12809 * An element must be an instance of type "FunctionalOutput class".
12810 */
12811private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12812 Type.name(type,"FunctionalOutput class");
12813 find directInstanceOf(problem,interpretation,element,type);
12814}
12815private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12816 find interpretation(problem,interpretation);
12817 PartialInterpretation.scopes(interpretation,scope);
12818 Scope.targetTypeInterpretation(scope,typeInterpretation);
12819 Scope.maxNewElements(scope,0);
12820 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12821 Type.name(type,"FunctionalOutput class");
12822}
12823
12824/**
12825 * An element may be an instance of type "FunctionalOutput class".
12826 */
12827private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12828{
12829 find interpretation(problem,interpretation);
12830 PartialInterpretation.newElements(interpretation,element);
12831 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
12832 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12833 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12834 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12835 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12836 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12837 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
12838 neg find isPrimitive(element);
12839} or {
12840 find interpretation(problem,interpretation);
12841 PartialInterpretation.openWorldElements(interpretation,element);
12842 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
12843 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12844 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12845 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12846 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12847 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12848 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
12849 neg find isPrimitive(element);
12850} or
12851{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
12852/**
12853 * An element must be an instance of type "FunctionalData class".
12854 */
12855private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12856 Type.name(type,"FunctionalData class");
12857 find directInstanceOf(problem,interpretation,element,type);
12858}
12859private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
12860 find interpretation(problem,interpretation);
12861 PartialInterpretation.scopes(interpretation,scope);
12862 Scope.targetTypeInterpretation(scope,typeInterpretation);
12863 Scope.maxNewElements(scope,0);
12864 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12865 Type.name(type,"FunctionalData class");
12866}
12867
12868/**
12869 * An element may be an instance of type "FunctionalData class".
12870 */
12871private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12872{
12873 find interpretation(problem,interpretation);
12874 PartialInterpretation.newElements(interpretation,element);
12875 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
12876 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
12877 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12878 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12879 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12880 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12881 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12882 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
12883 neg find isPrimitive(element);
12884} or {
12885 find interpretation(problem,interpretation);
12886 PartialInterpretation.openWorldElements(interpretation,element);
12887 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
12888 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
12889 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12890 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12891 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12892 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
12893 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12894 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
12895 neg find isPrimitive(element);
12896} or
12897{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
12898/**
12899 * An element must be an instance of type "FunctionType enum".
12900 */
12901private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12902 Type.name(type,"FunctionType enum");
12903 find directInstanceOf(problem,interpretation,element,type);
12904}
12905private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
12906 find interpretation(problem,interpretation);
12907 PartialInterpretation.scopes(interpretation,scope);
12908 Scope.targetTypeInterpretation(scope,typeInterpretation);
12909 Scope.maxNewElements(scope,0);
12910 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12911 Type.name(type,"FunctionType enum");
12912}
12913
12914/**
12915 * An element may be an instance of type "FunctionType enum".
12916 */
12917private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12918{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
12919/**
12920 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
12921 */
12922private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12923 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
12924 find directInstanceOf(problem,interpretation,element,type);
12925}
12926private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
12927 find interpretation(problem,interpretation);
12928 PartialInterpretation.scopes(interpretation,scope);
12929 Scope.targetTypeInterpretation(scope,typeInterpretation);
12930 Scope.maxNewElements(scope,0);
12931 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12932 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
12933}
12934
12935/**
12936 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
12937 */
12938private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12939{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
12940/**
12941 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
12942 */
12943private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
12944 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
12945 find directInstanceOf(problem,interpretation,element,type);
12946}
12947private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
12948 find interpretation(problem,interpretation);
12949 PartialInterpretation.scopes(interpretation,scope);
12950 Scope.targetTypeInterpretation(scope,typeInterpretation);
12951 Scope.maxNewElements(scope,0);
12952 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
12953 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
12954}
12955
12956/**
12957 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
12958 */
12959private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
12960{
12961 find interpretation(problem,interpretation);
12962 PartialInterpretation.newElements(interpretation,element);
12963 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12964 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12965 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12966 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12967 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12968 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
12969 neg find isPrimitive(element);
12970} or {
12971 find interpretation(problem,interpretation);
12972 PartialInterpretation.openWorldElements(interpretation,element);
12973 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
12974 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
12975 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
12976 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
12977 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
12978 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
12979 neg find isPrimitive(element);
12980} or
12981{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
12982
12983//////////
12984// 1.2 Relation Declaration Indexers
12985//////////
12986/**
12987 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
12988 */
12989private pattern mustInRelationinterface_reference_FunctionalElement(
12990 problem:LogicProblem, interpretation:PartialInterpretation,
12991 source: DefinedElement, target:DefinedElement)
12992{
12993 find interpretation(problem,interpretation);
12994 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
12995 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
12996 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
12997 BinaryElementRelationLink.param1(link,source);
12998 BinaryElementRelationLink.param2(link,target);
12999}
13000/**
13001 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
13002 */
13003private pattern mayInRelationinterface_reference_FunctionalElement(
13004 problem:LogicProblem, interpretation:PartialInterpretation,
13005 source: DefinedElement, target:DefinedElement)
13006{
13007 find interpretation(problem,interpretation);
13008 // The two endpoint of the link have to exist
13009 find mayExist(problem, interpretation, source);
13010 find mayExist(problem, interpretation, target);
13011 // Type consistency
13012 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
13013 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
13014 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13015 // the upper bound of the multiplicity should be considered.
13016 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
13017 check(numberOfExistingReferences < 1);
13018 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13019 // the upper bound of the opposite reference multiplicity should be considered.
13020 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
13021 check(numberOfExistingOppositeReferences < 1);
13022 // The reference is containment, then a new reference cannot be create if:
13023 // 1. Multiple parents
13024 neg find mustContains4(problem,interpretation,_,target);
13025 // 2. Circle in the containment hierarchy
13026 neg find mustTransitiveContains(source,target);
13027} or {
13028 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
13029}
13030/**
13031 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
13032 */
13033private pattern mustInRelationmodel_reference_FunctionalElement(
13034 problem:LogicProblem, interpretation:PartialInterpretation,
13035 source: DefinedElement, target:DefinedElement)
13036{
13037 find interpretation(problem,interpretation);
13038 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13039 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
13040 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13041 BinaryElementRelationLink.param1(link,source);
13042 BinaryElementRelationLink.param2(link,target);
13043}
13044/**
13045 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
13046 */
13047private pattern mayInRelationmodel_reference_FunctionalElement(
13048 problem:LogicProblem, interpretation:PartialInterpretation,
13049 source: DefinedElement, target:DefinedElement)
13050{
13051 find interpretation(problem,interpretation);
13052 // The two endpoint of the link have to exist
13053 find mayExist(problem, interpretation, source);
13054 find mayExist(problem, interpretation, target);
13055 // Type consistency
13056 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
13057 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
13058 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13059 // the upper bound of the multiplicity should be considered.
13060 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
13061 check(numberOfExistingReferences < 1);
13062} or {
13063 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
13064}
13065/**
13066 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
13067 */
13068private pattern mustInRelationparent_reference_FunctionalElement(
13069 problem:LogicProblem, interpretation:PartialInterpretation,
13070 source: DefinedElement, target:DefinedElement)
13071{
13072 find interpretation(problem,interpretation);
13073 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13074 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
13075 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13076 BinaryElementRelationLink.param1(link,source);
13077 BinaryElementRelationLink.param2(link,target);
13078}
13079/**
13080 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
13081 */
13082private pattern mayInRelationparent_reference_FunctionalElement(
13083 problem:LogicProblem, interpretation:PartialInterpretation,
13084 source: DefinedElement, target:DefinedElement)
13085{
13086 find interpretation(problem,interpretation);
13087 // The two endpoint of the link have to exist
13088 find mayExist(problem, interpretation, source);
13089 find mayExist(problem, interpretation, target);
13090 // Type consistency
13091 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
13092 find mayInstanceOfFunction_class(problem,interpretation,target);
13093 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13094 // the upper bound of the multiplicity should be considered.
13095 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
13096 check(numberOfExistingReferences < 1);
13097 // The eOpposite of the reference is containment, then a referene cannot be created if
13098 // 1. Multiple parents
13099 neg find mustContains4(problem,interpretation,source,_);
13100 // 2. Circle in the containment hierarchy
13101 neg find mustTransitiveContains(source,target);
13102} or {
13103 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
13104}
13105/**
13106 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
13107 */
13108private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
13109 problem:LogicProblem, interpretation:PartialInterpretation,
13110 source: DefinedElement, target:DefinedElement)
13111{
13112 find interpretation(problem,interpretation);
13113 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13114 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
13115 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13116 BinaryElementRelationLink.param1(link,source);
13117 BinaryElementRelationLink.param2(link,target);
13118}
13119/**
13120 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
13121 */
13122private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
13123 problem:LogicProblem, interpretation:PartialInterpretation,
13124 source: DefinedElement, target:DefinedElement)
13125{
13126 find interpretation(problem,interpretation);
13127 // The two endpoint of the link have to exist
13128 find mayExist(problem, interpretation, source);
13129 find mayExist(problem, interpretation, target);
13130 // Type consistency
13131 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
13132 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
13133 // The reference is containment, then a new reference cannot be create if:
13134 // 1. Multiple parents
13135 neg find mustContains4(problem,interpretation,_,target);
13136 // 2. Circle in the containment hierarchy
13137 neg find mustTransitiveContains(source,target);
13138} or {
13139 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
13140}
13141/**
13142 * Matcher for detecting tuples t where []subElements reference Function(source,target)
13143 */
13144private pattern mustInRelationsubElements_reference_Function(
13145 problem:LogicProblem, interpretation:PartialInterpretation,
13146 source: DefinedElement, target:DefinedElement)
13147{
13148 find interpretation(problem,interpretation);
13149 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13150 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
13151 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13152 BinaryElementRelationLink.param1(link,source);
13153 BinaryElementRelationLink.param2(link,target);
13154}
13155/**
13156 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
13157 */
13158private pattern mayInRelationsubElements_reference_Function(
13159 problem:LogicProblem, interpretation:PartialInterpretation,
13160 source: DefinedElement, target:DefinedElement)
13161{
13162 find interpretation(problem,interpretation);
13163 // The two endpoint of the link have to exist
13164 find mayExist(problem, interpretation, source);
13165 find mayExist(problem, interpretation, target);
13166 // Type consistency
13167 find mayInstanceOfFunction_class(problem,interpretation,source);
13168 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
13169 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13170 // the upper bound of the opposite reference multiplicity should be considered.
13171 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
13172 check(numberOfExistingOppositeReferences < 1);
13173 // The reference is containment, then a new reference cannot be create if:
13174 // 1. Multiple parents
13175 neg find mustContains4(problem,interpretation,_,target);
13176 // 2. Circle in the containment hierarchy
13177 neg find mustTransitiveContains(source,target);
13178} or {
13179 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
13180}
13181/**
13182 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
13183 */
13184private pattern mustInRelationdata_reference_FAMTerminator(
13185 problem:LogicProblem, interpretation:PartialInterpretation,
13186 source: DefinedElement, target:DefinedElement)
13187{
13188 find interpretation(problem,interpretation);
13189 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13190 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
13191 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13192 BinaryElementRelationLink.param1(link,source);
13193 BinaryElementRelationLink.param2(link,target);
13194}
13195/**
13196 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
13197 */
13198private pattern mayInRelationdata_reference_FAMTerminator(
13199 problem:LogicProblem, interpretation:PartialInterpretation,
13200 source: DefinedElement, target:DefinedElement)
13201{
13202 find interpretation(problem,interpretation);
13203 // The two endpoint of the link have to exist
13204 find mayExist(problem, interpretation, source);
13205 find mayExist(problem, interpretation, target);
13206 // Type consistency
13207 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
13208 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
13209 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13210 // the upper bound of the multiplicity should be considered.
13211 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
13212 check(numberOfExistingReferences < 1);
13213 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13214 // the upper bound of the opposite reference multiplicity should be considered.
13215 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
13216 check(numberOfExistingOppositeReferences < 1);
13217 // The eOpposite of the reference is containment, then a referene cannot be created if
13218 // 1. Multiple parents
13219 neg find mustContains4(problem,interpretation,source,_);
13220 // 2. Circle in the containment hierarchy
13221 neg find mustTransitiveContains(source,target);
13222} or {
13223 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
13224}
13225/**
13226 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
13227 */
13228private pattern mustInRelationfrom_reference_InformationLink(
13229 problem:LogicProblem, interpretation:PartialInterpretation,
13230 source: DefinedElement, target:DefinedElement)
13231{
13232 find interpretation(problem,interpretation);
13233 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13234 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
13235 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13236 BinaryElementRelationLink.param1(link,source);
13237 BinaryElementRelationLink.param2(link,target);
13238}
13239/**
13240 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
13241 */
13242private pattern mayInRelationfrom_reference_InformationLink(
13243 problem:LogicProblem, interpretation:PartialInterpretation,
13244 source: DefinedElement, target:DefinedElement)
13245{
13246 find interpretation(problem,interpretation);
13247 // The two endpoint of the link have to exist
13248 find mayExist(problem, interpretation, source);
13249 find mayExist(problem, interpretation, target);
13250 // Type consistency
13251 find mayInstanceOfInformationLink_class(problem,interpretation,source);
13252 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
13253 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13254 // the upper bound of the multiplicity should be considered.
13255 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
13256 check(numberOfExistingReferences < 1);
13257 // The eOpposite of the reference is containment, then a referene cannot be created if
13258 // 1. Multiple parents
13259 neg find mustContains4(problem,interpretation,source,_);
13260 // 2. Circle in the containment hierarchy
13261 neg find mustTransitiveContains(source,target);
13262} or {
13263 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
13264}
13265/**
13266 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
13267 */
13268private pattern mustInRelationto_reference_InformationLink(
13269 problem:LogicProblem, interpretation:PartialInterpretation,
13270 source: DefinedElement, target:DefinedElement)
13271{
13272 find interpretation(problem,interpretation);
13273 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13274 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
13275 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13276 BinaryElementRelationLink.param1(link,source);
13277 BinaryElementRelationLink.param2(link,target);
13278}
13279/**
13280 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
13281 */
13282private pattern mayInRelationto_reference_InformationLink(
13283 problem:LogicProblem, interpretation:PartialInterpretation,
13284 source: DefinedElement, target:DefinedElement)
13285{
13286 find interpretation(problem,interpretation);
13287 // The two endpoint of the link have to exist
13288 find mayExist(problem, interpretation, source);
13289 find mayExist(problem, interpretation, target);
13290 // Type consistency
13291 find mayInstanceOfInformationLink_class(problem,interpretation,source);
13292 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
13293 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13294 // the upper bound of the multiplicity should be considered.
13295 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
13296 check(numberOfExistingReferences < 1);
13297} or {
13298 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
13299}
13300/**
13301 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
13302 */
13303private pattern mustInRelationdata_reference_FunctionalInterface(
13304 problem:LogicProblem, interpretation:PartialInterpretation,
13305 source: DefinedElement, target:DefinedElement)
13306{
13307 find interpretation(problem,interpretation);
13308 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13309 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
13310 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13311 BinaryElementRelationLink.param1(link,source);
13312 BinaryElementRelationLink.param2(link,target);
13313}
13314/**
13315 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
13316 */
13317private pattern mayInRelationdata_reference_FunctionalInterface(
13318 problem:LogicProblem, interpretation:PartialInterpretation,
13319 source: DefinedElement, target:DefinedElement)
13320{
13321 find interpretation(problem,interpretation);
13322 // The two endpoint of the link have to exist
13323 find mayExist(problem, interpretation, source);
13324 find mayExist(problem, interpretation, target);
13325 // Type consistency
13326 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
13327 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
13328 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13329 // the upper bound of the opposite reference multiplicity should be considered.
13330 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
13331 check(numberOfExistingOppositeReferences < 1);
13332 // The reference is containment, then a new reference cannot be create if:
13333 // 1. Multiple parents
13334 neg find mustContains4(problem,interpretation,_,target);
13335 // 2. Circle in the containment hierarchy
13336 neg find mustTransitiveContains(source,target);
13337} or {
13338 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
13339}
13340/**
13341 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
13342 */
13343private pattern mustInRelationelement_reference_FunctionalInterface(
13344 problem:LogicProblem, interpretation:PartialInterpretation,
13345 source: DefinedElement, target:DefinedElement)
13346{
13347 find interpretation(problem,interpretation);
13348 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13349 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
13350 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13351 BinaryElementRelationLink.param1(link,source);
13352 BinaryElementRelationLink.param2(link,target);
13353}
13354/**
13355 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
13356 */
13357private pattern mayInRelationelement_reference_FunctionalInterface(
13358 problem:LogicProblem, interpretation:PartialInterpretation,
13359 source: DefinedElement, target:DefinedElement)
13360{
13361 find interpretation(problem,interpretation);
13362 // The two endpoint of the link have to exist
13363 find mayExist(problem, interpretation, source);
13364 find mayExist(problem, interpretation, target);
13365 // Type consistency
13366 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
13367 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
13368 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13369 // the upper bound of the multiplicity should be considered.
13370 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
13371 check(numberOfExistingReferences < 1);
13372 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13373 // the upper bound of the opposite reference multiplicity should be considered.
13374 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
13375 check(numberOfExistingOppositeReferences < 1);
13376 // The eOpposite of the reference is containment, then a referene cannot be created if
13377 // 1. Multiple parents
13378 neg find mustContains4(problem,interpretation,source,_);
13379 // 2. Circle in the containment hierarchy
13380 neg find mustTransitiveContains(source,target);
13381} or {
13382 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
13383}
13384/**
13385 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
13386 */
13387private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
13388 problem:LogicProblem, interpretation:PartialInterpretation,
13389 source: DefinedElement, target:DefinedElement)
13390{
13391 find interpretation(problem,interpretation);
13392 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13393 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
13394 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13395 BinaryElementRelationLink.param1(link,source);
13396 BinaryElementRelationLink.param2(link,target);
13397}
13398/**
13399 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
13400 */
13401private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
13402 problem:LogicProblem, interpretation:PartialInterpretation,
13403 source: DefinedElement, target:DefinedElement)
13404{
13405 find interpretation(problem,interpretation);
13406 // The two endpoint of the link have to exist
13407 find mayExist(problem, interpretation, source);
13408 find mayExist(problem, interpretation, target);
13409 // Type consistency
13410 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
13411 find mayInstanceOfInformationLink_class(problem,interpretation,target);
13412 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13413 // the upper bound of the opposite reference multiplicity should be considered.
13414 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
13415 check(numberOfExistingOppositeReferences < 1);
13416} or {
13417 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
13418}
13419/**
13420 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
13421 */
13422private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
13423 problem:LogicProblem, interpretation:PartialInterpretation,
13424 source: DefinedElement, target:DefinedElement)
13425{
13426 find interpretation(problem,interpretation);
13427 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13428 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
13429 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13430 BinaryElementRelationLink.param1(link,source);
13431 BinaryElementRelationLink.param2(link,target);
13432}
13433/**
13434 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
13435 */
13436private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
13437 problem:LogicProblem, interpretation:PartialInterpretation,
13438 source: DefinedElement, target:DefinedElement)
13439{
13440 find interpretation(problem,interpretation);
13441 // The two endpoint of the link have to exist
13442 find mayExist(problem, interpretation, source);
13443 find mayExist(problem, interpretation, target);
13444 // Type consistency
13445 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
13446 find mayInstanceOfInformationLink_class(problem,interpretation,target);
13447 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13448 // the upper bound of the opposite reference multiplicity should be considered.
13449 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
13450 check(numberOfExistingOppositeReferences < 1);
13451 // The reference is containment, then a new reference cannot be create if:
13452 // 1. Multiple parents
13453 neg find mustContains4(problem,interpretation,_,target);
13454 // 2. Circle in the containment hierarchy
13455 neg find mustTransitiveContains(source,target);
13456} or {
13457 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
13458}
13459/**
13460 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
13461 */
13462private pattern mustInRelationterminator_reference_FunctionalData(
13463 problem:LogicProblem, interpretation:PartialInterpretation,
13464 source: DefinedElement, target:DefinedElement)
13465{
13466 find interpretation(problem,interpretation);
13467 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13468 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
13469 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13470 BinaryElementRelationLink.param1(link,source);
13471 BinaryElementRelationLink.param2(link,target);
13472}
13473/**
13474 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
13475 */
13476private pattern mayInRelationterminator_reference_FunctionalData(
13477 problem:LogicProblem, interpretation:PartialInterpretation,
13478 source: DefinedElement, target:DefinedElement)
13479{
13480 find interpretation(problem,interpretation);
13481 // The two endpoint of the link have to exist
13482 find mayExist(problem, interpretation, source);
13483 find mayExist(problem, interpretation, target);
13484 // Type consistency
13485 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
13486 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
13487 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13488 // the upper bound of the multiplicity should be considered.
13489 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
13490 check(numberOfExistingReferences < 1);
13491 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
13492 // the upper bound of the opposite reference multiplicity should be considered.
13493 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
13494 check(numberOfExistingOppositeReferences < 1);
13495 // The reference is containment, then a new reference cannot be create if:
13496 // 1. Multiple parents
13497 neg find mustContains4(problem,interpretation,_,target);
13498 // 2. Circle in the containment hierarchy
13499 neg find mustTransitiveContains(source,target);
13500} or {
13501 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
13502}
13503/**
13504 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
13505 */
13506private pattern mustInRelationinterface_reference_FunctionalData(
13507 problem:LogicProblem, interpretation:PartialInterpretation,
13508 source: DefinedElement, target:DefinedElement)
13509{
13510 find interpretation(problem,interpretation);
13511 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13512 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
13513 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13514 BinaryElementRelationLink.param1(link,source);
13515 BinaryElementRelationLink.param2(link,target);
13516}
13517/**
13518 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
13519 */
13520private pattern mayInRelationinterface_reference_FunctionalData(
13521 problem:LogicProblem, interpretation:PartialInterpretation,
13522 source: DefinedElement, target:DefinedElement)
13523{
13524 find interpretation(problem,interpretation);
13525 // The two endpoint of the link have to exist
13526 find mayExist(problem, interpretation, source);
13527 find mayExist(problem, interpretation, target);
13528 // Type consistency
13529 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
13530 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
13531 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13532 // the upper bound of the multiplicity should be considered.
13533 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
13534 check(numberOfExistingReferences < 1);
13535 // The eOpposite of the reference is containment, then a referene cannot be created if
13536 // 1. Multiple parents
13537 neg find mustContains4(problem,interpretation,source,_);
13538 // 2. Circle in the containment hierarchy
13539 neg find mustTransitiveContains(source,target);
13540} or {
13541 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
13542}
13543/**
13544 * Matcher for detecting tuples t where []type attribute Function(source,target)
13545 */
13546private pattern mustInRelationtype_attribute_Function(
13547 problem:LogicProblem, interpretation:PartialInterpretation,
13548 source: DefinedElement, target:DefinedElement)
13549{
13550 find interpretation(problem,interpretation);
13551 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13552 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
13553 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
13554 BinaryElementRelationLink.param1(link,source);
13555 BinaryElementRelationLink.param2(link,target);
13556}
13557/**
13558 * Matcher for detecting tuples t where <>type attribute Function(source,target)
13559 */
13560private pattern mayInRelationtype_attribute_Function(
13561 problem:LogicProblem, interpretation:PartialInterpretation,
13562 source: DefinedElement, target:DefinedElement)
13563{
13564 find interpretation(problem,interpretation);
13565 // The two endpoint of the link have to exist
13566 find mayExist(problem, interpretation, source);
13567 find mayExist(problem, interpretation, target);
13568 // Type consistency
13569 find mayInstanceOfFunction_class(problem,interpretation,source);
13570 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
13571 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
13572 // the upper bound of the multiplicity should be considered.
13573 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
13574 check(numberOfExistingReferences < 1);
13575} or {
13576 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
13577}
13578
13579//////////
13580// 1.3 Relation Definition Indexers
13581//////////
13582
13583//////////
13584// 1.4 Containment Indexer
13585//////////
13586private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
13587 find mustContains4(_,_,source,target);
13588}
13589
13590private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
13591 source: DefinedElement, target: DefinedElement)
13592 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
13593
13594 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
13595
13596 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
13597
13598 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
13599
13600 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
13601
13602 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
13603
13604private pattern mustTransitiveContains(source,target) {
13605 find mustContains2+(source,target);
13606}
13607
13608//////////
13609// 2. Invalidation Indexers
13610//////////
13611// 2.1 Invalidated by WF Queries
13612//////////
13613
13614//////////
13615// 3. Unfinishedness Indexers
13616//////////
13617// 3.1 Unfinishedness Measured by Multiplicity
13618//////////
13619pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
13620 find interpretation(problem,interpretation);
13621 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13622 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
13623 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
13624 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
13625 check(numberOfExistingReferences < 1);
13626 missingMultiplicity == eval(1-numberOfExistingReferences);
13627}
13628pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
13629 find interpretation(problem,interpretation);
13630 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13631 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
13632 find mustInstanceOfInformationLink_class(problem,interpretation,object);
13633 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
13634 check(numberOfExistingReferences < 1);
13635 missingMultiplicity == eval(1-numberOfExistingReferences);
13636}
13637pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
13638 find interpretation(problem,interpretation);
13639 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
13640 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
13641 find mustInstanceOfFunction_class(problem,interpretation,object);
13642 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
13643 check(numberOfExistingReferences < 1);
13644 missingMultiplicity == eval(1-numberOfExistingReferences);
13645}
13646
13647//////////
13648// 3.2 Unfinishedness Measured by WF Queries
13649//////////
13650
13651//////////
13652// 4. Refinement Indexers
13653//////////
13654// 4.1 Object constructors
13655//////////
13656private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
13657{
13658 find interpretation(problem,interpretation);
13659 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
13660 find mustExist(problem, interpretation, root);
13661}or{
13662 find interpretation(problem,interpretation);
13663 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
13664 find mustExist(problem, interpretation, root);
13665}or{
13666 find interpretation(problem,interpretation);
13667 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
13668 find mustExist(problem, interpretation, root);
13669}or{
13670 find interpretation(problem,interpretation);
13671 find mustInstanceOfFunction_class(problem,interpretation,root);
13672 find mustExist(problem, interpretation, root);
13673}or{
13674 find interpretation(problem,interpretation);
13675 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
13676 find mustExist(problem, interpretation, root);
13677}or{
13678 find interpretation(problem,interpretation);
13679 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
13680 find mustExist(problem, interpretation, root);
13681}or{
13682 find interpretation(problem,interpretation);
13683 find mustInstanceOfInformationLink_class(problem,interpretation,root);
13684 find mustExist(problem, interpretation, root);
13685}or{
13686 find interpretation(problem,interpretation);
13687 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
13688 find mustExist(problem, interpretation, root);
13689}or{
13690 find interpretation(problem,interpretation);
13691 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
13692 find mustExist(problem, interpretation, root);
13693}or{
13694 find interpretation(problem,interpretation);
13695 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
13696 find mustExist(problem, interpretation, root);
13697}or{
13698 find interpretation(problem,interpretation);
13699 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
13700 find mustExist(problem, interpretation, root);
13701}
13702pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
13703 problem:LogicProblem, interpretation:PartialInterpretation,
13704 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
13705 container:DefinedElement)
13706{
13707 find interpretation(problem,interpretation);
13708 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13709 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
13710 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
13711 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
13712 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
13713 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
13714 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
13715 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
13716 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
13717 find mustExist(problem, interpretation, container);
13718 neg find mustExist(problem, interpretation, newObject);
13719}
13720pattern createObject_FunctionalInput_class(
13721 problem:LogicProblem, interpretation:PartialInterpretation,
13722 typeInterpretation:PartialComplexTypeInterpretation)
13723{
13724 find interpretation(problem,interpretation);
13725 neg find hasElementInContainment(problem,interpretation);
13726 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13727 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
13728 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
13729 find mayExist(problem, interpretation, newObject);
13730 neg find mustExist(problem, interpretation, newObject);
13731}
13732pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
13733 problem:LogicProblem, interpretation:PartialInterpretation,
13734 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
13735 container:DefinedElement)
13736{
13737 find interpretation(problem,interpretation);
13738 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13739 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
13740 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
13741 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
13742 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
13743 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
13744 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
13745 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
13746 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
13747 find mustExist(problem, interpretation, container);
13748 neg find mustExist(problem, interpretation, newObject);
13749}
13750pattern createObject_FunctionalOutput_class(
13751 problem:LogicProblem, interpretation:PartialInterpretation,
13752 typeInterpretation:PartialComplexTypeInterpretation)
13753{
13754 find interpretation(problem,interpretation);
13755 neg find hasElementInContainment(problem,interpretation);
13756 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13757 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
13758 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
13759 find mayExist(problem, interpretation, newObject);
13760 neg find mustExist(problem, interpretation, newObject);
13761}
13762pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
13763 problem:LogicProblem, interpretation:PartialInterpretation,
13764 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
13765 container:DefinedElement)
13766{
13767 find interpretation(problem,interpretation);
13768 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13769 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
13770 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
13771 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
13772 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
13773 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
13774 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
13775 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
13776 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
13777 find mustExist(problem, interpretation, container);
13778 neg find mustExist(problem, interpretation, newObject);
13779}
13780pattern createObject_FAMTerminator_class(
13781 problem:LogicProblem, interpretation:PartialInterpretation,
13782 typeInterpretation:PartialComplexTypeInterpretation)
13783{
13784 find interpretation(problem,interpretation);
13785 neg find hasElementInContainment(problem,interpretation);
13786 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13787 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
13788 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
13789 find mayExist(problem, interpretation, newObject);
13790 neg find mustExist(problem, interpretation, newObject);
13791}
13792pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
13793 problem:LogicProblem, interpretation:PartialInterpretation,
13794 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
13795 container:DefinedElement)
13796{
13797 find interpretation(problem,interpretation);
13798 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13799 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
13800 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
13801 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
13802 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
13803 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
13804 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
13805 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
13806 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
13807 find mustExist(problem, interpretation, container);
13808 neg find mustExist(problem, interpretation, newObject);
13809}
13810pattern createObject_InformationLink_class(
13811 problem:LogicProblem, interpretation:PartialInterpretation,
13812 typeInterpretation:PartialComplexTypeInterpretation)
13813{
13814 find interpretation(problem,interpretation);
13815 neg find hasElementInContainment(problem,interpretation);
13816 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13817 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
13818 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
13819 find mayExist(problem, interpretation, newObject);
13820 neg find mustExist(problem, interpretation, newObject);
13821}
13822pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
13823 problem:LogicProblem, interpretation:PartialInterpretation,
13824 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
13825 container:DefinedElement)
13826{
13827 find interpretation(problem,interpretation);
13828 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13829 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
13830 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
13831 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
13832 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
13833 find mayInstanceOfFunction_class(problem,interpretation,newObject);
13834 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
13835 find mustExist(problem, interpretation, container);
13836 neg find mustExist(problem, interpretation, newObject);
13837}
13838pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
13839 problem:LogicProblem, interpretation:PartialInterpretation,
13840 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
13841 container:DefinedElement)
13842{
13843 find interpretation(problem,interpretation);
13844 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13845 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
13846 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
13847 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
13848 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
13849 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
13850 find mustInstanceOfFunction_class(problem,interpretation,container);
13851 find mayInstanceOfFunction_class(problem,interpretation,newObject);
13852 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
13853 find mustExist(problem, interpretation, container);
13854 neg find mustExist(problem, interpretation, newObject);
13855}
13856pattern createObject_Function_class(
13857 problem:LogicProblem, interpretation:PartialInterpretation,
13858 typeInterpretation:PartialComplexTypeInterpretation)
13859{
13860 find interpretation(problem,interpretation);
13861 neg find hasElementInContainment(problem,interpretation);
13862 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13863 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
13864 find mayInstanceOfFunction_class(problem,interpretation,newObject);
13865 find mayExist(problem, interpretation, newObject);
13866 neg find mustExist(problem, interpretation, newObject);
13867}
13868pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
13869 problem:LogicProblem, interpretation:PartialInterpretation,
13870 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
13871 container:DefinedElement)
13872{
13873 find interpretation(problem,interpretation);
13874 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13875 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
13876 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
13877 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
13878 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
13879 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
13880 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
13881 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
13882 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
13883 find mustExist(problem, interpretation, container);
13884 neg find mustExist(problem, interpretation, newObject);
13885}
13886pattern createObject_FunctionalInterface_class(
13887 problem:LogicProblem, interpretation:PartialInterpretation,
13888 typeInterpretation:PartialComplexTypeInterpretation)
13889{
13890 find interpretation(problem,interpretation);
13891 neg find hasElementInContainment(problem,interpretation);
13892 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13893 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
13894 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
13895 find mayExist(problem, interpretation, newObject);
13896 neg find mustExist(problem, interpretation, newObject);
13897}
13898pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
13899 problem:LogicProblem, interpretation:PartialInterpretation,
13900 typeInterpretation:PartialComplexTypeInterpretation)
13901{
13902 find interpretation(problem,interpretation);
13903 neg find hasElementInContainment(problem,interpretation);
13904 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
13905 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
13906 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
13907 find mayExist(problem, interpretation, newObject);
13908 neg find mustExist(problem, interpretation, newObject);
13909}
13910
13911//////////
13912// 4.2 Type refinement
13913//////////
13914pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
13915 find interpretation(problem,interpretation);
13916 PartialInterpretation.newElements(interpretation,element);
13917 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
13918 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
13919 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
13920 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
13921 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
13922 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
13923 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
13924 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
13925}
13926pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
13927 find interpretation(problem,interpretation);
13928 PartialInterpretation.newElements(interpretation,element);
13929 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
13930 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
13931 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
13932 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
13933 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
13934 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
13935 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
13936 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
13937}
13938pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
13939 find interpretation(problem,interpretation);
13940 PartialInterpretation.newElements(interpretation,element);
13941 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
13942 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
13943 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
13944 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
13945 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
13946 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
13947 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
13948}
13949pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
13950 find interpretation(problem,interpretation);
13951 PartialInterpretation.newElements(interpretation,element);
13952 find mayInstanceOfInformationLink_class(problem,interpretation,element);
13953 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
13954 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
13955 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
13956 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
13957 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
13958 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
13959}
13960pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
13961 find interpretation(problem,interpretation);
13962 PartialInterpretation.newElements(interpretation,element);
13963 find mayInstanceOfFunction_class(problem,interpretation,element);
13964 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
13965 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
13966 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
13967 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
13968 neg find mustInstanceOfFunction_class(problem,interpretation,element);
13969 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
13970}
13971pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
13972 find interpretation(problem,interpretation);
13973 PartialInterpretation.newElements(interpretation,element);
13974 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
13975 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
13976 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
13977 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
13978 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
13979 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
13980 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
13981}
13982pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
13983 find interpretation(problem,interpretation);
13984 PartialInterpretation.newElements(interpretation,element);
13985 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
13986 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
13987 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
13988 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
13989 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
13990 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
13991 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
13992}
13993
13994//////////
13995// 4.3 Relation refinement
13996//////////
13997pattern refineRelation_model_reference_FunctionalElement(
13998 problem:LogicProblem, interpretation:PartialInterpretation,
13999 relationIterpretation:PartialRelationInterpretation,
14000 from: DefinedElement, to: DefinedElement)
14001{
14002 find interpretation(problem,interpretation);
14003 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14004 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
14005 find mustExist(problem, interpretation, from);
14006 find mustExist(problem, interpretation, to);
14007 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
14008 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
14009 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
14010 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
14011}
14012pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
14013 problem:LogicProblem, interpretation:PartialInterpretation,
14014 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
14015 from: DefinedElement, to: DefinedElement)
14016{
14017 find interpretation(problem,interpretation);
14018 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14019 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
14020 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
14021 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
14022 find mustExist(problem, interpretation, from);
14023 find mustExist(problem, interpretation, to);
14024 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
14025 find mustInstanceOfInformationLink_class(problem,interpretation,to);
14026 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
14027 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
14028}
14029pattern refineRelation_type_attribute_Function(
14030 problem:LogicProblem, interpretation:PartialInterpretation,
14031 relationIterpretation:PartialRelationInterpretation,
14032 from: DefinedElement, to: DefinedElement)
14033{
14034 find interpretation(problem,interpretation);
14035 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14036 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
14037 find mustExist(problem, interpretation, from);
14038 find mustExist(problem, interpretation, to);
14039 find mustInstanceOfFunction_class(problem,interpretation,from);
14040 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
14041 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
14042 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
14043}
14044import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
14045import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
14046import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
14047
14048//////////
14049// 0. Util
14050//////////
14051private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
14052 PartialInterpretation.problem(interpretation,problem);
14053}
14054
14055/////////////////////////
14056// 0.1 Existence
14057/////////////////////////
14058private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14059 find interpretation(problem,interpretation);
14060 LogicProblem.elements(problem,element);
14061} or {
14062 find interpretation(problem,interpretation);
14063 PartialInterpretation.newElements(interpretation,element);
14064}
14065
14066private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14067 find mustExist(problem,interpretation,element);
14068} or {
14069 find interpretation(problem,interpretation);
14070 neg find elementCloseWorld(element);
14071 PartialInterpretation.openWorldElements(interpretation,element);
14072}
14073
14074private pattern elementCloseWorld(element:DefinedElement) {
14075 PartialInterpretation.openWorldElements(i,element);
14076 PartialInterpretation.maxNewElements(i,0);
14077} or {
14078 Scope.targetTypeInterpretation(scope,interpretation);
14079 PartialTypeInterpratation.elements(interpretation,element);
14080 Scope.maxNewElements(scope,0);
14081}
14082
14083////////////////////////
14084// 0.2 Equivalence
14085////////////////////////
14086pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
14087 find mayExist(problem,interpretation,a);
14088 find mayExist(problem,interpretation,b);
14089 a == b;
14090}
14091
14092////////////////////////
14093// 0.3 Required Patterns by TypeIndexer
14094////////////////////////
14095private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
14096 find interpretation(problem,interpretation);
14097 LogicProblem.types(problem,type);
14098 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
14099 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14100}
14101
14102private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
14103 find interpretation(problem,interpretation);
14104 LogicProblem.types(problem,type);
14105 TypeDefinition.elements(type,element);
14106} or {
14107 find interpretation(problem,interpretation);
14108 find typeInterpretation(problem,interpretation,type,typeInterpretation);
14109 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
14110}
14111
14112private pattern isPrimitive(element: PrimitiveElement) {
14113 PrimitiveElement(element);
14114}
14115
14116//////////
14117// 1. Problem-Specific Base Indexers
14118//////////
14119// 1.1 Type Indexers
14120//////////
14121// 1.1.1 primitive Type Indexers
14122//////////
14123
14124//////////
14125// 1.1.2 domain-specific Type Indexers
14126//////////
14127/**
14128 * An element must be an instance of type "FunctionalElement class".
14129 */
14130private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14131 Type.name(type,"FunctionalElement class");
14132 find directInstanceOf(problem,interpretation,element,type);
14133}
14134private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
14135 find interpretation(problem,interpretation);
14136 PartialInterpretation.scopes(interpretation,scope);
14137 Scope.targetTypeInterpretation(scope,typeInterpretation);
14138 Scope.maxNewElements(scope,0);
14139 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14140 Type.name(type,"FunctionalElement class");
14141}
14142
14143/**
14144 * An element may be an instance of type "FunctionalElement class".
14145 */
14146private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14147{
14148 find interpretation(problem,interpretation);
14149 PartialInterpretation.newElements(interpretation,element);
14150 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14151 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14152 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14153 neg find mustInstanceOfFunction_class(problem,interpretation,element);
14154 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14155 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14156 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
14157 neg find isPrimitive(element);
14158} or {
14159 find interpretation(problem,interpretation);
14160 PartialInterpretation.openWorldElements(interpretation,element);
14161 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14162 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14163 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14164 neg find mustInstanceOfFunction_class(problem,interpretation,element);
14165 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14166 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14167 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
14168 neg find isPrimitive(element);
14169} or
14170{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
14171/**
14172 * An element must be an instance of type "FunctionalArchitectureModel class".
14173 */
14174private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14175 Type.name(type,"FunctionalArchitectureModel class");
14176 find directInstanceOf(problem,interpretation,element,type);
14177}
14178private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
14179 find interpretation(problem,interpretation);
14180 PartialInterpretation.scopes(interpretation,scope);
14181 Scope.targetTypeInterpretation(scope,typeInterpretation);
14182 Scope.maxNewElements(scope,0);
14183 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14184 Type.name(type,"FunctionalArchitectureModel class");
14185}
14186
14187/**
14188 * An element may be an instance of type "FunctionalArchitectureModel class".
14189 */
14190private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14191{
14192 find interpretation(problem,interpretation);
14193 PartialInterpretation.newElements(interpretation,element);
14194 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14195 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14196 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14197 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14198 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
14199 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14200 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
14201 neg find isPrimitive(element);
14202} or {
14203 find interpretation(problem,interpretation);
14204 PartialInterpretation.openWorldElements(interpretation,element);
14205 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14206 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14207 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14208 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14209 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
14210 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14211 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
14212 neg find isPrimitive(element);
14213} or
14214{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
14215/**
14216 * An element must be an instance of type "Function class".
14217 */
14218private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14219 Type.name(type,"Function class");
14220 find directInstanceOf(problem,interpretation,element,type);
14221}
14222private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
14223 find interpretation(problem,interpretation);
14224 PartialInterpretation.scopes(interpretation,scope);
14225 Scope.targetTypeInterpretation(scope,typeInterpretation);
14226 Scope.maxNewElements(scope,0);
14227 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14228 Type.name(type,"Function class");
14229}
14230
14231/**
14232 * An element may be an instance of type "Function class".
14233 */
14234private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14235{
14236 find interpretation(problem,interpretation);
14237 PartialInterpretation.newElements(interpretation,element);
14238 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14239 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14240 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14241 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14242 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14243 neg find scopeDisallowsNewFunction_class(problem, interpretation);
14244 neg find isPrimitive(element);
14245} or {
14246 find interpretation(problem,interpretation);
14247 PartialInterpretation.openWorldElements(interpretation,element);
14248 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14249 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14250 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14251 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14252 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14253 neg find scopeDisallowsNewFunction_class(problem, interpretation);
14254 neg find isPrimitive(element);
14255} or
14256{ find mustInstanceOfFunction_class(problem,interpretation,element); }
14257/**
14258 * An element must be an instance of type "FAMTerminator class".
14259 */
14260private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14261 Type.name(type,"FAMTerminator class");
14262 find directInstanceOf(problem,interpretation,element,type);
14263}
14264private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
14265 find interpretation(problem,interpretation);
14266 PartialInterpretation.scopes(interpretation,scope);
14267 Scope.targetTypeInterpretation(scope,typeInterpretation);
14268 Scope.maxNewElements(scope,0);
14269 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14270 Type.name(type,"FAMTerminator class");
14271}
14272
14273/**
14274 * An element may be an instance of type "FAMTerminator class".
14275 */
14276private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14277{
14278 find interpretation(problem,interpretation);
14279 PartialInterpretation.newElements(interpretation,element);
14280 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14281 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14282 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14283 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14284 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14285 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
14286 neg find isPrimitive(element);
14287} or {
14288 find interpretation(problem,interpretation);
14289 PartialInterpretation.openWorldElements(interpretation,element);
14290 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14291 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14292 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14293 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14294 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14295 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
14296 neg find isPrimitive(element);
14297} or
14298{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
14299/**
14300 * An element must be an instance of type "InformationLink class".
14301 */
14302private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14303 Type.name(type,"InformationLink class");
14304 find directInstanceOf(problem,interpretation,element,type);
14305}
14306private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
14307 find interpretation(problem,interpretation);
14308 PartialInterpretation.scopes(interpretation,scope);
14309 Scope.targetTypeInterpretation(scope,typeInterpretation);
14310 Scope.maxNewElements(scope,0);
14311 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14312 Type.name(type,"InformationLink class");
14313}
14314
14315/**
14316 * An element may be an instance of type "InformationLink class".
14317 */
14318private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14319{
14320 find interpretation(problem,interpretation);
14321 PartialInterpretation.newElements(interpretation,element);
14322 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14323 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14324 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14325 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14326 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14327 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
14328 neg find isPrimitive(element);
14329} or {
14330 find interpretation(problem,interpretation);
14331 PartialInterpretation.openWorldElements(interpretation,element);
14332 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14333 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14334 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14335 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14336 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14337 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
14338 neg find isPrimitive(element);
14339} or
14340{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
14341/**
14342 * An element must be an instance of type "FunctionalInterface class".
14343 */
14344private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14345 Type.name(type,"FunctionalInterface class");
14346 find directInstanceOf(problem,interpretation,element,type);
14347}
14348private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
14349 find interpretation(problem,interpretation);
14350 PartialInterpretation.scopes(interpretation,scope);
14351 Scope.targetTypeInterpretation(scope,typeInterpretation);
14352 Scope.maxNewElements(scope,0);
14353 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14354 Type.name(type,"FunctionalInterface class");
14355}
14356
14357/**
14358 * An element may be an instance of type "FunctionalInterface class".
14359 */
14360private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14361{
14362 find interpretation(problem,interpretation);
14363 PartialInterpretation.newElements(interpretation,element);
14364 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14365 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14366 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14367 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14368 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14369 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
14370 neg find isPrimitive(element);
14371} or {
14372 find interpretation(problem,interpretation);
14373 PartialInterpretation.openWorldElements(interpretation,element);
14374 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14375 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14376 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14377 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14378 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14379 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
14380 neg find isPrimitive(element);
14381} or
14382{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
14383/**
14384 * An element must be an instance of type "FunctionalInput class".
14385 */
14386private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14387 Type.name(type,"FunctionalInput class");
14388 find directInstanceOf(problem,interpretation,element,type);
14389}
14390private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
14391 find interpretation(problem,interpretation);
14392 PartialInterpretation.scopes(interpretation,scope);
14393 Scope.targetTypeInterpretation(scope,typeInterpretation);
14394 Scope.maxNewElements(scope,0);
14395 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14396 Type.name(type,"FunctionalInput class");
14397}
14398
14399/**
14400 * An element may be an instance of type "FunctionalInput class".
14401 */
14402private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14403{
14404 find interpretation(problem,interpretation);
14405 PartialInterpretation.newElements(interpretation,element);
14406 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14407 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
14408 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14409 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14410 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14411 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14412 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
14413 neg find isPrimitive(element);
14414} or {
14415 find interpretation(problem,interpretation);
14416 PartialInterpretation.openWorldElements(interpretation,element);
14417 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14418 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
14419 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14420 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14421 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14422 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14423 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
14424 neg find isPrimitive(element);
14425} or
14426{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
14427/**
14428 * An element must be an instance of type "FunctionalOutput class".
14429 */
14430private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14431 Type.name(type,"FunctionalOutput class");
14432 find directInstanceOf(problem,interpretation,element,type);
14433}
14434private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
14435 find interpretation(problem,interpretation);
14436 PartialInterpretation.scopes(interpretation,scope);
14437 Scope.targetTypeInterpretation(scope,typeInterpretation);
14438 Scope.maxNewElements(scope,0);
14439 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14440 Type.name(type,"FunctionalOutput class");
14441}
14442
14443/**
14444 * An element may be an instance of type "FunctionalOutput class".
14445 */
14446private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14447{
14448 find interpretation(problem,interpretation);
14449 PartialInterpretation.newElements(interpretation,element);
14450 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14451 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
14452 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14453 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14454 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14455 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14456 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
14457 neg find isPrimitive(element);
14458} or {
14459 find interpretation(problem,interpretation);
14460 PartialInterpretation.openWorldElements(interpretation,element);
14461 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14462 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
14463 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14464 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14465 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14466 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14467 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
14468 neg find isPrimitive(element);
14469} or
14470{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
14471/**
14472 * An element must be an instance of type "FunctionalData class".
14473 */
14474private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14475 Type.name(type,"FunctionalData class");
14476 find directInstanceOf(problem,interpretation,element,type);
14477}
14478private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
14479 find interpretation(problem,interpretation);
14480 PartialInterpretation.scopes(interpretation,scope);
14481 Scope.targetTypeInterpretation(scope,typeInterpretation);
14482 Scope.maxNewElements(scope,0);
14483 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14484 Type.name(type,"FunctionalData class");
14485}
14486
14487/**
14488 * An element may be an instance of type "FunctionalData class".
14489 */
14490private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14491{
14492 find interpretation(problem,interpretation);
14493 PartialInterpretation.newElements(interpretation,element);
14494 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14495 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
14496 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
14497 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14498 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14499 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14500 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14501 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
14502 neg find isPrimitive(element);
14503} or {
14504 find interpretation(problem,interpretation);
14505 PartialInterpretation.openWorldElements(interpretation,element);
14506 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14507 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
14508 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
14509 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
14510 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14511 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14512 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14513 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
14514 neg find isPrimitive(element);
14515} or
14516{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
14517/**
14518 * An element must be an instance of type "FunctionType enum".
14519 */
14520private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14521 Type.name(type,"FunctionType enum");
14522 find directInstanceOf(problem,interpretation,element,type);
14523}
14524private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
14525 find interpretation(problem,interpretation);
14526 PartialInterpretation.scopes(interpretation,scope);
14527 Scope.targetTypeInterpretation(scope,typeInterpretation);
14528 Scope.maxNewElements(scope,0);
14529 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14530 Type.name(type,"FunctionType enum");
14531}
14532
14533/**
14534 * An element may be an instance of type "FunctionType enum".
14535 */
14536private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14537{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
14538/**
14539 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
14540 */
14541private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14542 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
14543 find directInstanceOf(problem,interpretation,element,type);
14544}
14545private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
14546 find interpretation(problem,interpretation);
14547 PartialInterpretation.scopes(interpretation,scope);
14548 Scope.targetTypeInterpretation(scope,typeInterpretation);
14549 Scope.maxNewElements(scope,0);
14550 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14551 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
14552}
14553
14554/**
14555 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
14556 */
14557private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14558{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
14559/**
14560 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
14561 */
14562private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
14563 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
14564 find directInstanceOf(problem,interpretation,element,type);
14565}
14566private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
14567 find interpretation(problem,interpretation);
14568 PartialInterpretation.scopes(interpretation,scope);
14569 Scope.targetTypeInterpretation(scope,typeInterpretation);
14570 Scope.maxNewElements(scope,0);
14571 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
14572 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
14573}
14574
14575/**
14576 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
14577 */
14578private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
14579{
14580 find interpretation(problem,interpretation);
14581 PartialInterpretation.newElements(interpretation,element);
14582 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14583 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14584 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14585 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14586 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14587 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
14588 neg find isPrimitive(element);
14589} or {
14590 find interpretation(problem,interpretation);
14591 PartialInterpretation.openWorldElements(interpretation,element);
14592 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
14593 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
14594 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
14595 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
14596 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
14597 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
14598 neg find isPrimitive(element);
14599} or
14600{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
14601
14602//////////
14603// 1.2 Relation Declaration Indexers
14604//////////
14605/**
14606 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
14607 */
14608private pattern mustInRelationinterface_reference_FunctionalElement(
14609 problem:LogicProblem, interpretation:PartialInterpretation,
14610 source: DefinedElement, target:DefinedElement)
14611{
14612 find interpretation(problem,interpretation);
14613 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14614 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
14615 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14616 BinaryElementRelationLink.param1(link,source);
14617 BinaryElementRelationLink.param2(link,target);
14618}
14619/**
14620 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
14621 */
14622private pattern mayInRelationinterface_reference_FunctionalElement(
14623 problem:LogicProblem, interpretation:PartialInterpretation,
14624 source: DefinedElement, target:DefinedElement)
14625{
14626 find interpretation(problem,interpretation);
14627 // The two endpoint of the link have to exist
14628 find mayExist(problem, interpretation, source);
14629 find mayExist(problem, interpretation, target);
14630 // Type consistency
14631 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
14632 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
14633 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14634 // the upper bound of the multiplicity should be considered.
14635 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
14636 check(numberOfExistingReferences < 1);
14637 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
14638 // the upper bound of the opposite reference multiplicity should be considered.
14639 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
14640 check(numberOfExistingOppositeReferences < 1);
14641 // The reference is containment, then a new reference cannot be create if:
14642 // 1. Multiple parents
14643 neg find mustContains4(problem,interpretation,_,target);
14644 // 2. Circle in the containment hierarchy
14645 neg find mustTransitiveContains(source,target);
14646} or {
14647 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
14648}
14649/**
14650 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
14651 */
14652 private pattern mustInRelationmodel_reference_FunctionalElement(
14653 problem:LogicProblem, interpretation:PartialInterpretation,
14654 source: DefinedElement, target:DefinedElement)
14655 {
14656 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
14657 }
14658/**
14659 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
14660 */
14661 private pattern mayInRelationmodel_reference_FunctionalElement(
14662 problem:LogicProblem, interpretation:PartialInterpretation,
14663 source: DefinedElement, target:DefinedElement)
14664 {
14665 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
14666 }
14667/**
14668 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
14669 */
14670private pattern mustInRelationparent_reference_FunctionalElement(
14671 problem:LogicProblem, interpretation:PartialInterpretation,
14672 source: DefinedElement, target:DefinedElement)
14673{
14674 find interpretation(problem,interpretation);
14675 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14676 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
14677 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14678 BinaryElementRelationLink.param1(link,source);
14679 BinaryElementRelationLink.param2(link,target);
14680}
14681/**
14682 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
14683 */
14684private pattern mayInRelationparent_reference_FunctionalElement(
14685 problem:LogicProblem, interpretation:PartialInterpretation,
14686 source: DefinedElement, target:DefinedElement)
14687{
14688 find interpretation(problem,interpretation);
14689 // The two endpoint of the link have to exist
14690 find mayExist(problem, interpretation, source);
14691 find mayExist(problem, interpretation, target);
14692 // Type consistency
14693 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
14694 find mayInstanceOfFunction_class(problem,interpretation,target);
14695 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14696 // the upper bound of the multiplicity should be considered.
14697 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
14698 check(numberOfExistingReferences < 1);
14699 // The eOpposite of the reference is containment, then a referene cannot be created if
14700 // 1. Multiple parents
14701 neg find mustContains4(problem,interpretation,source,_);
14702 // 2. Circle in the containment hierarchy
14703 neg find mustTransitiveContains(source,target);
14704} or {
14705 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
14706}
14707/**
14708 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
14709 */
14710private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
14711 problem:LogicProblem, interpretation:PartialInterpretation,
14712 source: DefinedElement, target:DefinedElement)
14713{
14714 find interpretation(problem,interpretation);
14715 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14716 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
14717 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14718 BinaryElementRelationLink.param1(link,source);
14719 BinaryElementRelationLink.param2(link,target);
14720}
14721/**
14722 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
14723 */
14724private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
14725 problem:LogicProblem, interpretation:PartialInterpretation,
14726 source: DefinedElement, target:DefinedElement)
14727{
14728 find interpretation(problem,interpretation);
14729 // The two endpoint of the link have to exist
14730 find mayExist(problem, interpretation, source);
14731 find mayExist(problem, interpretation, target);
14732 // Type consistency
14733 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
14734 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
14735 // The reference is containment, then a new reference cannot be create if:
14736 // 1. Multiple parents
14737 neg find mustContains4(problem,interpretation,_,target);
14738 // 2. Circle in the containment hierarchy
14739 neg find mustTransitiveContains(source,target);
14740} or {
14741 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
14742}
14743/**
14744 * Matcher for detecting tuples t where []subElements reference Function(source,target)
14745 */
14746private pattern mustInRelationsubElements_reference_Function(
14747 problem:LogicProblem, interpretation:PartialInterpretation,
14748 source: DefinedElement, target:DefinedElement)
14749{
14750 find interpretation(problem,interpretation);
14751 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14752 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
14753 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14754 BinaryElementRelationLink.param1(link,source);
14755 BinaryElementRelationLink.param2(link,target);
14756}
14757/**
14758 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
14759 */
14760private pattern mayInRelationsubElements_reference_Function(
14761 problem:LogicProblem, interpretation:PartialInterpretation,
14762 source: DefinedElement, target:DefinedElement)
14763{
14764 find interpretation(problem,interpretation);
14765 // The two endpoint of the link have to exist
14766 find mayExist(problem, interpretation, source);
14767 find mayExist(problem, interpretation, target);
14768 // Type consistency
14769 find mayInstanceOfFunction_class(problem,interpretation,source);
14770 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
14771 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
14772 // the upper bound of the opposite reference multiplicity should be considered.
14773 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
14774 check(numberOfExistingOppositeReferences < 1);
14775 // The reference is containment, then a new reference cannot be create if:
14776 // 1. Multiple parents
14777 neg find mustContains4(problem,interpretation,_,target);
14778 // 2. Circle in the containment hierarchy
14779 neg find mustTransitiveContains(source,target);
14780} or {
14781 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
14782}
14783/**
14784 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
14785 */
14786private pattern mustInRelationdata_reference_FAMTerminator(
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,"data reference FAMTerminator");
14793 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14794 BinaryElementRelationLink.param1(link,source);
14795 BinaryElementRelationLink.param2(link,target);
14796}
14797/**
14798 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
14799 */
14800private pattern mayInRelationdata_reference_FAMTerminator(
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 mayInstanceOfFAMTerminator_class(problem,interpretation,source);
14810 find mayInstanceOfFunctionalData_class(problem,interpretation,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 mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
14814 check(numberOfExistingReferences < 1);
14815 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
14816 // the upper bound of the opposite reference multiplicity should be considered.
14817 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
14818 check(numberOfExistingOppositeReferences < 1);
14819 // The eOpposite of the reference is containment, then a referene cannot be created if
14820 // 1. Multiple parents
14821 neg find mustContains4(problem,interpretation,source,_);
14822 // 2. Circle in the containment hierarchy
14823 neg find mustTransitiveContains(source,target);
14824} or {
14825 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
14826}
14827/**
14828 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
14829 */
14830private pattern mustInRelationfrom_reference_InformationLink(
14831 problem:LogicProblem, interpretation:PartialInterpretation,
14832 source: DefinedElement, target:DefinedElement)
14833{
14834 find interpretation(problem,interpretation);
14835 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14836 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
14837 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14838 BinaryElementRelationLink.param1(link,source);
14839 BinaryElementRelationLink.param2(link,target);
14840}
14841/**
14842 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
14843 */
14844private pattern mayInRelationfrom_reference_InformationLink(
14845 problem:LogicProblem, interpretation:PartialInterpretation,
14846 source: DefinedElement, target:DefinedElement)
14847{
14848 find interpretation(problem,interpretation);
14849 // The two endpoint of the link have to exist
14850 find mayExist(problem, interpretation, source);
14851 find mayExist(problem, interpretation, target);
14852 // Type consistency
14853 find mayInstanceOfInformationLink_class(problem,interpretation,source);
14854 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
14855 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14856 // the upper bound of the multiplicity should be considered.
14857 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
14858 check(numberOfExistingReferences < 1);
14859 // The eOpposite of the reference is containment, then a referene cannot be created if
14860 // 1. Multiple parents
14861 neg find mustContains4(problem,interpretation,source,_);
14862 // 2. Circle in the containment hierarchy
14863 neg find mustTransitiveContains(source,target);
14864} or {
14865 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
14866}
14867/**
14868 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
14869 */
14870private pattern mustInRelationto_reference_InformationLink(
14871 problem:LogicProblem, interpretation:PartialInterpretation,
14872 source: DefinedElement, target:DefinedElement)
14873{
14874 find interpretation(problem,interpretation);
14875 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14876 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
14877 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14878 BinaryElementRelationLink.param1(link,source);
14879 BinaryElementRelationLink.param2(link,target);
14880}
14881/**
14882 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
14883 */
14884private pattern mayInRelationto_reference_InformationLink(
14885 problem:LogicProblem, interpretation:PartialInterpretation,
14886 source: DefinedElement, target:DefinedElement)
14887{
14888 find interpretation(problem,interpretation);
14889 // The two endpoint of the link have to exist
14890 find mayExist(problem, interpretation, source);
14891 find mayExist(problem, interpretation, target);
14892 // Type consistency
14893 find mayInstanceOfInformationLink_class(problem,interpretation,source);
14894 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
14895 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14896 // the upper bound of the multiplicity should be considered.
14897 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
14898 check(numberOfExistingReferences < 1);
14899} or {
14900 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
14901}
14902/**
14903 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
14904 */
14905private pattern mustInRelationdata_reference_FunctionalInterface(
14906 problem:LogicProblem, interpretation:PartialInterpretation,
14907 source: DefinedElement, target:DefinedElement)
14908{
14909 find interpretation(problem,interpretation);
14910 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14911 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
14912 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14913 BinaryElementRelationLink.param1(link,source);
14914 BinaryElementRelationLink.param2(link,target);
14915}
14916/**
14917 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
14918 */
14919private pattern mayInRelationdata_reference_FunctionalInterface(
14920 problem:LogicProblem, interpretation:PartialInterpretation,
14921 source: DefinedElement, target:DefinedElement)
14922{
14923 find interpretation(problem,interpretation);
14924 // The two endpoint of the link have to exist
14925 find mayExist(problem, interpretation, source);
14926 find mayExist(problem, interpretation, target);
14927 // Type consistency
14928 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
14929 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
14930 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
14931 // the upper bound of the opposite reference multiplicity should be considered.
14932 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
14933 check(numberOfExistingOppositeReferences < 1);
14934 // The reference is containment, then a new reference cannot be create if:
14935 // 1. Multiple parents
14936 neg find mustContains4(problem,interpretation,_,target);
14937 // 2. Circle in the containment hierarchy
14938 neg find mustTransitiveContains(source,target);
14939} or {
14940 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
14941}
14942/**
14943 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
14944 */
14945private pattern mustInRelationelement_reference_FunctionalInterface(
14946 problem:LogicProblem, interpretation:PartialInterpretation,
14947 source: DefinedElement, target:DefinedElement)
14948{
14949 find interpretation(problem,interpretation);
14950 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14951 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
14952 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14953 BinaryElementRelationLink.param1(link,source);
14954 BinaryElementRelationLink.param2(link,target);
14955}
14956/**
14957 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
14958 */
14959private pattern mayInRelationelement_reference_FunctionalInterface(
14960 problem:LogicProblem, interpretation:PartialInterpretation,
14961 source: DefinedElement, target:DefinedElement)
14962{
14963 find interpretation(problem,interpretation);
14964 // The two endpoint of the link have to exist
14965 find mayExist(problem, interpretation, source);
14966 find mayExist(problem, interpretation, target);
14967 // Type consistency
14968 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
14969 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
14970 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
14971 // the upper bound of the multiplicity should be considered.
14972 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
14973 check(numberOfExistingReferences < 1);
14974 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
14975 // the upper bound of the opposite reference multiplicity should be considered.
14976 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
14977 check(numberOfExistingOppositeReferences < 1);
14978 // The eOpposite of the reference is containment, then a referene cannot be created if
14979 // 1. Multiple parents
14980 neg find mustContains4(problem,interpretation,source,_);
14981 // 2. Circle in the containment hierarchy
14982 neg find mustTransitiveContains(source,target);
14983} or {
14984 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
14985}
14986/**
14987 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
14988 */
14989private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
14990 problem:LogicProblem, interpretation:PartialInterpretation,
14991 source: DefinedElement, target:DefinedElement)
14992{
14993 find interpretation(problem,interpretation);
14994 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
14995 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
14996 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
14997 BinaryElementRelationLink.param1(link,source);
14998 BinaryElementRelationLink.param2(link,target);
14999}
15000/**
15001 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
15002 */
15003private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
15004 problem:LogicProblem, interpretation:PartialInterpretation,
15005 source: DefinedElement, target:DefinedElement)
15006{
15007 find interpretation(problem,interpretation);
15008 // The two endpoint of the link have to exist
15009 find mayExist(problem, interpretation, source);
15010 find mayExist(problem, interpretation, target);
15011 // Type consistency
15012 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
15013 find mayInstanceOfInformationLink_class(problem,interpretation,target);
15014 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
15015 // the upper bound of the opposite reference multiplicity should be considered.
15016 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
15017 check(numberOfExistingOppositeReferences < 1);
15018} or {
15019 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
15020}
15021/**
15022 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
15023 */
15024private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
15025 problem:LogicProblem, interpretation:PartialInterpretation,
15026 source: DefinedElement, target:DefinedElement)
15027{
15028 find interpretation(problem,interpretation);
15029 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15030 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
15031 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
15032 BinaryElementRelationLink.param1(link,source);
15033 BinaryElementRelationLink.param2(link,target);
15034}
15035/**
15036 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
15037 */
15038private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
15039 problem:LogicProblem, interpretation:PartialInterpretation,
15040 source: DefinedElement, target:DefinedElement)
15041{
15042 find interpretation(problem,interpretation);
15043 // The two endpoint of the link have to exist
15044 find mayExist(problem, interpretation, source);
15045 find mayExist(problem, interpretation, target);
15046 // Type consistency
15047 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
15048 find mayInstanceOfInformationLink_class(problem,interpretation,target);
15049 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
15050 // the upper bound of the opposite reference multiplicity should be considered.
15051 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
15052 check(numberOfExistingOppositeReferences < 1);
15053 // The reference is containment, then a new reference cannot be create if:
15054 // 1. Multiple parents
15055 neg find mustContains4(problem,interpretation,_,target);
15056 // 2. Circle in the containment hierarchy
15057 neg find mustTransitiveContains(source,target);
15058} or {
15059 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
15060}
15061/**
15062 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
15063 */
15064private pattern mustInRelationterminator_reference_FunctionalData(
15065 problem:LogicProblem, interpretation:PartialInterpretation,
15066 source: DefinedElement, target:DefinedElement)
15067{
15068 find interpretation(problem,interpretation);
15069 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15070 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
15071 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
15072 BinaryElementRelationLink.param1(link,source);
15073 BinaryElementRelationLink.param2(link,target);
15074}
15075/**
15076 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
15077 */
15078private pattern mayInRelationterminator_reference_FunctionalData(
15079 problem:LogicProblem, interpretation:PartialInterpretation,
15080 source: DefinedElement, target:DefinedElement)
15081{
15082 find interpretation(problem,interpretation);
15083 // The two endpoint of the link have to exist
15084 find mayExist(problem, interpretation, source);
15085 find mayExist(problem, interpretation, target);
15086 // Type consistency
15087 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
15088 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
15089 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
15090 // the upper bound of the multiplicity should be considered.
15091 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
15092 check(numberOfExistingReferences < 1);
15093 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
15094 // the upper bound of the opposite reference multiplicity should be considered.
15095 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
15096 check(numberOfExistingOppositeReferences < 1);
15097 // The reference is containment, then a new reference cannot be create if:
15098 // 1. Multiple parents
15099 neg find mustContains4(problem,interpretation,_,target);
15100 // 2. Circle in the containment hierarchy
15101 neg find mustTransitiveContains(source,target);
15102} or {
15103 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
15104}
15105/**
15106 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
15107 */
15108private pattern mustInRelationinterface_reference_FunctionalData(
15109 problem:LogicProblem, interpretation:PartialInterpretation,
15110 source: DefinedElement, target:DefinedElement)
15111{
15112 find interpretation(problem,interpretation);
15113 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15114 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
15115 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
15116 BinaryElementRelationLink.param1(link,source);
15117 BinaryElementRelationLink.param2(link,target);
15118}
15119/**
15120 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
15121 */
15122private pattern mayInRelationinterface_reference_FunctionalData(
15123 problem:LogicProblem, interpretation:PartialInterpretation,
15124 source: DefinedElement, target:DefinedElement)
15125{
15126 find interpretation(problem,interpretation);
15127 // The two endpoint of the link have to exist
15128 find mayExist(problem, interpretation, source);
15129 find mayExist(problem, interpretation, target);
15130 // Type consistency
15131 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
15132 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
15133 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
15134 // the upper bound of the multiplicity should be considered.
15135 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
15136 check(numberOfExistingReferences < 1);
15137 // The eOpposite of the reference is containment, then a referene cannot be created if
15138 // 1. Multiple parents
15139 neg find mustContains4(problem,interpretation,source,_);
15140 // 2. Circle in the containment hierarchy
15141 neg find mustTransitiveContains(source,target);
15142} or {
15143 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
15144}
15145/**
15146 * Matcher for detecting tuples t where []type attribute Function(source,target)
15147 */
15148 private pattern mustInRelationtype_attribute_Function(
15149 problem:LogicProblem, interpretation:PartialInterpretation,
15150 source: DefinedElement, target:DefinedElement)
15151 {
15152 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
15153 }
15154/**
15155 * Matcher for detecting tuples t where []type attribute Function(source,target)
15156 */
15157 private pattern mayInRelationtype_attribute_Function(
15158 problem:LogicProblem, interpretation:PartialInterpretation,
15159 source: DefinedElement, target:DefinedElement)
15160 {
15161 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
15162 }
15163
15164//////////
15165// 1.3 Relation Definition Indexers
15166//////////
15167// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation
15168private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
15169 problem:LogicProblem, interpretation:PartialInterpretation,
15170 var_T, var_I)
15171{
15172 find interpretation(problem,interpretation);
15173 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
15174 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
15175 // T is exported
15176 // I is exported
15177 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
15178 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
15179 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
15180 var_virtual0 == var_I;
15181 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
15182 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
15183 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
15184 var_virtual1 == var_T;
15185}or{
15186 find interpretation(problem,interpretation);
15187 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
15188 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
15189 // T is exported
15190 // I is exported
15191 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
15192 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
15193 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
15194 var_virtual0 == var_In;
15195 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
15196 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
15197 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
15198 var_virtual1 == var_T;
15199}
15200private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
15201 problem:LogicProblem, interpretation:PartialInterpretation,
15202 var_T, var_I)
15203{
15204 find interpretation(problem,interpretation);
15205 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
15206 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
15207 // T is exported
15208 // I is exported
15209 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
15210 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
15211 find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
15212 find mayEquivalent(problem, interpretation, var_virtual0, var_I);
15213 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
15214 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
15215 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
15216 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
15217}or{
15218 find interpretation(problem,interpretation);
15219 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
15220 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
15221 // T is exported
15222 // I is exported
15223 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
15224 find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
15225 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
15226 find mayEquivalent(problem, interpretation, var_virtual0, var_In);
15227 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In);
15228 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
15229 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
15230 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
15231}
15232private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
15233 problem:LogicProblem, interpretation:PartialInterpretation,
15234 var_T, var_I)
15235{
15236 find interpretation(problem,interpretation);
15237 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
15238 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
15239 // T is exported
15240 // I is exported
15241 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
15242 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
15243 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
15244 var_virtual0 == var_I;
15245 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
15246 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
15247 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
15248 var_virtual1 == var_T;
15249}or{
15250 find interpretation(problem,interpretation);
15251 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
15252 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
15253 // T is exported
15254 // I is exported
15255 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
15256 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
15257 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
15258 var_virtual0 == var_In;
15259 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
15260 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
15261 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
15262 var_virtual1 == var_T;
15263}
15264// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type
15265private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
15266 problem:LogicProblem, interpretation:PartialInterpretation,
15267 var_This, var_Target)
15268{
15269 find interpretation(problem,interpretation);
15270 find mustInstanceOfFunction_class(problem,interpretation,var_This);
15271 // type constraint is enforced by construction
15272 // This is exported
15273 // Target is exported
15274 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
15275 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
15276 var_Target == var_virtual0;
15277}or{
15278 find interpretation(problem,interpretation);
15279 find mustInstanceOfFunction_class(problem,interpretation,var_This);
15280 // type constraint is enforced by construction
15281 // This is exported
15282 // Target is exported
15283 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
15284 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
15285 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
15286 var_Target == var_virtual0;
15287}or{
15288 find interpretation(problem,interpretation);
15289 find mustInstanceOfFunction_class(problem,interpretation,var_This);
15290 // type constraint is enforced by construction
15291 // This is exported
15292 // Target is exported
15293 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
15294 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
15295 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
15296 var_Target == var_virtual0;
15297}
15298private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
15299 problem:LogicProblem, interpretation:PartialInterpretation,
15300 var_This, var_Target)
15301{
15302 find interpretation(problem,interpretation);
15303 find mayInstanceOfFunction_class(problem,interpretation,var_This);
15304 // type constraint is enforced by construction
15305 // This is exported
15306 // Target is exported
15307 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
15308 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
15309 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
15310}or{
15311 find interpretation(problem,interpretation);
15312 find mayInstanceOfFunction_class(problem,interpretation,var_This);
15313 // type constraint is enforced by construction
15314 // This is exported
15315 // Target is exported
15316 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
15317 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
15318 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
15319 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
15320}or{
15321 find interpretation(problem,interpretation);
15322 find mayInstanceOfFunction_class(problem,interpretation,var_This);
15323 // type constraint is enforced by construction
15324 // This is exported
15325 // Target is exported
15326 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
15327 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
15328 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
15329 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
15330}
15331private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
15332 problem:LogicProblem, interpretation:PartialInterpretation,
15333 var_This, var_Target)
15334{
15335 find interpretation(problem,interpretation);
15336 find mustInstanceOfFunction_class(problem,interpretation,var_This);
15337 // type constraint is enforced by construction
15338 // This is exported
15339 // Target is exported
15340 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
15341 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
15342 var_Target == var_virtual0;
15343}or{
15344 find interpretation(problem,interpretation);
15345 find mustInstanceOfFunction_class(problem,interpretation,var_This);
15346 // type constraint is enforced by construction
15347 // This is exported
15348 // Target is exported
15349 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
15350 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
15351 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
15352 var_Target == var_virtual0;
15353}or{
15354 find interpretation(problem,interpretation);
15355 find mustInstanceOfFunction_class(problem,interpretation,var_This);
15356 // type constraint is enforced by construction
15357 // This is exported
15358 // Target is exported
15359 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
15360 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
15361 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
15362 var_Target == var_virtual0;
15363}
15364// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements
15365private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
15366 problem:LogicProblem, interpretation:PartialInterpretation,
15367 var_Model, var_Root)
15368{
15369 find interpretation(problem,interpretation);
15370 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
15371 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
15372 // Model is exported
15373 // Root is exported
15374 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
15375 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
15376 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
15377 var_virtual0 == var_Root;
15378}
15379private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
15380 problem:LogicProblem, interpretation:PartialInterpretation,
15381 var_Model, var_Root)
15382{
15383 find interpretation(problem,interpretation);
15384 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
15385 find mayInstanceOfFunction_class(problem,interpretation,var_Root);
15386 // Model is exported
15387 // Root is exported
15388 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
15389 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
15390 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
15391 find mayEquivalent(problem, interpretation, var_virtual0, var_Root);
15392}
15393private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
15394 problem:LogicProblem, interpretation:PartialInterpretation,
15395 var_Model, var_Root)
15396{
15397 find interpretation(problem,interpretation);
15398 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
15399 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
15400 // Model is exported
15401 // Root is exported
15402 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
15403 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
15404 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
15405 var_virtual0 == var_Root;
15406}
15407// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent
15408private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
15409 problem:LogicProblem, interpretation:PartialInterpretation,
15410 var_Func, var_Par)
15411{
15412 find interpretation(problem,interpretation);
15413 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
15414 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
15415 // Func is exported
15416 // Par is exported
15417 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
15418 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
15419 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
15420 var_virtual0 == var_Par;
15421}
15422private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
15423 problem:LogicProblem, interpretation:PartialInterpretation,
15424 var_Func, var_Par)
15425{
15426 find interpretation(problem,interpretation);
15427 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
15428 find mayInstanceOfFunction_class(problem,interpretation,var_Par);
15429 // Func is exported
15430 // Par is exported
15431 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
15432 find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
15433 find mayInstanceOfFunction_class(problem,interpretation,var_virtual0);
15434 find mayEquivalent(problem, interpretation, var_virtual0, var_Par);
15435}
15436private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
15437 problem:LogicProblem, interpretation:PartialInterpretation,
15438 var_Func, var_Par)
15439{
15440 find interpretation(problem,interpretation);
15441 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
15442 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
15443 // Func is exported
15444 // Par is exported
15445 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
15446 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
15447 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
15448 var_virtual0 == var_Par;
15449}
15450// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model
15451private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
15452 problem:LogicProblem, interpretation:PartialInterpretation,
15453 var_This, var_Target)
15454{
15455 find interpretation(problem,interpretation);
15456 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
15457 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
15458 // This is exported
15459 // Target is exported
15460 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
15461 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
15462}
15463private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
15464 problem:LogicProblem, interpretation:PartialInterpretation,
15465 var_This, var_Target)
15466{
15467 find interpretation(problem,interpretation);
15468 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
15469 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
15470 // This is exported
15471 // Target is exported
15472 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
15473 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
15474}
15475private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
15476 problem:LogicProblem, interpretation:PartialInterpretation,
15477 var_This, var_Target)
15478{
15479 find interpretation(problem,interpretation);
15480 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
15481 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
15482 // This is exported
15483 // Target is exported
15484 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
15485 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
15486}
15487
15488//////////
15489// 1.4 Containment Indexer
15490//////////
15491private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
15492 find mustContains4(_,_,source,target);
15493}
15494
15495private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
15496 source: DefinedElement, target: DefinedElement)
15497 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
15498
15499 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
15500
15501 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
15502
15503 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
15504
15505 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
15506
15507 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
15508
15509private pattern mustTransitiveContains(source,target) {
15510 find mustContains2+(source,target);
15511}
15512
15513//////////
15514// 2. Invalidation Indexers
15515//////////
15516// 2.1 Invalidated by WF Queries
15517//////////
15518
15519//////////
15520// 3. Unfinishedness Indexers
15521//////////
15522// 3.1 Unfinishedness Measured by Multiplicity
15523//////////
15524pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
15525 find interpretation(problem,interpretation);
15526 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15527 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
15528 find mustInstanceOfInformationLink_class(problem,interpretation,object);
15529 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
15530 check(numberOfExistingReferences < 1);
15531 missingMultiplicity == eval(1-numberOfExistingReferences);
15532}
15533
15534//////////
15535// 3.2 Unfinishedness Measured by WF Queries
15536//////////
15537
15538//////////
15539// 4. Refinement Indexers
15540//////////
15541// 4.1 Object constructors
15542//////////
15543private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
15544{
15545 find interpretation(problem,interpretation);
15546 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
15547 find mustExist(problem, interpretation, root);
15548}or{
15549 find interpretation(problem,interpretation);
15550 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
15551 find mustExist(problem, interpretation, root);
15552}or{
15553 find interpretation(problem,interpretation);
15554 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
15555 find mustExist(problem, interpretation, root);
15556}or{
15557 find interpretation(problem,interpretation);
15558 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
15559 find mustExist(problem, interpretation, root);
15560}or{
15561 find interpretation(problem,interpretation);
15562 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
15563 find mustExist(problem, interpretation, root);
15564}or{
15565 find interpretation(problem,interpretation);
15566 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
15567 find mustExist(problem, interpretation, root);
15568}or{
15569 find interpretation(problem,interpretation);
15570 find mustInstanceOfInformationLink_class(problem,interpretation,root);
15571 find mustExist(problem, interpretation, root);
15572}or{
15573 find interpretation(problem,interpretation);
15574 find mustInstanceOfFunction_class(problem,interpretation,root);
15575 find mustExist(problem, interpretation, root);
15576}or{
15577 find interpretation(problem,interpretation);
15578 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
15579 find mustExist(problem, interpretation, root);
15580}or{
15581 find interpretation(problem,interpretation);
15582 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
15583 find mustExist(problem, interpretation, root);
15584}or{
15585 find interpretation(problem,interpretation);
15586 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
15587 find mustExist(problem, interpretation, root);
15588}
15589pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
15590 problem:LogicProblem, interpretation:PartialInterpretation,
15591 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15592 container:DefinedElement)
15593{
15594 find interpretation(problem,interpretation);
15595 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15596 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
15597 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15598 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
15599 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15600 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
15601 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
15602 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
15603 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
15604 find mustExist(problem, interpretation, container);
15605 neg find mustExist(problem, interpretation, newObject);
15606}
15607pattern createObject_FAMTerminator_class(
15608 problem:LogicProblem, interpretation:PartialInterpretation,
15609 typeInterpretation:PartialComplexTypeInterpretation)
15610{
15611 find interpretation(problem,interpretation);
15612 neg find hasElementInContainment(problem,interpretation);
15613 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15614 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
15615 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
15616 find mayExist(problem, interpretation, newObject);
15617 neg find mustExist(problem, interpretation, newObject);
15618}
15619pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
15620 problem:LogicProblem, interpretation:PartialInterpretation,
15621 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15622 container:DefinedElement)
15623{
15624 find interpretation(problem,interpretation);
15625 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15626 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
15627 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15628 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
15629 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15630 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
15631 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
15632 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
15633 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
15634 find mustExist(problem, interpretation, container);
15635 neg find mustExist(problem, interpretation, newObject);
15636}
15637pattern createObject_FunctionalInput_class(
15638 problem:LogicProblem, interpretation:PartialInterpretation,
15639 typeInterpretation:PartialComplexTypeInterpretation)
15640{
15641 find interpretation(problem,interpretation);
15642 neg find hasElementInContainment(problem,interpretation);
15643 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15644 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
15645 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
15646 find mayExist(problem, interpretation, newObject);
15647 neg find mustExist(problem, interpretation, newObject);
15648}
15649pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
15650 problem:LogicProblem, interpretation:PartialInterpretation,
15651 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15652 container:DefinedElement)
15653{
15654 find interpretation(problem,interpretation);
15655 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15656 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
15657 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15658 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
15659 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15660 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
15661 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
15662 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
15663 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
15664 find mustExist(problem, interpretation, container);
15665 neg find mustExist(problem, interpretation, newObject);
15666}
15667pattern createObject_FunctionalOutput_class(
15668 problem:LogicProblem, interpretation:PartialInterpretation,
15669 typeInterpretation:PartialComplexTypeInterpretation)
15670{
15671 find interpretation(problem,interpretation);
15672 neg find hasElementInContainment(problem,interpretation);
15673 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15674 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
15675 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
15676 find mayExist(problem, interpretation, newObject);
15677 neg find mustExist(problem, interpretation, newObject);
15678}
15679pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
15680 problem:LogicProblem, interpretation:PartialInterpretation,
15681 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15682 container:DefinedElement)
15683{
15684 find interpretation(problem,interpretation);
15685 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15686 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
15687 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15688 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
15689 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15690 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
15691 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
15692 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
15693 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
15694 find mustExist(problem, interpretation, container);
15695 neg find mustExist(problem, interpretation, newObject);
15696}
15697pattern createObject_FunctionalInterface_class(
15698 problem:LogicProblem, interpretation:PartialInterpretation,
15699 typeInterpretation:PartialComplexTypeInterpretation)
15700{
15701 find interpretation(problem,interpretation);
15702 neg find hasElementInContainment(problem,interpretation);
15703 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15704 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
15705 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
15706 find mayExist(problem, interpretation, newObject);
15707 neg find mustExist(problem, interpretation, newObject);
15708}
15709pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
15710 problem:LogicProblem, interpretation:PartialInterpretation,
15711 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15712 container:DefinedElement)
15713{
15714 find interpretation(problem,interpretation);
15715 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15716 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
15717 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15718 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
15719 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
15720 find mayInstanceOfFunction_class(problem,interpretation,newObject);
15721 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
15722 find mustExist(problem, interpretation, container);
15723 neg find mustExist(problem, interpretation, newObject);
15724}
15725pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
15726 problem:LogicProblem, interpretation:PartialInterpretation,
15727 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15728 container:DefinedElement)
15729{
15730 find interpretation(problem,interpretation);
15731 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15732 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
15733 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15734 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
15735 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15736 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
15737 find mustInstanceOfFunction_class(problem,interpretation,container);
15738 find mayInstanceOfFunction_class(problem,interpretation,newObject);
15739 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
15740 find mustExist(problem, interpretation, container);
15741 neg find mustExist(problem, interpretation, newObject);
15742}
15743pattern createObject_Function_class(
15744 problem:LogicProblem, interpretation:PartialInterpretation,
15745 typeInterpretation:PartialComplexTypeInterpretation)
15746{
15747 find interpretation(problem,interpretation);
15748 neg find hasElementInContainment(problem,interpretation);
15749 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15750 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
15751 find mayInstanceOfFunction_class(problem,interpretation,newObject);
15752 find mayExist(problem, interpretation, newObject);
15753 neg find mustExist(problem, interpretation, newObject);
15754}
15755pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
15756 problem:LogicProblem, interpretation:PartialInterpretation,
15757 typeInterpretation:PartialComplexTypeInterpretation)
15758{
15759 find interpretation(problem,interpretation);
15760 neg find hasElementInContainment(problem,interpretation);
15761 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15762 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
15763 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
15764 find mayExist(problem, interpretation, newObject);
15765 neg find mustExist(problem, interpretation, newObject);
15766}
15767pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
15768 problem:LogicProblem, interpretation:PartialInterpretation,
15769 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
15770 container:DefinedElement)
15771{
15772 find interpretation(problem,interpretation);
15773 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15774 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
15775 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
15776 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
15777 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
15778 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
15779 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
15780 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
15781 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
15782 find mustExist(problem, interpretation, container);
15783 neg find mustExist(problem, interpretation, newObject);
15784}
15785pattern createObject_InformationLink_class(
15786 problem:LogicProblem, interpretation:PartialInterpretation,
15787 typeInterpretation:PartialComplexTypeInterpretation)
15788{
15789 find interpretation(problem,interpretation);
15790 neg find hasElementInContainment(problem,interpretation);
15791 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15792 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
15793 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
15794 find mayExist(problem, interpretation, newObject);
15795 neg find mustExist(problem, interpretation, newObject);
15796}
15797
15798//////////
15799// 4.2 Type refinement
15800//////////
15801pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15802 find interpretation(problem,interpretation);
15803 PartialInterpretation.newElements(interpretation,element);
15804 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
15805 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
15806 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
15807 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
15808 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
15809 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
15810 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
15811}
15812pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15813 find interpretation(problem,interpretation);
15814 PartialInterpretation.newElements(interpretation,element);
15815 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
15816 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
15817 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
15818 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
15819 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
15820 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
15821 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
15822 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
15823}
15824pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15825 find interpretation(problem,interpretation);
15826 PartialInterpretation.newElements(interpretation,element);
15827 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
15828 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
15829 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
15830 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
15831 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
15832 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
15833 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
15834 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
15835}
15836pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15837 find interpretation(problem,interpretation);
15838 PartialInterpretation.newElements(interpretation,element);
15839 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
15840 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
15841 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
15842 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
15843 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
15844 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
15845 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
15846}
15847pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15848 find interpretation(problem,interpretation);
15849 PartialInterpretation.newElements(interpretation,element);
15850 find mayInstanceOfFunction_class(problem,interpretation,element);
15851 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
15852 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
15853 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
15854 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
15855 neg find mustInstanceOfFunction_class(problem,interpretation,element);
15856 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
15857}
15858pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15859 find interpretation(problem,interpretation);
15860 PartialInterpretation.newElements(interpretation,element);
15861 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
15862 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
15863 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
15864 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
15865 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
15866 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
15867 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
15868}
15869pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
15870 find interpretation(problem,interpretation);
15871 PartialInterpretation.newElements(interpretation,element);
15872 find mayInstanceOfInformationLink_class(problem,interpretation,element);
15873 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
15874 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
15875 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
15876 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
15877 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
15878 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
15879}
15880
15881//////////
15882// 4.3 Relation refinement
15883//////////
15884pattern refineRelation_model_reference_FunctionalElement(
15885 problem:LogicProblem, interpretation:PartialInterpretation,
15886 relationIterpretation:PartialRelationInterpretation,
15887 from: DefinedElement, to: DefinedElement)
15888{
15889 find interpretation(problem,interpretation);
15890 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15891 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
15892 find mustExist(problem, interpretation, from);
15893 find mustExist(problem, interpretation, to);
15894 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
15895 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
15896 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
15897 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
15898}
15899pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
15900 problem:LogicProblem, interpretation:PartialInterpretation,
15901 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
15902 from: DefinedElement, to: DefinedElement)
15903{
15904 find interpretation(problem,interpretation);
15905 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15906 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
15907 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
15908 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
15909 find mustExist(problem, interpretation, from);
15910 find mustExist(problem, interpretation, to);
15911 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
15912 find mustInstanceOfInformationLink_class(problem,interpretation,to);
15913 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
15914 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
15915}
15916pattern refineRelation_type_attribute_Function(
15917 problem:LogicProblem, interpretation:PartialInterpretation,
15918 relationIterpretation:PartialRelationInterpretation,
15919 from: DefinedElement, to: DefinedElement)
15920{
15921 find interpretation(problem,interpretation);
15922 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
15923 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
15924 find mustExist(problem, interpretation, from);
15925 find mustExist(problem, interpretation, to);
15926 find mustInstanceOfFunction_class(problem,interpretation,from);
15927 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
15928 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
15929 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
15930}
15931import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
15932import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
15933import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
15934
15935//////////
15936// 0. Util
15937//////////
15938private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
15939 PartialInterpretation.problem(interpretation,problem);
15940}
15941
15942/////////////////////////
15943// 0.1 Existence
15944/////////////////////////
15945private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
15946 find interpretation(problem,interpretation);
15947 LogicProblem.elements(problem,element);
15948} or {
15949 find interpretation(problem,interpretation);
15950 PartialInterpretation.newElements(interpretation,element);
15951}
15952
15953private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
15954 find mustExist(problem,interpretation,element);
15955} or {
15956 find interpretation(problem,interpretation);
15957 neg find elementCloseWorld(element);
15958 PartialInterpretation.openWorldElements(interpretation,element);
15959}
15960
15961private pattern elementCloseWorld(element:DefinedElement) {
15962 PartialInterpretation.openWorldElements(i,element);
15963 PartialInterpretation.maxNewElements(i,0);
15964} or {
15965 Scope.targetTypeInterpretation(scope,interpretation);
15966 PartialTypeInterpratation.elements(interpretation,element);
15967 Scope.maxNewElements(scope,0);
15968}
15969
15970////////////////////////
15971// 0.2 Equivalence
15972////////////////////////
15973pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
15974 find mayExist(problem,interpretation,a);
15975 find mayExist(problem,interpretation,b);
15976 a == b;
15977}
15978
15979////////////////////////
15980// 0.3 Required Patterns by TypeIndexer
15981////////////////////////
15982private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
15983 find interpretation(problem,interpretation);
15984 LogicProblem.types(problem,type);
15985 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
15986 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
15987}
15988
15989private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
15990 find interpretation(problem,interpretation);
15991 LogicProblem.types(problem,type);
15992 TypeDefinition.elements(type,element);
15993} or {
15994 find interpretation(problem,interpretation);
15995 find typeInterpretation(problem,interpretation,type,typeInterpretation);
15996 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
15997}
15998
15999private pattern isPrimitive(element: PrimitiveElement) {
16000 PrimitiveElement(element);
16001}
16002
16003//////////
16004// 1. Problem-Specific Base Indexers
16005//////////
16006// 1.1 Type Indexers
16007//////////
16008// 1.1.1 primitive Type Indexers
16009//////////
16010
16011//////////
16012// 1.1.2 domain-specific Type Indexers
16013//////////
16014/**
16015 * An element must be an instance of type "FunctionalElement class".
16016 */
16017private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16018 Type.name(type,"FunctionalElement class");
16019 find directInstanceOf(problem,interpretation,element,type);
16020}
16021private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16022 find interpretation(problem,interpretation);
16023 PartialInterpretation.scopes(interpretation,scope);
16024 Scope.targetTypeInterpretation(scope,typeInterpretation);
16025 Scope.maxNewElements(scope,0);
16026 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16027 Type.name(type,"FunctionalElement class");
16028}
16029
16030/**
16031 * An element may be an instance of type "FunctionalElement class".
16032 */
16033private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16034{
16035 find interpretation(problem,interpretation);
16036 PartialInterpretation.newElements(interpretation,element);
16037 neg find mustInstanceOfFunction_class(problem,interpretation,element);
16038 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16039 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16040 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16041 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16042 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16043 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
16044 neg find isPrimitive(element);
16045} or {
16046 find interpretation(problem,interpretation);
16047 PartialInterpretation.openWorldElements(interpretation,element);
16048 neg find mustInstanceOfFunction_class(problem,interpretation,element);
16049 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16050 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16051 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16052 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16053 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16054 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
16055 neg find isPrimitive(element);
16056} or
16057{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
16058/**
16059 * An element must be an instance of type "FunctionalArchitectureModel class".
16060 */
16061private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16062 Type.name(type,"FunctionalArchitectureModel class");
16063 find directInstanceOf(problem,interpretation,element,type);
16064}
16065private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16066 find interpretation(problem,interpretation);
16067 PartialInterpretation.scopes(interpretation,scope);
16068 Scope.targetTypeInterpretation(scope,typeInterpretation);
16069 Scope.maxNewElements(scope,0);
16070 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16071 Type.name(type,"FunctionalArchitectureModel class");
16072}
16073
16074/**
16075 * An element may be an instance of type "FunctionalArchitectureModel class".
16076 */
16077private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16078{
16079 find interpretation(problem,interpretation);
16080 PartialInterpretation.newElements(interpretation,element);
16081 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
16082 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16083 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16084 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16085 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16086 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16087 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
16088 neg find isPrimitive(element);
16089} or {
16090 find interpretation(problem,interpretation);
16091 PartialInterpretation.openWorldElements(interpretation,element);
16092 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
16093 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16094 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16095 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16096 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16097 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16098 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
16099 neg find isPrimitive(element);
16100} or
16101{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
16102/**
16103 * An element must be an instance of type "Function class".
16104 */
16105private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16106 Type.name(type,"Function class");
16107 find directInstanceOf(problem,interpretation,element,type);
16108}
16109private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16110 find interpretation(problem,interpretation);
16111 PartialInterpretation.scopes(interpretation,scope);
16112 Scope.targetTypeInterpretation(scope,typeInterpretation);
16113 Scope.maxNewElements(scope,0);
16114 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16115 Type.name(type,"Function class");
16116}
16117
16118/**
16119 * An element may be an instance of type "Function class".
16120 */
16121private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16122{
16123 find interpretation(problem,interpretation);
16124 PartialInterpretation.newElements(interpretation,element);
16125 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16126 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16127 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16128 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16129 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16130 neg find scopeDisallowsNewFunction_class(problem, interpretation);
16131 neg find isPrimitive(element);
16132} or {
16133 find interpretation(problem,interpretation);
16134 PartialInterpretation.openWorldElements(interpretation,element);
16135 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16136 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16137 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16138 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16139 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16140 neg find scopeDisallowsNewFunction_class(problem, interpretation);
16141 neg find isPrimitive(element);
16142} or
16143{ find mustInstanceOfFunction_class(problem,interpretation,element); }
16144/**
16145 * An element must be an instance of type "FAMTerminator class".
16146 */
16147private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16148 Type.name(type,"FAMTerminator class");
16149 find directInstanceOf(problem,interpretation,element,type);
16150}
16151private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16152 find interpretation(problem,interpretation);
16153 PartialInterpretation.scopes(interpretation,scope);
16154 Scope.targetTypeInterpretation(scope,typeInterpretation);
16155 Scope.maxNewElements(scope,0);
16156 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16157 Type.name(type,"FAMTerminator class");
16158}
16159
16160/**
16161 * An element may be an instance of type "FAMTerminator class".
16162 */
16163private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16164{
16165 find interpretation(problem,interpretation);
16166 PartialInterpretation.newElements(interpretation,element);
16167 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16168 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16169 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16170 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16171 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16172 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
16173 neg find isPrimitive(element);
16174} or {
16175 find interpretation(problem,interpretation);
16176 PartialInterpretation.openWorldElements(interpretation,element);
16177 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16178 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16179 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16180 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16181 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16182 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
16183 neg find isPrimitive(element);
16184} or
16185{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
16186/**
16187 * An element must be an instance of type "InformationLink class".
16188 */
16189private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16190 Type.name(type,"InformationLink class");
16191 find directInstanceOf(problem,interpretation,element,type);
16192}
16193private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16194 find interpretation(problem,interpretation);
16195 PartialInterpretation.scopes(interpretation,scope);
16196 Scope.targetTypeInterpretation(scope,typeInterpretation);
16197 Scope.maxNewElements(scope,0);
16198 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16199 Type.name(type,"InformationLink class");
16200}
16201
16202/**
16203 * An element may be an instance of type "InformationLink class".
16204 */
16205private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16206{
16207 find interpretation(problem,interpretation);
16208 PartialInterpretation.newElements(interpretation,element);
16209 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16210 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16211 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16212 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16213 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16214 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
16215 neg find isPrimitive(element);
16216} or {
16217 find interpretation(problem,interpretation);
16218 PartialInterpretation.openWorldElements(interpretation,element);
16219 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16220 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16221 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16222 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16223 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16224 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
16225 neg find isPrimitive(element);
16226} or
16227{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
16228/**
16229 * An element must be an instance of type "FunctionalInterface class".
16230 */
16231private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16232 Type.name(type,"FunctionalInterface class");
16233 find directInstanceOf(problem,interpretation,element,type);
16234}
16235private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16236 find interpretation(problem,interpretation);
16237 PartialInterpretation.scopes(interpretation,scope);
16238 Scope.targetTypeInterpretation(scope,typeInterpretation);
16239 Scope.maxNewElements(scope,0);
16240 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16241 Type.name(type,"FunctionalInterface class");
16242}
16243
16244/**
16245 * An element may be an instance of type "FunctionalInterface class".
16246 */
16247private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16248{
16249 find interpretation(problem,interpretation);
16250 PartialInterpretation.newElements(interpretation,element);
16251 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16252 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16253 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16254 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16255 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16256 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
16257 neg find isPrimitive(element);
16258} or {
16259 find interpretation(problem,interpretation);
16260 PartialInterpretation.openWorldElements(interpretation,element);
16261 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16262 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16263 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16264 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16265 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16266 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
16267 neg find isPrimitive(element);
16268} or
16269{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
16270/**
16271 * An element must be an instance of type "FunctionalInput class".
16272 */
16273private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16274 Type.name(type,"FunctionalInput class");
16275 find directInstanceOf(problem,interpretation,element,type);
16276}
16277private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16278 find interpretation(problem,interpretation);
16279 PartialInterpretation.scopes(interpretation,scope);
16280 Scope.targetTypeInterpretation(scope,typeInterpretation);
16281 Scope.maxNewElements(scope,0);
16282 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16283 Type.name(type,"FunctionalInput class");
16284}
16285
16286/**
16287 * An element may be an instance of type "FunctionalInput class".
16288 */
16289private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16290{
16291 find interpretation(problem,interpretation);
16292 PartialInterpretation.newElements(interpretation,element);
16293 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
16294 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16295 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16296 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16297 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16298 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16299 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
16300 neg find isPrimitive(element);
16301} or {
16302 find interpretation(problem,interpretation);
16303 PartialInterpretation.openWorldElements(interpretation,element);
16304 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
16305 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16306 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16307 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16308 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16309 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16310 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
16311 neg find isPrimitive(element);
16312} or
16313{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
16314/**
16315 * An element must be an instance of type "FunctionalOutput class".
16316 */
16317private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16318 Type.name(type,"FunctionalOutput class");
16319 find directInstanceOf(problem,interpretation,element,type);
16320}
16321private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16322 find interpretation(problem,interpretation);
16323 PartialInterpretation.scopes(interpretation,scope);
16324 Scope.targetTypeInterpretation(scope,typeInterpretation);
16325 Scope.maxNewElements(scope,0);
16326 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16327 Type.name(type,"FunctionalOutput class");
16328}
16329
16330/**
16331 * An element may be an instance of type "FunctionalOutput class".
16332 */
16333private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16334{
16335 find interpretation(problem,interpretation);
16336 PartialInterpretation.newElements(interpretation,element);
16337 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16338 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16339 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
16340 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16341 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16342 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16343 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
16344 neg find isPrimitive(element);
16345} or {
16346 find interpretation(problem,interpretation);
16347 PartialInterpretation.openWorldElements(interpretation,element);
16348 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16349 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16350 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
16351 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16352 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16353 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16354 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
16355 neg find isPrimitive(element);
16356} or
16357{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
16358/**
16359 * An element must be an instance of type "FunctionalData class".
16360 */
16361private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16362 Type.name(type,"FunctionalData class");
16363 find directInstanceOf(problem,interpretation,element,type);
16364}
16365private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
16366 find interpretation(problem,interpretation);
16367 PartialInterpretation.scopes(interpretation,scope);
16368 Scope.targetTypeInterpretation(scope,typeInterpretation);
16369 Scope.maxNewElements(scope,0);
16370 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16371 Type.name(type,"FunctionalData class");
16372}
16373
16374/**
16375 * An element may be an instance of type "FunctionalData class".
16376 */
16377private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16378{
16379 find interpretation(problem,interpretation);
16380 PartialInterpretation.newElements(interpretation,element);
16381 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
16382 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16383 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16384 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
16385 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16386 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16387 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16388 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
16389 neg find isPrimitive(element);
16390} or {
16391 find interpretation(problem,interpretation);
16392 PartialInterpretation.openWorldElements(interpretation,element);
16393 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
16394 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16395 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
16396 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
16397 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16398 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16399 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16400 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
16401 neg find isPrimitive(element);
16402} or
16403{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
16404/**
16405 * An element must be an instance of type "FunctionType enum".
16406 */
16407private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16408 Type.name(type,"FunctionType enum");
16409 find directInstanceOf(problem,interpretation,element,type);
16410}
16411private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
16412 find interpretation(problem,interpretation);
16413 PartialInterpretation.scopes(interpretation,scope);
16414 Scope.targetTypeInterpretation(scope,typeInterpretation);
16415 Scope.maxNewElements(scope,0);
16416 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16417 Type.name(type,"FunctionType enum");
16418}
16419
16420/**
16421 * An element may be an instance of type "FunctionType enum".
16422 */
16423private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16424{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
16425/**
16426 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
16427 */
16428private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16429 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
16430 find directInstanceOf(problem,interpretation,element,type);
16431}
16432private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
16433 find interpretation(problem,interpretation);
16434 PartialInterpretation.scopes(interpretation,scope);
16435 Scope.targetTypeInterpretation(scope,typeInterpretation);
16436 Scope.maxNewElements(scope,0);
16437 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16438 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
16439}
16440
16441/**
16442 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
16443 */
16444private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16445{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
16446/**
16447 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
16448 */
16449private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
16450 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
16451 find directInstanceOf(problem,interpretation,element,type);
16452}
16453private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
16454 find interpretation(problem,interpretation);
16455 PartialInterpretation.scopes(interpretation,scope);
16456 Scope.targetTypeInterpretation(scope,typeInterpretation);
16457 Scope.maxNewElements(scope,0);
16458 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
16459 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
16460}
16461
16462/**
16463 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
16464 */
16465private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
16466{
16467 find interpretation(problem,interpretation);
16468 PartialInterpretation.newElements(interpretation,element);
16469 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16470 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16471 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16472 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16473 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16474 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
16475 neg find isPrimitive(element);
16476} or {
16477 find interpretation(problem,interpretation);
16478 PartialInterpretation.openWorldElements(interpretation,element);
16479 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
16480 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
16481 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
16482 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
16483 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
16484 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
16485 neg find isPrimitive(element);
16486} or
16487{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
16488
16489//////////
16490// 1.2 Relation Declaration Indexers
16491//////////
16492/**
16493 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
16494 */
16495private pattern mustInRelationinterface_reference_FunctionalElement(
16496 problem:LogicProblem, interpretation:PartialInterpretation,
16497 source: DefinedElement, target:DefinedElement)
16498{
16499 find interpretation(problem,interpretation);
16500 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16501 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
16502 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16503 BinaryElementRelationLink.param1(link,source);
16504 BinaryElementRelationLink.param2(link,target);
16505}
16506/**
16507 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
16508 */
16509private pattern mayInRelationinterface_reference_FunctionalElement(
16510 problem:LogicProblem, interpretation:PartialInterpretation,
16511 source: DefinedElement, target:DefinedElement)
16512{
16513 find interpretation(problem,interpretation);
16514 // The two endpoint of the link have to exist
16515 find mayExist(problem, interpretation, source);
16516 find mayExist(problem, interpretation, target);
16517 // Type consistency
16518 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
16519 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
16520 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
16521 // the upper bound of the multiplicity should be considered.
16522 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
16523 check(numberOfExistingReferences < 1);
16524 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
16525 // the upper bound of the opposite reference multiplicity should be considered.
16526 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
16527 check(numberOfExistingOppositeReferences < 1);
16528 // The reference is containment, then a new reference cannot be create if:
16529 // 1. Multiple parents
16530 neg find mustContains4(problem,interpretation,_,target);
16531 // 2. Circle in the containment hierarchy
16532 neg find mustTransitiveContains(source,target);
16533} or {
16534 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
16535}
16536/**
16537 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
16538 */
16539private pattern mustInRelationmodel_reference_FunctionalElement(
16540 problem:LogicProblem, interpretation:PartialInterpretation,
16541 source: DefinedElement, target:DefinedElement)
16542{
16543 find interpretation(problem,interpretation);
16544 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16545 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
16546 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16547 BinaryElementRelationLink.param1(link,source);
16548 BinaryElementRelationLink.param2(link,target);
16549}
16550/**
16551 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
16552 */
16553private pattern mayInRelationmodel_reference_FunctionalElement(
16554 problem:LogicProblem, interpretation:PartialInterpretation,
16555 source: DefinedElement, target:DefinedElement)
16556{
16557 find interpretation(problem,interpretation);
16558 // The two endpoint of the link have to exist
16559 find mayExist(problem, interpretation, source);
16560 find mayExist(problem, interpretation, target);
16561 // Type consistency
16562 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
16563 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
16564 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
16565 // the upper bound of the multiplicity should be considered.
16566 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
16567 check(numberOfExistingReferences < 1);
16568} or {
16569 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
16570}
16571/**
16572 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
16573 */
16574private pattern mustInRelationparent_reference_FunctionalElement(
16575 problem:LogicProblem, interpretation:PartialInterpretation,
16576 source: DefinedElement, target:DefinedElement)
16577{
16578 find interpretation(problem,interpretation);
16579 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16580 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
16581 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16582 BinaryElementRelationLink.param1(link,source);
16583 BinaryElementRelationLink.param2(link,target);
16584}
16585/**
16586 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
16587 */
16588private pattern mayInRelationparent_reference_FunctionalElement(
16589 problem:LogicProblem, interpretation:PartialInterpretation,
16590 source: DefinedElement, target:DefinedElement)
16591{
16592 find interpretation(problem,interpretation);
16593 // The two endpoint of the link have to exist
16594 find mayExist(problem, interpretation, source);
16595 find mayExist(problem, interpretation, target);
16596 // Type consistency
16597 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
16598 find mayInstanceOfFunction_class(problem,interpretation,target);
16599 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
16600 // the upper bound of the multiplicity should be considered.
16601 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
16602 check(numberOfExistingReferences < 1);
16603 // The eOpposite of the reference is containment, then a referene cannot be created if
16604 // 1. Multiple parents
16605 neg find mustContains4(problem,interpretation,source,_);
16606 // 2. Circle in the containment hierarchy
16607 neg find mustTransitiveContains(source,target);
16608} or {
16609 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
16610}
16611/**
16612 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
16613 */
16614private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
16615 problem:LogicProblem, interpretation:PartialInterpretation,
16616 source: DefinedElement, target:DefinedElement)
16617{
16618 find interpretation(problem,interpretation);
16619 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16620 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
16621 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16622 BinaryElementRelationLink.param1(link,source);
16623 BinaryElementRelationLink.param2(link,target);
16624}
16625/**
16626 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
16627 */
16628private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
16629 problem:LogicProblem, interpretation:PartialInterpretation,
16630 source: DefinedElement, target:DefinedElement)
16631{
16632 find interpretation(problem,interpretation);
16633 // The two endpoint of the link have to exist
16634 find mayExist(problem, interpretation, source);
16635 find mayExist(problem, interpretation, target);
16636 // Type consistency
16637 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
16638 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
16639 // The reference is containment, then a new reference cannot be create if:
16640 // 1. Multiple parents
16641 neg find mustContains4(problem,interpretation,_,target);
16642 // 2. Circle in the containment hierarchy
16643 neg find mustTransitiveContains(source,target);
16644} or {
16645 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
16646}
16647/**
16648 * Matcher for detecting tuples t where []subElements reference Function(source,target)
16649 */
16650private pattern mustInRelationsubElements_reference_Function(
16651 problem:LogicProblem, interpretation:PartialInterpretation,
16652 source: DefinedElement, target:DefinedElement)
16653{
16654 find interpretation(problem,interpretation);
16655 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16656 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
16657 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16658 BinaryElementRelationLink.param1(link,source);
16659 BinaryElementRelationLink.param2(link,target);
16660}
16661/**
16662 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
16663 */
16664private pattern mayInRelationsubElements_reference_Function(
16665 problem:LogicProblem, interpretation:PartialInterpretation,
16666 source: DefinedElement, target:DefinedElement)
16667{
16668 find interpretation(problem,interpretation);
16669 // The two endpoint of the link have to exist
16670 find mayExist(problem, interpretation, source);
16671 find mayExist(problem, interpretation, target);
16672 // Type consistency
16673 find mayInstanceOfFunction_class(problem,interpretation,source);
16674 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
16675 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
16676 // the upper bound of the opposite reference multiplicity should be considered.
16677 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
16678 check(numberOfExistingOppositeReferences < 1);
16679 // The reference is containment, then a new reference cannot be create if:
16680 // 1. Multiple parents
16681 neg find mustContains4(problem,interpretation,_,target);
16682 // 2. Circle in the containment hierarchy
16683 neg find mustTransitiveContains(source,target);
16684} or {
16685 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
16686}
16687/**
16688 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
16689 */
16690private pattern mustInRelationdata_reference_FAMTerminator(
16691 problem:LogicProblem, interpretation:PartialInterpretation,
16692 source: DefinedElement, target:DefinedElement)
16693{
16694 find interpretation(problem,interpretation);
16695 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16696 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
16697 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16698 BinaryElementRelationLink.param1(link,source);
16699 BinaryElementRelationLink.param2(link,target);
16700}
16701/**
16702 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
16703 */
16704private pattern mayInRelationdata_reference_FAMTerminator(
16705 problem:LogicProblem, interpretation:PartialInterpretation,
16706 source: DefinedElement, target:DefinedElement)
16707{
16708 find interpretation(problem,interpretation);
16709 // The two endpoint of the link have to exist
16710 find mayExist(problem, interpretation, source);
16711 find mayExist(problem, interpretation, target);
16712 // Type consistency
16713 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
16714 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
16715 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
16716 // the upper bound of the multiplicity should be considered.
16717 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
16718 check(numberOfExistingReferences < 1);
16719 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
16720 // the upper bound of the opposite reference multiplicity should be considered.
16721 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
16722 check(numberOfExistingOppositeReferences < 1);
16723 // The eOpposite of the reference is containment, then a referene cannot be created if
16724 // 1. Multiple parents
16725 neg find mustContains4(problem,interpretation,source,_);
16726 // 2. Circle in the containment hierarchy
16727 neg find mustTransitiveContains(source,target);
16728} or {
16729 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
16730}
16731/**
16732 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
16733 */
16734private pattern mustInRelationfrom_reference_InformationLink(
16735 problem:LogicProblem, interpretation:PartialInterpretation,
16736 source: DefinedElement, target:DefinedElement)
16737{
16738 find interpretation(problem,interpretation);
16739 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16740 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
16741 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16742 BinaryElementRelationLink.param1(link,source);
16743 BinaryElementRelationLink.param2(link,target);
16744}
16745/**
16746 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
16747 */
16748private pattern mayInRelationfrom_reference_InformationLink(
16749 problem:LogicProblem, interpretation:PartialInterpretation,
16750 source: DefinedElement, target:DefinedElement)
16751{
16752 find interpretation(problem,interpretation);
16753 // The two endpoint of the link have to exist
16754 find mayExist(problem, interpretation, source);
16755 find mayExist(problem, interpretation, target);
16756 // Type consistency
16757 find mayInstanceOfInformationLink_class(problem,interpretation,source);
16758 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
16759 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
16760 // the upper bound of the multiplicity should be considered.
16761 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
16762 check(numberOfExistingReferences < 1);
16763 // The eOpposite of the reference is containment, then a referene cannot be created if
16764 // 1. Multiple parents
16765 neg find mustContains4(problem,interpretation,source,_);
16766 // 2. Circle in the containment hierarchy
16767 neg find mustTransitiveContains(source,target);
16768} or {
16769 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
16770}
16771/**
16772 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
16773 */
16774private pattern mustInRelationto_reference_InformationLink(
16775 problem:LogicProblem, interpretation:PartialInterpretation,
16776 source: DefinedElement, target:DefinedElement)
16777{
16778 find interpretation(problem,interpretation);
16779 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16780 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
16781 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16782 BinaryElementRelationLink.param1(link,source);
16783 BinaryElementRelationLink.param2(link,target);
16784}
16785/**
16786 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
16787 */
16788private pattern mayInRelationto_reference_InformationLink(
16789 problem:LogicProblem, interpretation:PartialInterpretation,
16790 source: DefinedElement, target:DefinedElement)
16791{
16792 find interpretation(problem,interpretation);
16793 // The two endpoint of the link have to exist
16794 find mayExist(problem, interpretation, source);
16795 find mayExist(problem, interpretation, target);
16796 // Type consistency
16797 find mayInstanceOfInformationLink_class(problem,interpretation,source);
16798 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
16799 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
16800 // the upper bound of the multiplicity should be considered.
16801 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
16802 check(numberOfExistingReferences < 1);
16803} or {
16804 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
16805}
16806/**
16807 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
16808 */
16809private pattern mustInRelationdata_reference_FunctionalInterface(
16810 problem:LogicProblem, interpretation:PartialInterpretation,
16811 source: DefinedElement, target:DefinedElement)
16812{
16813 find interpretation(problem,interpretation);
16814 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16815 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
16816 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16817 BinaryElementRelationLink.param1(link,source);
16818 BinaryElementRelationLink.param2(link,target);
16819}
16820/**
16821 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
16822 */
16823private pattern mayInRelationdata_reference_FunctionalInterface(
16824 problem:LogicProblem, interpretation:PartialInterpretation,
16825 source: DefinedElement, target:DefinedElement)
16826{
16827 find interpretation(problem,interpretation);
16828 // The two endpoint of the link have to exist
16829 find mayExist(problem, interpretation, source);
16830 find mayExist(problem, interpretation, target);
16831 // Type consistency
16832 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
16833 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
16834 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
16835 // the upper bound of the opposite reference multiplicity should be considered.
16836 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
16837 check(numberOfExistingOppositeReferences < 1);
16838 // The reference is containment, then a new reference cannot be create if:
16839 // 1. Multiple parents
16840 neg find mustContains4(problem,interpretation,_,target);
16841 // 2. Circle in the containment hierarchy
16842 neg find mustTransitiveContains(source,target);
16843} or {
16844 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
16845}
16846/**
16847 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
16848 */
16849private pattern mustInRelationelement_reference_FunctionalInterface(
16850 problem:LogicProblem, interpretation:PartialInterpretation,
16851 source: DefinedElement, target:DefinedElement)
16852{
16853 find interpretation(problem,interpretation);
16854 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16855 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
16856 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16857 BinaryElementRelationLink.param1(link,source);
16858 BinaryElementRelationLink.param2(link,target);
16859}
16860/**
16861 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
16862 */
16863private pattern mayInRelationelement_reference_FunctionalInterface(
16864 problem:LogicProblem, interpretation:PartialInterpretation,
16865 source: DefinedElement, target:DefinedElement)
16866{
16867 find interpretation(problem,interpretation);
16868 // The two endpoint of the link have to exist
16869 find mayExist(problem, interpretation, source);
16870 find mayExist(problem, interpretation, target);
16871 // Type consistency
16872 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
16873 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
16874 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
16875 // the upper bound of the multiplicity should be considered.
16876 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
16877 check(numberOfExistingReferences < 1);
16878 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
16879 // the upper bound of the opposite reference multiplicity should be considered.
16880 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
16881 check(numberOfExistingOppositeReferences < 1);
16882 // The eOpposite of the reference is containment, then a referene cannot be created if
16883 // 1. Multiple parents
16884 neg find mustContains4(problem,interpretation,source,_);
16885 // 2. Circle in the containment hierarchy
16886 neg find mustTransitiveContains(source,target);
16887} or {
16888 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
16889}
16890/**
16891 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
16892 */
16893private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
16894 problem:LogicProblem, interpretation:PartialInterpretation,
16895 source: DefinedElement, target:DefinedElement)
16896{
16897 find interpretation(problem,interpretation);
16898 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16899 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
16900 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16901 BinaryElementRelationLink.param1(link,source);
16902 BinaryElementRelationLink.param2(link,target);
16903}
16904/**
16905 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
16906 */
16907private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
16908 problem:LogicProblem, interpretation:PartialInterpretation,
16909 source: DefinedElement, target:DefinedElement)
16910{
16911 find interpretation(problem,interpretation);
16912 // The two endpoint of the link have to exist
16913 find mayExist(problem, interpretation, source);
16914 find mayExist(problem, interpretation, target);
16915 // Type consistency
16916 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
16917 find mayInstanceOfInformationLink_class(problem,interpretation,target);
16918 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
16919 // the upper bound of the opposite reference multiplicity should be considered.
16920 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
16921 check(numberOfExistingOppositeReferences < 1);
16922} or {
16923 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
16924}
16925/**
16926 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
16927 */
16928private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
16929 problem:LogicProblem, interpretation:PartialInterpretation,
16930 source: DefinedElement, target:DefinedElement)
16931{
16932 find interpretation(problem,interpretation);
16933 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16934 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
16935 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16936 BinaryElementRelationLink.param1(link,source);
16937 BinaryElementRelationLink.param2(link,target);
16938}
16939/**
16940 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
16941 */
16942private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
16943 problem:LogicProblem, interpretation:PartialInterpretation,
16944 source: DefinedElement, target:DefinedElement)
16945{
16946 find interpretation(problem,interpretation);
16947 // The two endpoint of the link have to exist
16948 find mayExist(problem, interpretation, source);
16949 find mayExist(problem, interpretation, target);
16950 // Type consistency
16951 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
16952 find mayInstanceOfInformationLink_class(problem,interpretation,target);
16953 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
16954 // the upper bound of the opposite reference multiplicity should be considered.
16955 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
16956 check(numberOfExistingOppositeReferences < 1);
16957 // The reference is containment, then a new reference cannot be create if:
16958 // 1. Multiple parents
16959 neg find mustContains4(problem,interpretation,_,target);
16960 // 2. Circle in the containment hierarchy
16961 neg find mustTransitiveContains(source,target);
16962} or {
16963 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
16964}
16965/**
16966 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
16967 */
16968private pattern mustInRelationterminator_reference_FunctionalData(
16969 problem:LogicProblem, interpretation:PartialInterpretation,
16970 source: DefinedElement, target:DefinedElement)
16971{
16972 find interpretation(problem,interpretation);
16973 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
16974 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
16975 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
16976 BinaryElementRelationLink.param1(link,source);
16977 BinaryElementRelationLink.param2(link,target);
16978}
16979/**
16980 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
16981 */
16982private pattern mayInRelationterminator_reference_FunctionalData(
16983 problem:LogicProblem, interpretation:PartialInterpretation,
16984 source: DefinedElement, target:DefinedElement)
16985{
16986 find interpretation(problem,interpretation);
16987 // The two endpoint of the link have to exist
16988 find mayExist(problem, interpretation, source);
16989 find mayExist(problem, interpretation, target);
16990 // Type consistency
16991 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
16992 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
16993 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
16994 // the upper bound of the multiplicity should be considered.
16995 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
16996 check(numberOfExistingReferences < 1);
16997 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
16998 // the upper bound of the opposite reference multiplicity should be considered.
16999 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
17000 check(numberOfExistingOppositeReferences < 1);
17001 // The reference is containment, then a new reference cannot be create if:
17002 // 1. Multiple parents
17003 neg find mustContains4(problem,interpretation,_,target);
17004 // 2. Circle in the containment hierarchy
17005 neg find mustTransitiveContains(source,target);
17006} or {
17007 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
17008}
17009/**
17010 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
17011 */
17012private pattern mustInRelationinterface_reference_FunctionalData(
17013 problem:LogicProblem, interpretation:PartialInterpretation,
17014 source: DefinedElement, target:DefinedElement)
17015{
17016 find interpretation(problem,interpretation);
17017 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17018 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
17019 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
17020 BinaryElementRelationLink.param1(link,source);
17021 BinaryElementRelationLink.param2(link,target);
17022}
17023/**
17024 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
17025 */
17026private pattern mayInRelationinterface_reference_FunctionalData(
17027 problem:LogicProblem, interpretation:PartialInterpretation,
17028 source: DefinedElement, target:DefinedElement)
17029{
17030 find interpretation(problem,interpretation);
17031 // The two endpoint of the link have to exist
17032 find mayExist(problem, interpretation, source);
17033 find mayExist(problem, interpretation, target);
17034 // Type consistency
17035 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
17036 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
17037 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
17038 // the upper bound of the multiplicity should be considered.
17039 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
17040 check(numberOfExistingReferences < 1);
17041 // The eOpposite of the reference is containment, then a referene cannot be created if
17042 // 1. Multiple parents
17043 neg find mustContains4(problem,interpretation,source,_);
17044 // 2. Circle in the containment hierarchy
17045 neg find mustTransitiveContains(source,target);
17046} or {
17047 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
17048}
17049/**
17050 * Matcher for detecting tuples t where []type attribute Function(source,target)
17051 */
17052private pattern mustInRelationtype_attribute_Function(
17053 problem:LogicProblem, interpretation:PartialInterpretation,
17054 source: DefinedElement, target:DefinedElement)
17055{
17056 find interpretation(problem,interpretation);
17057 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17058 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
17059 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
17060 BinaryElementRelationLink.param1(link,source);
17061 BinaryElementRelationLink.param2(link,target);
17062}
17063/**
17064 * Matcher for detecting tuples t where <>type attribute Function(source,target)
17065 */
17066private pattern mayInRelationtype_attribute_Function(
17067 problem:LogicProblem, interpretation:PartialInterpretation,
17068 source: DefinedElement, target:DefinedElement)
17069{
17070 find interpretation(problem,interpretation);
17071 // The two endpoint of the link have to exist
17072 find mayExist(problem, interpretation, source);
17073 find mayExist(problem, interpretation, target);
17074 // Type consistency
17075 find mayInstanceOfFunction_class(problem,interpretation,source);
17076 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
17077 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
17078 // the upper bound of the multiplicity should be considered.
17079 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
17080 check(numberOfExistingReferences < 1);
17081} or {
17082 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
17083}
17084
17085//////////
17086// 1.3 Relation Definition Indexers
17087//////////
17088
17089//////////
17090// 1.4 Containment Indexer
17091//////////
17092private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
17093 find mustContains4(_,_,source,target);
17094}
17095
17096private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
17097 source: DefinedElement, target: DefinedElement)
17098 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
17099
17100 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
17101
17102 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
17103
17104 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
17105
17106 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
17107
17108 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
17109
17110private pattern mustTransitiveContains(source,target) {
17111 find mustContains2+(source,target);
17112}
17113
17114//////////
17115// 2. Invalidation Indexers
17116//////////
17117// 2.1 Invalidated by WF Queries
17118//////////
17119
17120//////////
17121// 3. Unfinishedness Indexers
17122//////////
17123// 3.1 Unfinishedness Measured by Multiplicity
17124//////////
17125pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
17126 find interpretation(problem,interpretation);
17127 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17128 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
17129 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
17130 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
17131 check(numberOfExistingReferences < 1);
17132 missingMultiplicity == eval(1-numberOfExistingReferences);
17133}
17134pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
17135 find interpretation(problem,interpretation);
17136 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17137 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
17138 find mustInstanceOfInformationLink_class(problem,interpretation,object);
17139 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
17140 check(numberOfExistingReferences < 1);
17141 missingMultiplicity == eval(1-numberOfExistingReferences);
17142}
17143pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
17144 find interpretation(problem,interpretation);
17145 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17146 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
17147 find mustInstanceOfFunction_class(problem,interpretation,object);
17148 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
17149 check(numberOfExistingReferences < 1);
17150 missingMultiplicity == eval(1-numberOfExistingReferences);
17151}
17152
17153//////////
17154// 3.2 Unfinishedness Measured by WF Queries
17155//////////
17156
17157//////////
17158// 4. Refinement Indexers
17159//////////
17160// 4.1 Object constructors
17161//////////
17162private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
17163{
17164 find interpretation(problem,interpretation);
17165 find mustInstanceOfFunction_class(problem,interpretation,root);
17166 find mustExist(problem, interpretation, root);
17167}or{
17168 find interpretation(problem,interpretation);
17169 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
17170 find mustExist(problem, interpretation, root);
17171}or{
17172 find interpretation(problem,interpretation);
17173 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
17174 find mustExist(problem, interpretation, root);
17175}or{
17176 find interpretation(problem,interpretation);
17177 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
17178 find mustExist(problem, interpretation, root);
17179}or{
17180 find interpretation(problem,interpretation);
17181 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
17182 find mustExist(problem, interpretation, root);
17183}or{
17184 find interpretation(problem,interpretation);
17185 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
17186 find mustExist(problem, interpretation, root);
17187}or{
17188 find interpretation(problem,interpretation);
17189 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
17190 find mustExist(problem, interpretation, root);
17191}or{
17192 find interpretation(problem,interpretation);
17193 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
17194 find mustExist(problem, interpretation, root);
17195}or{
17196 find interpretation(problem,interpretation);
17197 find mustInstanceOfInformationLink_class(problem,interpretation,root);
17198 find mustExist(problem, interpretation, root);
17199}or{
17200 find interpretation(problem,interpretation);
17201 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
17202 find mustExist(problem, interpretation, root);
17203}or{
17204 find interpretation(problem,interpretation);
17205 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
17206 find mustExist(problem, interpretation, root);
17207}
17208pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
17209 problem:LogicProblem, interpretation:PartialInterpretation,
17210 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
17211 container:DefinedElement)
17212{
17213 find interpretation(problem,interpretation);
17214 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17215 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
17216 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
17217 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
17218 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
17219 find mayInstanceOfFunction_class(problem,interpretation,newObject);
17220 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
17221 find mustExist(problem, interpretation, container);
17222 neg find mustExist(problem, interpretation, newObject);
17223}
17224pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
17225 problem:LogicProblem, interpretation:PartialInterpretation,
17226 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
17227 container:DefinedElement)
17228{
17229 find interpretation(problem,interpretation);
17230 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17231 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
17232 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
17233 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
17234 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
17235 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
17236 find mustInstanceOfFunction_class(problem,interpretation,container);
17237 find mayInstanceOfFunction_class(problem,interpretation,newObject);
17238 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
17239 find mustExist(problem, interpretation, container);
17240 neg find mustExist(problem, interpretation, newObject);
17241}
17242pattern createObject_Function_class(
17243 problem:LogicProblem, interpretation:PartialInterpretation,
17244 typeInterpretation:PartialComplexTypeInterpretation)
17245{
17246 find interpretation(problem,interpretation);
17247 neg find hasElementInContainment(problem,interpretation);
17248 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17249 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
17250 find mayInstanceOfFunction_class(problem,interpretation,newObject);
17251 find mayExist(problem, interpretation, newObject);
17252 neg find mustExist(problem, interpretation, newObject);
17253}
17254pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
17255 problem:LogicProblem, interpretation:PartialInterpretation,
17256 typeInterpretation:PartialComplexTypeInterpretation)
17257{
17258 find interpretation(problem,interpretation);
17259 neg find hasElementInContainment(problem,interpretation);
17260 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17261 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
17262 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
17263 find mayExist(problem, interpretation, newObject);
17264 neg find mustExist(problem, interpretation, newObject);
17265}
17266pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
17267 problem:LogicProblem, interpretation:PartialInterpretation,
17268 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
17269 container:DefinedElement)
17270{
17271 find interpretation(problem,interpretation);
17272 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17273 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
17274 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
17275 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
17276 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
17277 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
17278 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
17279 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
17280 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
17281 find mustExist(problem, interpretation, container);
17282 neg find mustExist(problem, interpretation, newObject);
17283}
17284pattern createObject_FunctionalOutput_class(
17285 problem:LogicProblem, interpretation:PartialInterpretation,
17286 typeInterpretation:PartialComplexTypeInterpretation)
17287{
17288 find interpretation(problem,interpretation);
17289 neg find hasElementInContainment(problem,interpretation);
17290 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17291 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
17292 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
17293 find mayExist(problem, interpretation, newObject);
17294 neg find mustExist(problem, interpretation, newObject);
17295}
17296pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
17297 problem:LogicProblem, interpretation:PartialInterpretation,
17298 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
17299 container:DefinedElement)
17300{
17301 find interpretation(problem,interpretation);
17302 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17303 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
17304 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
17305 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
17306 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
17307 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
17308 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
17309 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
17310 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
17311 find mustExist(problem, interpretation, container);
17312 neg find mustExist(problem, interpretation, newObject);
17313}
17314pattern createObject_FAMTerminator_class(
17315 problem:LogicProblem, interpretation:PartialInterpretation,
17316 typeInterpretation:PartialComplexTypeInterpretation)
17317{
17318 find interpretation(problem,interpretation);
17319 neg find hasElementInContainment(problem,interpretation);
17320 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17321 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
17322 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
17323 find mayExist(problem, interpretation, newObject);
17324 neg find mustExist(problem, interpretation, newObject);
17325}
17326pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
17327 problem:LogicProblem, interpretation:PartialInterpretation,
17328 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
17329 container:DefinedElement)
17330{
17331 find interpretation(problem,interpretation);
17332 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17333 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
17334 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
17335 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
17336 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
17337 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
17338 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
17339 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
17340 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
17341 find mustExist(problem, interpretation, container);
17342 neg find mustExist(problem, interpretation, newObject);
17343}
17344pattern createObject_FunctionalInput_class(
17345 problem:LogicProblem, interpretation:PartialInterpretation,
17346 typeInterpretation:PartialComplexTypeInterpretation)
17347{
17348 find interpretation(problem,interpretation);
17349 neg find hasElementInContainment(problem,interpretation);
17350 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17351 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
17352 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
17353 find mayExist(problem, interpretation, newObject);
17354 neg find mustExist(problem, interpretation, newObject);
17355}
17356pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
17357 problem:LogicProblem, interpretation:PartialInterpretation,
17358 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
17359 container:DefinedElement)
17360{
17361 find interpretation(problem,interpretation);
17362 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17363 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
17364 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
17365 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
17366 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
17367 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
17368 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
17369 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
17370 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
17371 find mustExist(problem, interpretation, container);
17372 neg find mustExist(problem, interpretation, newObject);
17373}
17374pattern createObject_InformationLink_class(
17375 problem:LogicProblem, interpretation:PartialInterpretation,
17376 typeInterpretation:PartialComplexTypeInterpretation)
17377{
17378 find interpretation(problem,interpretation);
17379 neg find hasElementInContainment(problem,interpretation);
17380 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17381 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
17382 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
17383 find mayExist(problem, interpretation, newObject);
17384 neg find mustExist(problem, interpretation, newObject);
17385}
17386pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
17387 problem:LogicProblem, interpretation:PartialInterpretation,
17388 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
17389 container:DefinedElement)
17390{
17391 find interpretation(problem,interpretation);
17392 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17393 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
17394 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
17395 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
17396 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
17397 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
17398 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
17399 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
17400 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
17401 find mustExist(problem, interpretation, container);
17402 neg find mustExist(problem, interpretation, newObject);
17403}
17404pattern createObject_FunctionalInterface_class(
17405 problem:LogicProblem, interpretation:PartialInterpretation,
17406 typeInterpretation:PartialComplexTypeInterpretation)
17407{
17408 find interpretation(problem,interpretation);
17409 neg find hasElementInContainment(problem,interpretation);
17410 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17411 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
17412 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
17413 find mayExist(problem, interpretation, newObject);
17414 neg find mustExist(problem, interpretation, newObject);
17415}
17416
17417//////////
17418// 4.2 Type refinement
17419//////////
17420pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
17421 find interpretation(problem,interpretation);
17422 PartialInterpretation.newElements(interpretation,element);
17423 find mayInstanceOfFunction_class(problem,interpretation,element);
17424 neg find mustInstanceOfFunction_class(problem,interpretation,element);
17425 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17426 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17427 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17428 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17429 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17430}
17431pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
17432 find interpretation(problem,interpretation);
17433 PartialInterpretation.newElements(interpretation,element);
17434 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
17435 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
17436 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17437 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17438 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17439 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17440 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17441}
17442pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
17443 find interpretation(problem,interpretation);
17444 PartialInterpretation.newElements(interpretation,element);
17445 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
17446 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
17447 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17448 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17449 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
17450 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17451 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17452 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17453}
17454pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
17455 find interpretation(problem,interpretation);
17456 PartialInterpretation.newElements(interpretation,element);
17457 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
17458 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17459 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17460 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17461 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17462 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17463 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17464}
17465pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
17466 find interpretation(problem,interpretation);
17467 PartialInterpretation.newElements(interpretation,element);
17468 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
17469 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
17470 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17471 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17472 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
17473 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17474 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17475 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17476}
17477pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
17478 find interpretation(problem,interpretation);
17479 PartialInterpretation.newElements(interpretation,element);
17480 find mayInstanceOfInformationLink_class(problem,interpretation,element);
17481 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17482 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17483 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17484 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17485 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17486 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17487}
17488pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
17489 find interpretation(problem,interpretation);
17490 PartialInterpretation.newElements(interpretation,element);
17491 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
17492 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17493 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17494 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17495 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17496 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17497 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17498}
17499
17500//////////
17501// 4.3 Relation refinement
17502//////////
17503pattern refineRelation_model_reference_FunctionalElement(
17504 problem:LogicProblem, interpretation:PartialInterpretation,
17505 relationIterpretation:PartialRelationInterpretation,
17506 from: DefinedElement, to: DefinedElement)
17507{
17508 find interpretation(problem,interpretation);
17509 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17510 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
17511 find mustExist(problem, interpretation, from);
17512 find mustExist(problem, interpretation, to);
17513 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
17514 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
17515 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
17516 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
17517}
17518pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
17519 problem:LogicProblem, interpretation:PartialInterpretation,
17520 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
17521 from: DefinedElement, to: DefinedElement)
17522{
17523 find interpretation(problem,interpretation);
17524 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17525 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
17526 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
17527 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
17528 find mustExist(problem, interpretation, from);
17529 find mustExist(problem, interpretation, to);
17530 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
17531 find mustInstanceOfInformationLink_class(problem,interpretation,to);
17532 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
17533 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
17534}
17535pattern refineRelation_type_attribute_Function(
17536 problem:LogicProblem, interpretation:PartialInterpretation,
17537 relationIterpretation:PartialRelationInterpretation,
17538 from: DefinedElement, to: DefinedElement)
17539{
17540 find interpretation(problem,interpretation);
17541 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
17542 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
17543 find mustExist(problem, interpretation, from);
17544 find mustExist(problem, interpretation, to);
17545 find mustInstanceOfFunction_class(problem,interpretation,from);
17546 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
17547 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
17548 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
17549}
17550import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
17551import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
17552import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
17553
17554//////////
17555// 0. Util
17556//////////
17557private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
17558 PartialInterpretation.problem(interpretation,problem);
17559}
17560
17561/////////////////////////
17562// 0.1 Existence
17563/////////////////////////
17564private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17565 find interpretation(problem,interpretation);
17566 LogicProblem.elements(problem,element);
17567} or {
17568 find interpretation(problem,interpretation);
17569 PartialInterpretation.newElements(interpretation,element);
17570}
17571
17572private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17573 find mustExist(problem,interpretation,element);
17574} or {
17575 find interpretation(problem,interpretation);
17576 neg find elementCloseWorld(element);
17577 PartialInterpretation.openWorldElements(interpretation,element);
17578}
17579
17580private pattern elementCloseWorld(element:DefinedElement) {
17581 PartialInterpretation.openWorldElements(i,element);
17582 PartialInterpretation.maxNewElements(i,0);
17583} or {
17584 Scope.targetTypeInterpretation(scope,interpretation);
17585 PartialTypeInterpratation.elements(interpretation,element);
17586 Scope.maxNewElements(scope,0);
17587}
17588
17589////////////////////////
17590// 0.2 Equivalence
17591////////////////////////
17592pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
17593 find mayExist(problem,interpretation,a);
17594 find mayExist(problem,interpretation,b);
17595 a == b;
17596}
17597
17598////////////////////////
17599// 0.3 Required Patterns by TypeIndexer
17600////////////////////////
17601private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
17602 find interpretation(problem,interpretation);
17603 LogicProblem.types(problem,type);
17604 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
17605 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17606}
17607
17608private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
17609 find interpretation(problem,interpretation);
17610 LogicProblem.types(problem,type);
17611 TypeDefinition.elements(type,element);
17612} or {
17613 find interpretation(problem,interpretation);
17614 find typeInterpretation(problem,interpretation,type,typeInterpretation);
17615 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
17616}
17617
17618private pattern isPrimitive(element: PrimitiveElement) {
17619 PrimitiveElement(element);
17620}
17621
17622//////////
17623// 1. Problem-Specific Base Indexers
17624//////////
17625// 1.1 Type Indexers
17626//////////
17627// 1.1.1 primitive Type Indexers
17628//////////
17629
17630//////////
17631// 1.1.2 domain-specific Type Indexers
17632//////////
17633/**
17634 * An element must be an instance of type "FunctionalElement class".
17635 */
17636private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17637 Type.name(type,"FunctionalElement class");
17638 find directInstanceOf(problem,interpretation,element,type);
17639}
17640private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17641 find interpretation(problem,interpretation);
17642 PartialInterpretation.scopes(interpretation,scope);
17643 Scope.targetTypeInterpretation(scope,typeInterpretation);
17644 Scope.maxNewElements(scope,0);
17645 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17646 Type.name(type,"FunctionalElement class");
17647}
17648
17649/**
17650 * An element may be an instance of type "FunctionalElement class".
17651 */
17652private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17653{
17654 find interpretation(problem,interpretation);
17655 PartialInterpretation.newElements(interpretation,element);
17656 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17657 neg find mustInstanceOfFunction_class(problem,interpretation,element);
17658 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17659 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17660 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17661 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17662 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
17663 neg find isPrimitive(element);
17664} or {
17665 find interpretation(problem,interpretation);
17666 PartialInterpretation.openWorldElements(interpretation,element);
17667 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17668 neg find mustInstanceOfFunction_class(problem,interpretation,element);
17669 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17670 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17671 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17672 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17673 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
17674 neg find isPrimitive(element);
17675} or
17676{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
17677/**
17678 * An element must be an instance of type "FunctionalArchitectureModel class".
17679 */
17680private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17681 Type.name(type,"FunctionalArchitectureModel class");
17682 find directInstanceOf(problem,interpretation,element,type);
17683}
17684private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17685 find interpretation(problem,interpretation);
17686 PartialInterpretation.scopes(interpretation,scope);
17687 Scope.targetTypeInterpretation(scope,typeInterpretation);
17688 Scope.maxNewElements(scope,0);
17689 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17690 Type.name(type,"FunctionalArchitectureModel class");
17691}
17692
17693/**
17694 * An element may be an instance of type "FunctionalArchitectureModel class".
17695 */
17696private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17697{
17698 find interpretation(problem,interpretation);
17699 PartialInterpretation.newElements(interpretation,element);
17700 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
17701 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17702 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17703 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17704 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17705 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17706 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
17707 neg find isPrimitive(element);
17708} or {
17709 find interpretation(problem,interpretation);
17710 PartialInterpretation.openWorldElements(interpretation,element);
17711 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
17712 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17713 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17714 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17715 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17716 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17717 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
17718 neg find isPrimitive(element);
17719} or
17720{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
17721/**
17722 * An element must be an instance of type "Function class".
17723 */
17724private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17725 Type.name(type,"Function class");
17726 find directInstanceOf(problem,interpretation,element,type);
17727}
17728private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17729 find interpretation(problem,interpretation);
17730 PartialInterpretation.scopes(interpretation,scope);
17731 Scope.targetTypeInterpretation(scope,typeInterpretation);
17732 Scope.maxNewElements(scope,0);
17733 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17734 Type.name(type,"Function class");
17735}
17736
17737/**
17738 * An element may be an instance of type "Function class".
17739 */
17740private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17741{
17742 find interpretation(problem,interpretation);
17743 PartialInterpretation.newElements(interpretation,element);
17744 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17745 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17746 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17747 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17748 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17749 neg find scopeDisallowsNewFunction_class(problem, interpretation);
17750 neg find isPrimitive(element);
17751} or {
17752 find interpretation(problem,interpretation);
17753 PartialInterpretation.openWorldElements(interpretation,element);
17754 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17755 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17756 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17757 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17758 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17759 neg find scopeDisallowsNewFunction_class(problem, interpretation);
17760 neg find isPrimitive(element);
17761} or
17762{ find mustInstanceOfFunction_class(problem,interpretation,element); }
17763/**
17764 * An element must be an instance of type "FAMTerminator class".
17765 */
17766private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17767 Type.name(type,"FAMTerminator class");
17768 find directInstanceOf(problem,interpretation,element,type);
17769}
17770private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17771 find interpretation(problem,interpretation);
17772 PartialInterpretation.scopes(interpretation,scope);
17773 Scope.targetTypeInterpretation(scope,typeInterpretation);
17774 Scope.maxNewElements(scope,0);
17775 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17776 Type.name(type,"FAMTerminator class");
17777}
17778
17779/**
17780 * An element may be an instance of type "FAMTerminator class".
17781 */
17782private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17783{
17784 find interpretation(problem,interpretation);
17785 PartialInterpretation.newElements(interpretation,element);
17786 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17787 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17788 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17789 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17790 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17791 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
17792 neg find isPrimitive(element);
17793} or {
17794 find interpretation(problem,interpretation);
17795 PartialInterpretation.openWorldElements(interpretation,element);
17796 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17797 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17798 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17799 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17800 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17801 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
17802 neg find isPrimitive(element);
17803} or
17804{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
17805/**
17806 * An element must be an instance of type "InformationLink class".
17807 */
17808private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17809 Type.name(type,"InformationLink class");
17810 find directInstanceOf(problem,interpretation,element,type);
17811}
17812private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17813 find interpretation(problem,interpretation);
17814 PartialInterpretation.scopes(interpretation,scope);
17815 Scope.targetTypeInterpretation(scope,typeInterpretation);
17816 Scope.maxNewElements(scope,0);
17817 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17818 Type.name(type,"InformationLink class");
17819}
17820
17821/**
17822 * An element may be an instance of type "InformationLink class".
17823 */
17824private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17825{
17826 find interpretation(problem,interpretation);
17827 PartialInterpretation.newElements(interpretation,element);
17828 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17829 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17830 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17831 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17832 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17833 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
17834 neg find isPrimitive(element);
17835} or {
17836 find interpretation(problem,interpretation);
17837 PartialInterpretation.openWorldElements(interpretation,element);
17838 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17839 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17840 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17841 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17842 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17843 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
17844 neg find isPrimitive(element);
17845} or
17846{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
17847/**
17848 * An element must be an instance of type "FunctionalInterface class".
17849 */
17850private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17851 Type.name(type,"FunctionalInterface class");
17852 find directInstanceOf(problem,interpretation,element,type);
17853}
17854private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17855 find interpretation(problem,interpretation);
17856 PartialInterpretation.scopes(interpretation,scope);
17857 Scope.targetTypeInterpretation(scope,typeInterpretation);
17858 Scope.maxNewElements(scope,0);
17859 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17860 Type.name(type,"FunctionalInterface class");
17861}
17862
17863/**
17864 * An element may be an instance of type "FunctionalInterface class".
17865 */
17866private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17867{
17868 find interpretation(problem,interpretation);
17869 PartialInterpretation.newElements(interpretation,element);
17870 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17871 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17872 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17873 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17874 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17875 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
17876 neg find isPrimitive(element);
17877} or {
17878 find interpretation(problem,interpretation);
17879 PartialInterpretation.openWorldElements(interpretation,element);
17880 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
17881 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17882 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17883 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17884 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17885 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
17886 neg find isPrimitive(element);
17887} or
17888{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
17889/**
17890 * An element must be an instance of type "FunctionalInput class".
17891 */
17892private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17893 Type.name(type,"FunctionalInput class");
17894 find directInstanceOf(problem,interpretation,element,type);
17895}
17896private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17897 find interpretation(problem,interpretation);
17898 PartialInterpretation.scopes(interpretation,scope);
17899 Scope.targetTypeInterpretation(scope,typeInterpretation);
17900 Scope.maxNewElements(scope,0);
17901 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17902 Type.name(type,"FunctionalInput class");
17903}
17904
17905/**
17906 * An element may be an instance of type "FunctionalInput class".
17907 */
17908private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17909{
17910 find interpretation(problem,interpretation);
17911 PartialInterpretation.newElements(interpretation,element);
17912 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
17913 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17914 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17915 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17916 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17917 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17918 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
17919 neg find isPrimitive(element);
17920} or {
17921 find interpretation(problem,interpretation);
17922 PartialInterpretation.openWorldElements(interpretation,element);
17923 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
17924 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17925 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17926 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17927 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17928 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17929 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
17930 neg find isPrimitive(element);
17931} or
17932{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
17933/**
17934 * An element must be an instance of type "FunctionalOutput class".
17935 */
17936private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17937 Type.name(type,"FunctionalOutput class");
17938 find directInstanceOf(problem,interpretation,element,type);
17939}
17940private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17941 find interpretation(problem,interpretation);
17942 PartialInterpretation.scopes(interpretation,scope);
17943 Scope.targetTypeInterpretation(scope,typeInterpretation);
17944 Scope.maxNewElements(scope,0);
17945 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17946 Type.name(type,"FunctionalOutput class");
17947}
17948
17949/**
17950 * An element may be an instance of type "FunctionalOutput class".
17951 */
17952private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17953{
17954 find interpretation(problem,interpretation);
17955 PartialInterpretation.newElements(interpretation,element);
17956 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17957 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
17958 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17959 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17960 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17961 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17962 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
17963 neg find isPrimitive(element);
17964} or {
17965 find interpretation(problem,interpretation);
17966 PartialInterpretation.openWorldElements(interpretation,element);
17967 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
17968 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
17969 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
17970 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
17971 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
17972 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
17973 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
17974 neg find isPrimitive(element);
17975} or
17976{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
17977/**
17978 * An element must be an instance of type "FunctionalData class".
17979 */
17980private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17981 Type.name(type,"FunctionalData class");
17982 find directInstanceOf(problem,interpretation,element,type);
17983}
17984private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
17985 find interpretation(problem,interpretation);
17986 PartialInterpretation.scopes(interpretation,scope);
17987 Scope.targetTypeInterpretation(scope,typeInterpretation);
17988 Scope.maxNewElements(scope,0);
17989 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
17990 Type.name(type,"FunctionalData class");
17991}
17992
17993/**
17994 * An element may be an instance of type "FunctionalData class".
17995 */
17996private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
17997{
17998 find interpretation(problem,interpretation);
17999 PartialInterpretation.newElements(interpretation,element);
18000 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
18001 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
18002 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
18003 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
18004 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
18005 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
18006 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
18007 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
18008 neg find isPrimitive(element);
18009} or {
18010 find interpretation(problem,interpretation);
18011 PartialInterpretation.openWorldElements(interpretation,element);
18012 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
18013 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
18014 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
18015 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
18016 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
18017 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
18018 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
18019 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
18020 neg find isPrimitive(element);
18021} or
18022{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
18023/**
18024 * An element must be an instance of type "FunctionType enum".
18025 */
18026private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
18027 Type.name(type,"FunctionType enum");
18028 find directInstanceOf(problem,interpretation,element,type);
18029}
18030private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
18031 find interpretation(problem,interpretation);
18032 PartialInterpretation.scopes(interpretation,scope);
18033 Scope.targetTypeInterpretation(scope,typeInterpretation);
18034 Scope.maxNewElements(scope,0);
18035 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
18036 Type.name(type,"FunctionType enum");
18037}
18038
18039/**
18040 * An element may be an instance of type "FunctionType enum".
18041 */
18042private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
18043{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
18044/**
18045 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
18046 */
18047private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
18048 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
18049 find directInstanceOf(problem,interpretation,element,type);
18050}
18051private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
18052 find interpretation(problem,interpretation);
18053 PartialInterpretation.scopes(interpretation,scope);
18054 Scope.targetTypeInterpretation(scope,typeInterpretation);
18055 Scope.maxNewElements(scope,0);
18056 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
18057 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
18058}
18059
18060/**
18061 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
18062 */
18063private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
18064{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
18065/**
18066 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
18067 */
18068private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
18069 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
18070 find directInstanceOf(problem,interpretation,element,type);
18071}
18072private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
18073 find interpretation(problem,interpretation);
18074 PartialInterpretation.scopes(interpretation,scope);
18075 Scope.targetTypeInterpretation(scope,typeInterpretation);
18076 Scope.maxNewElements(scope,0);
18077 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
18078 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
18079}
18080
18081/**
18082 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
18083 */
18084private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
18085{
18086 find interpretation(problem,interpretation);
18087 PartialInterpretation.newElements(interpretation,element);
18088 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
18089 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
18090 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
18091 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
18092 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
18093 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
18094 neg find isPrimitive(element);
18095} or {
18096 find interpretation(problem,interpretation);
18097 PartialInterpretation.openWorldElements(interpretation,element);
18098 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
18099 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
18100 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
18101 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
18102 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
18103 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
18104 neg find isPrimitive(element);
18105} or
18106{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
18107
18108//////////
18109// 1.2 Relation Declaration Indexers
18110//////////
18111/**
18112 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
18113 */
18114private pattern mustInRelationinterface_reference_FunctionalElement(
18115 problem:LogicProblem, interpretation:PartialInterpretation,
18116 source: DefinedElement, target:DefinedElement)
18117{
18118 find interpretation(problem,interpretation);
18119 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18120 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
18121 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18122 BinaryElementRelationLink.param1(link,source);
18123 BinaryElementRelationLink.param2(link,target);
18124}
18125/**
18126 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
18127 */
18128private pattern mayInRelationinterface_reference_FunctionalElement(
18129 problem:LogicProblem, interpretation:PartialInterpretation,
18130 source: DefinedElement, target:DefinedElement)
18131{
18132 find interpretation(problem,interpretation);
18133 // The two endpoint of the link have to exist
18134 find mayExist(problem, interpretation, source);
18135 find mayExist(problem, interpretation, target);
18136 // Type consistency
18137 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
18138 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
18139 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18140 // the upper bound of the multiplicity should be considered.
18141 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
18142 check(numberOfExistingReferences < 1);
18143 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18144 // the upper bound of the opposite reference multiplicity should be considered.
18145 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
18146 check(numberOfExistingOppositeReferences < 1);
18147 // The reference is containment, then a new reference cannot be create if:
18148 // 1. Multiple parents
18149 neg find mustContains4(problem,interpretation,_,target);
18150 // 2. Circle in the containment hierarchy
18151 neg find mustTransitiveContains(source,target);
18152} or {
18153 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
18154}
18155/**
18156 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
18157 */
18158private pattern mustInRelationmodel_reference_FunctionalElement(
18159 problem:LogicProblem, interpretation:PartialInterpretation,
18160 source: DefinedElement, target:DefinedElement)
18161{
18162 find interpretation(problem,interpretation);
18163 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18164 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
18165 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18166 BinaryElementRelationLink.param1(link,source);
18167 BinaryElementRelationLink.param2(link,target);
18168}
18169/**
18170 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
18171 */
18172private pattern mayInRelationmodel_reference_FunctionalElement(
18173 problem:LogicProblem, interpretation:PartialInterpretation,
18174 source: DefinedElement, target:DefinedElement)
18175{
18176 find interpretation(problem,interpretation);
18177 // The two endpoint of the link have to exist
18178 find mayExist(problem, interpretation, source);
18179 find mayExist(problem, interpretation, target);
18180 // Type consistency
18181 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
18182 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
18183 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18184 // the upper bound of the multiplicity should be considered.
18185 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
18186 check(numberOfExistingReferences < 1);
18187} or {
18188 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
18189}
18190/**
18191 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
18192 */
18193private pattern mustInRelationparent_reference_FunctionalElement(
18194 problem:LogicProblem, interpretation:PartialInterpretation,
18195 source: DefinedElement, target:DefinedElement)
18196{
18197 find interpretation(problem,interpretation);
18198 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18199 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
18200 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18201 BinaryElementRelationLink.param1(link,source);
18202 BinaryElementRelationLink.param2(link,target);
18203}
18204/**
18205 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
18206 */
18207private pattern mayInRelationparent_reference_FunctionalElement(
18208 problem:LogicProblem, interpretation:PartialInterpretation,
18209 source: DefinedElement, target:DefinedElement)
18210{
18211 find interpretation(problem,interpretation);
18212 // The two endpoint of the link have to exist
18213 find mayExist(problem, interpretation, source);
18214 find mayExist(problem, interpretation, target);
18215 // Type consistency
18216 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
18217 find mayInstanceOfFunction_class(problem,interpretation,target);
18218 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18219 // the upper bound of the multiplicity should be considered.
18220 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
18221 check(numberOfExistingReferences < 1);
18222 // The eOpposite of the reference is containment, then a referene cannot be created if
18223 // 1. Multiple parents
18224 neg find mustContains4(problem,interpretation,source,_);
18225 // 2. Circle in the containment hierarchy
18226 neg find mustTransitiveContains(source,target);
18227} or {
18228 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
18229}
18230/**
18231 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
18232 */
18233private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
18234 problem:LogicProblem, interpretation:PartialInterpretation,
18235 source: DefinedElement, target:DefinedElement)
18236{
18237 find interpretation(problem,interpretation);
18238 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18239 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
18240 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18241 BinaryElementRelationLink.param1(link,source);
18242 BinaryElementRelationLink.param2(link,target);
18243}
18244/**
18245 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
18246 */
18247private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
18248 problem:LogicProblem, interpretation:PartialInterpretation,
18249 source: DefinedElement, target:DefinedElement)
18250{
18251 find interpretation(problem,interpretation);
18252 // The two endpoint of the link have to exist
18253 find mayExist(problem, interpretation, source);
18254 find mayExist(problem, interpretation, target);
18255 // Type consistency
18256 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
18257 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
18258 // The reference is containment, then a new reference cannot be create if:
18259 // 1. Multiple parents
18260 neg find mustContains4(problem,interpretation,_,target);
18261 // 2. Circle in the containment hierarchy
18262 neg find mustTransitiveContains(source,target);
18263} or {
18264 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
18265}
18266/**
18267 * Matcher for detecting tuples t where []subElements reference Function(source,target)
18268 */
18269private pattern mustInRelationsubElements_reference_Function(
18270 problem:LogicProblem, interpretation:PartialInterpretation,
18271 source: DefinedElement, target:DefinedElement)
18272{
18273 find interpretation(problem,interpretation);
18274 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18275 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
18276 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18277 BinaryElementRelationLink.param1(link,source);
18278 BinaryElementRelationLink.param2(link,target);
18279}
18280/**
18281 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
18282 */
18283private pattern mayInRelationsubElements_reference_Function(
18284 problem:LogicProblem, interpretation:PartialInterpretation,
18285 source: DefinedElement, target:DefinedElement)
18286{
18287 find interpretation(problem,interpretation);
18288 // The two endpoint of the link have to exist
18289 find mayExist(problem, interpretation, source);
18290 find mayExist(problem, interpretation, target);
18291 // Type consistency
18292 find mayInstanceOfFunction_class(problem,interpretation,source);
18293 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
18294 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18295 // the upper bound of the opposite reference multiplicity should be considered.
18296 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
18297 check(numberOfExistingOppositeReferences < 1);
18298 // The reference is containment, then a new reference cannot be create if:
18299 // 1. Multiple parents
18300 neg find mustContains4(problem,interpretation,_,target);
18301 // 2. Circle in the containment hierarchy
18302 neg find mustTransitiveContains(source,target);
18303} or {
18304 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
18305}
18306/**
18307 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
18308 */
18309private pattern mustInRelationdata_reference_FAMTerminator(
18310 problem:LogicProblem, interpretation:PartialInterpretation,
18311 source: DefinedElement, target:DefinedElement)
18312{
18313 find interpretation(problem,interpretation);
18314 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18315 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
18316 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18317 BinaryElementRelationLink.param1(link,source);
18318 BinaryElementRelationLink.param2(link,target);
18319}
18320/**
18321 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
18322 */
18323private pattern mayInRelationdata_reference_FAMTerminator(
18324 problem:LogicProblem, interpretation:PartialInterpretation,
18325 source: DefinedElement, target:DefinedElement)
18326{
18327 find interpretation(problem,interpretation);
18328 // The two endpoint of the link have to exist
18329 find mayExist(problem, interpretation, source);
18330 find mayExist(problem, interpretation, target);
18331 // Type consistency
18332 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
18333 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
18334 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18335 // the upper bound of the multiplicity should be considered.
18336 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
18337 check(numberOfExistingReferences < 1);
18338 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18339 // the upper bound of the opposite reference multiplicity should be considered.
18340 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
18341 check(numberOfExistingOppositeReferences < 1);
18342 // The eOpposite of the reference is containment, then a referene cannot be created if
18343 // 1. Multiple parents
18344 neg find mustContains4(problem,interpretation,source,_);
18345 // 2. Circle in the containment hierarchy
18346 neg find mustTransitiveContains(source,target);
18347} or {
18348 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
18349}
18350/**
18351 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
18352 */
18353private pattern mustInRelationfrom_reference_InformationLink(
18354 problem:LogicProblem, interpretation:PartialInterpretation,
18355 source: DefinedElement, target:DefinedElement)
18356{
18357 find interpretation(problem,interpretation);
18358 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18359 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
18360 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18361 BinaryElementRelationLink.param1(link,source);
18362 BinaryElementRelationLink.param2(link,target);
18363}
18364/**
18365 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
18366 */
18367private pattern mayInRelationfrom_reference_InformationLink(
18368 problem:LogicProblem, interpretation:PartialInterpretation,
18369 source: DefinedElement, target:DefinedElement)
18370{
18371 find interpretation(problem,interpretation);
18372 // The two endpoint of the link have to exist
18373 find mayExist(problem, interpretation, source);
18374 find mayExist(problem, interpretation, target);
18375 // Type consistency
18376 find mayInstanceOfInformationLink_class(problem,interpretation,source);
18377 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
18378 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18379 // the upper bound of the multiplicity should be considered.
18380 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
18381 check(numberOfExistingReferences < 1);
18382 // The eOpposite of the reference is containment, then a referene cannot be created if
18383 // 1. Multiple parents
18384 neg find mustContains4(problem,interpretation,source,_);
18385 // 2. Circle in the containment hierarchy
18386 neg find mustTransitiveContains(source,target);
18387} or {
18388 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
18389}
18390/**
18391 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
18392 */
18393private pattern mustInRelationto_reference_InformationLink(
18394 problem:LogicProblem, interpretation:PartialInterpretation,
18395 source: DefinedElement, target:DefinedElement)
18396{
18397 find interpretation(problem,interpretation);
18398 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18399 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
18400 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18401 BinaryElementRelationLink.param1(link,source);
18402 BinaryElementRelationLink.param2(link,target);
18403}
18404/**
18405 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
18406 */
18407private pattern mayInRelationto_reference_InformationLink(
18408 problem:LogicProblem, interpretation:PartialInterpretation,
18409 source: DefinedElement, target:DefinedElement)
18410{
18411 find interpretation(problem,interpretation);
18412 // The two endpoint of the link have to exist
18413 find mayExist(problem, interpretation, source);
18414 find mayExist(problem, interpretation, target);
18415 // Type consistency
18416 find mayInstanceOfInformationLink_class(problem,interpretation,source);
18417 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
18418 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18419 // the upper bound of the multiplicity should be considered.
18420 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
18421 check(numberOfExistingReferences < 1);
18422} or {
18423 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
18424}
18425/**
18426 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
18427 */
18428private pattern mustInRelationdata_reference_FunctionalInterface(
18429 problem:LogicProblem, interpretation:PartialInterpretation,
18430 source: DefinedElement, target:DefinedElement)
18431{
18432 find interpretation(problem,interpretation);
18433 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18434 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
18435 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18436 BinaryElementRelationLink.param1(link,source);
18437 BinaryElementRelationLink.param2(link,target);
18438}
18439/**
18440 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
18441 */
18442private pattern mayInRelationdata_reference_FunctionalInterface(
18443 problem:LogicProblem, interpretation:PartialInterpretation,
18444 source: DefinedElement, target:DefinedElement)
18445{
18446 find interpretation(problem,interpretation);
18447 // The two endpoint of the link have to exist
18448 find mayExist(problem, interpretation, source);
18449 find mayExist(problem, interpretation, target);
18450 // Type consistency
18451 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
18452 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
18453 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18454 // the upper bound of the opposite reference multiplicity should be considered.
18455 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
18456 check(numberOfExistingOppositeReferences < 1);
18457 // The reference is containment, then a new reference cannot be create if:
18458 // 1. Multiple parents
18459 neg find mustContains4(problem,interpretation,_,target);
18460 // 2. Circle in the containment hierarchy
18461 neg find mustTransitiveContains(source,target);
18462} or {
18463 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
18464}
18465/**
18466 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
18467 */
18468private pattern mustInRelationelement_reference_FunctionalInterface(
18469 problem:LogicProblem, interpretation:PartialInterpretation,
18470 source: DefinedElement, target:DefinedElement)
18471{
18472 find interpretation(problem,interpretation);
18473 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18474 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
18475 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18476 BinaryElementRelationLink.param1(link,source);
18477 BinaryElementRelationLink.param2(link,target);
18478}
18479/**
18480 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
18481 */
18482private pattern mayInRelationelement_reference_FunctionalInterface(
18483 problem:LogicProblem, interpretation:PartialInterpretation,
18484 source: DefinedElement, target:DefinedElement)
18485{
18486 find interpretation(problem,interpretation);
18487 // The two endpoint of the link have to exist
18488 find mayExist(problem, interpretation, source);
18489 find mayExist(problem, interpretation, target);
18490 // Type consistency
18491 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
18492 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
18493 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18494 // the upper bound of the multiplicity should be considered.
18495 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
18496 check(numberOfExistingReferences < 1);
18497 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18498 // the upper bound of the opposite reference multiplicity should be considered.
18499 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
18500 check(numberOfExistingOppositeReferences < 1);
18501 // The eOpposite of the reference is containment, then a referene cannot be created if
18502 // 1. Multiple parents
18503 neg find mustContains4(problem,interpretation,source,_);
18504 // 2. Circle in the containment hierarchy
18505 neg find mustTransitiveContains(source,target);
18506} or {
18507 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
18508}
18509/**
18510 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
18511 */
18512private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
18513 problem:LogicProblem, interpretation:PartialInterpretation,
18514 source: DefinedElement, target:DefinedElement)
18515{
18516 find interpretation(problem,interpretation);
18517 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18518 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
18519 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18520 BinaryElementRelationLink.param1(link,source);
18521 BinaryElementRelationLink.param2(link,target);
18522}
18523/**
18524 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
18525 */
18526private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
18527 problem:LogicProblem, interpretation:PartialInterpretation,
18528 source: DefinedElement, target:DefinedElement)
18529{
18530 find interpretation(problem,interpretation);
18531 // The two endpoint of the link have to exist
18532 find mayExist(problem, interpretation, source);
18533 find mayExist(problem, interpretation, target);
18534 // Type consistency
18535 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
18536 find mayInstanceOfInformationLink_class(problem,interpretation,target);
18537 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18538 // the upper bound of the opposite reference multiplicity should be considered.
18539 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
18540 check(numberOfExistingOppositeReferences < 1);
18541} or {
18542 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
18543}
18544/**
18545 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
18546 */
18547private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
18548 problem:LogicProblem, interpretation:PartialInterpretation,
18549 source: DefinedElement, target:DefinedElement)
18550{
18551 find interpretation(problem,interpretation);
18552 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18553 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
18554 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18555 BinaryElementRelationLink.param1(link,source);
18556 BinaryElementRelationLink.param2(link,target);
18557}
18558/**
18559 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
18560 */
18561private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
18562 problem:LogicProblem, interpretation:PartialInterpretation,
18563 source: DefinedElement, target:DefinedElement)
18564{
18565 find interpretation(problem,interpretation);
18566 // The two endpoint of the link have to exist
18567 find mayExist(problem, interpretation, source);
18568 find mayExist(problem, interpretation, target);
18569 // Type consistency
18570 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
18571 find mayInstanceOfInformationLink_class(problem,interpretation,target);
18572 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18573 // the upper bound of the opposite reference multiplicity should be considered.
18574 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
18575 check(numberOfExistingOppositeReferences < 1);
18576 // The reference is containment, then a new reference cannot be create if:
18577 // 1. Multiple parents
18578 neg find mustContains4(problem,interpretation,_,target);
18579 // 2. Circle in the containment hierarchy
18580 neg find mustTransitiveContains(source,target);
18581} or {
18582 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
18583}
18584/**
18585 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
18586 */
18587private pattern mustInRelationterminator_reference_FunctionalData(
18588 problem:LogicProblem, interpretation:PartialInterpretation,
18589 source: DefinedElement, target:DefinedElement)
18590{
18591 find interpretation(problem,interpretation);
18592 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18593 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
18594 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18595 BinaryElementRelationLink.param1(link,source);
18596 BinaryElementRelationLink.param2(link,target);
18597}
18598/**
18599 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
18600 */
18601private pattern mayInRelationterminator_reference_FunctionalData(
18602 problem:LogicProblem, interpretation:PartialInterpretation,
18603 source: DefinedElement, target:DefinedElement)
18604{
18605 find interpretation(problem,interpretation);
18606 // The two endpoint of the link have to exist
18607 find mayExist(problem, interpretation, source);
18608 find mayExist(problem, interpretation, target);
18609 // Type consistency
18610 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
18611 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
18612 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18613 // the upper bound of the multiplicity should be considered.
18614 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
18615 check(numberOfExistingReferences < 1);
18616 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
18617 // the upper bound of the opposite reference multiplicity should be considered.
18618 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
18619 check(numberOfExistingOppositeReferences < 1);
18620 // The reference is containment, then a new reference cannot be create if:
18621 // 1. Multiple parents
18622 neg find mustContains4(problem,interpretation,_,target);
18623 // 2. Circle in the containment hierarchy
18624 neg find mustTransitiveContains(source,target);
18625} or {
18626 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
18627}
18628/**
18629 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
18630 */
18631private pattern mustInRelationinterface_reference_FunctionalData(
18632 problem:LogicProblem, interpretation:PartialInterpretation,
18633 source: DefinedElement, target:DefinedElement)
18634{
18635 find interpretation(problem,interpretation);
18636 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18637 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
18638 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18639 BinaryElementRelationLink.param1(link,source);
18640 BinaryElementRelationLink.param2(link,target);
18641}
18642/**
18643 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
18644 */
18645private pattern mayInRelationinterface_reference_FunctionalData(
18646 problem:LogicProblem, interpretation:PartialInterpretation,
18647 source: DefinedElement, target:DefinedElement)
18648{
18649 find interpretation(problem,interpretation);
18650 // The two endpoint of the link have to exist
18651 find mayExist(problem, interpretation, source);
18652 find mayExist(problem, interpretation, target);
18653 // Type consistency
18654 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
18655 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
18656 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18657 // the upper bound of the multiplicity should be considered.
18658 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
18659 check(numberOfExistingReferences < 1);
18660 // The eOpposite of the reference is containment, then a referene cannot be created if
18661 // 1. Multiple parents
18662 neg find mustContains4(problem,interpretation,source,_);
18663 // 2. Circle in the containment hierarchy
18664 neg find mustTransitiveContains(source,target);
18665} or {
18666 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
18667}
18668/**
18669 * Matcher for detecting tuples t where []type attribute Function(source,target)
18670 */
18671private pattern mustInRelationtype_attribute_Function(
18672 problem:LogicProblem, interpretation:PartialInterpretation,
18673 source: DefinedElement, target:DefinedElement)
18674{
18675 find interpretation(problem,interpretation);
18676 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18677 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
18678 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
18679 BinaryElementRelationLink.param1(link,source);
18680 BinaryElementRelationLink.param2(link,target);
18681}
18682/**
18683 * Matcher for detecting tuples t where <>type attribute Function(source,target)
18684 */
18685private pattern mayInRelationtype_attribute_Function(
18686 problem:LogicProblem, interpretation:PartialInterpretation,
18687 source: DefinedElement, target:DefinedElement)
18688{
18689 find interpretation(problem,interpretation);
18690 // The two endpoint of the link have to exist
18691 find mayExist(problem, interpretation, source);
18692 find mayExist(problem, interpretation, target);
18693 // Type consistency
18694 find mayInstanceOfFunction_class(problem,interpretation,source);
18695 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
18696 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
18697 // the upper bound of the multiplicity should be considered.
18698 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
18699 check(numberOfExistingReferences < 1);
18700} or {
18701 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
18702}
18703
18704//////////
18705// 1.3 Relation Definition Indexers
18706//////////
18707
18708//////////
18709// 1.4 Containment Indexer
18710//////////
18711private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
18712 find mustContains4(_,_,source,target);
18713}
18714
18715private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
18716 source: DefinedElement, target: DefinedElement)
18717 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
18718
18719 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
18720
18721 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
18722
18723 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
18724
18725 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
18726
18727 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
18728
18729private pattern mustTransitiveContains(source,target) {
18730 find mustContains2+(source,target);
18731}
18732
18733//////////
18734// 2. Invalidation Indexers
18735//////////
18736// 2.1 Invalidated by WF Queries
18737//////////
18738
18739//////////
18740// 3. Unfinishedness Indexers
18741//////////
18742// 3.1 Unfinishedness Measured by Multiplicity
18743//////////
18744pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
18745 find interpretation(problem,interpretation);
18746 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18747 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
18748 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
18749 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
18750 check(numberOfExistingReferences < 1);
18751 missingMultiplicity == eval(1-numberOfExistingReferences);
18752}
18753pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
18754 find interpretation(problem,interpretation);
18755 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18756 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
18757 find mustInstanceOfInformationLink_class(problem,interpretation,object);
18758 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
18759 check(numberOfExistingReferences < 1);
18760 missingMultiplicity == eval(1-numberOfExistingReferences);
18761}
18762pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
18763 find interpretation(problem,interpretation);
18764 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
18765 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
18766 find mustInstanceOfFunction_class(problem,interpretation,object);
18767 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
18768 check(numberOfExistingReferences < 1);
18769 missingMultiplicity == eval(1-numberOfExistingReferences);
18770}
18771
18772//////////
18773// 3.2 Unfinishedness Measured by WF Queries
18774//////////
18775
18776//////////
18777// 4. Refinement Indexers
18778//////////
18779// 4.1 Object constructors
18780//////////
18781private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
18782{
18783 find interpretation(problem,interpretation);
18784 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
18785 find mustExist(problem, interpretation, root);
18786}or{
18787 find interpretation(problem,interpretation);
18788 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
18789 find mustExist(problem, interpretation, root);
18790}or{
18791 find interpretation(problem,interpretation);
18792 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
18793 find mustExist(problem, interpretation, root);
18794}or{
18795 find interpretation(problem,interpretation);
18796 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
18797 find mustExist(problem, interpretation, root);
18798}or{
18799 find interpretation(problem,interpretation);
18800 find mustInstanceOfInformationLink_class(problem,interpretation,root);
18801 find mustExist(problem, interpretation, root);
18802}or{
18803 find interpretation(problem,interpretation);
18804 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
18805 find mustExist(problem, interpretation, root);
18806}or{
18807 find interpretation(problem,interpretation);
18808 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
18809 find mustExist(problem, interpretation, root);
18810}or{
18811 find interpretation(problem,interpretation);
18812 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
18813 find mustExist(problem, interpretation, root);
18814}or{
18815 find interpretation(problem,interpretation);
18816 find mustInstanceOfFunction_class(problem,interpretation,root);
18817 find mustExist(problem, interpretation, root);
18818}or{
18819 find interpretation(problem,interpretation);
18820 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
18821 find mustExist(problem, interpretation, root);
18822}or{
18823 find interpretation(problem,interpretation);
18824 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
18825 find mustExist(problem, interpretation, root);
18826}
18827pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
18828 problem:LogicProblem, interpretation:PartialInterpretation,
18829 typeInterpretation:PartialComplexTypeInterpretation)
18830{
18831 find interpretation(problem,interpretation);
18832 neg find hasElementInContainment(problem,interpretation);
18833 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18834 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
18835 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
18836 find mayExist(problem, interpretation, newObject);
18837 neg find mustExist(problem, interpretation, newObject);
18838}
18839pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
18840 problem:LogicProblem, interpretation:PartialInterpretation,
18841 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
18842 container:DefinedElement)
18843{
18844 find interpretation(problem,interpretation);
18845 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18846 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
18847 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
18848 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
18849 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
18850 find mayInstanceOfFunction_class(problem,interpretation,newObject);
18851 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
18852 find mustExist(problem, interpretation, container);
18853 neg find mustExist(problem, interpretation, newObject);
18854}
18855pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
18856 problem:LogicProblem, interpretation:PartialInterpretation,
18857 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
18858 container:DefinedElement)
18859{
18860 find interpretation(problem,interpretation);
18861 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18862 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
18863 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
18864 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
18865 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
18866 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
18867 find mustInstanceOfFunction_class(problem,interpretation,container);
18868 find mayInstanceOfFunction_class(problem,interpretation,newObject);
18869 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
18870 find mustExist(problem, interpretation, container);
18871 neg find mustExist(problem, interpretation, newObject);
18872}
18873pattern createObject_Function_class(
18874 problem:LogicProblem, interpretation:PartialInterpretation,
18875 typeInterpretation:PartialComplexTypeInterpretation)
18876{
18877 find interpretation(problem,interpretation);
18878 neg find hasElementInContainment(problem,interpretation);
18879 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18880 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
18881 find mayInstanceOfFunction_class(problem,interpretation,newObject);
18882 find mayExist(problem, interpretation, newObject);
18883 neg find mustExist(problem, interpretation, newObject);
18884}
18885pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
18886 problem:LogicProblem, interpretation:PartialInterpretation,
18887 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
18888 container:DefinedElement)
18889{
18890 find interpretation(problem,interpretation);
18891 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18892 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
18893 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
18894 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
18895 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
18896 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
18897 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
18898 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
18899 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
18900 find mustExist(problem, interpretation, container);
18901 neg find mustExist(problem, interpretation, newObject);
18902}
18903pattern createObject_FunctionalOutput_class(
18904 problem:LogicProblem, interpretation:PartialInterpretation,
18905 typeInterpretation:PartialComplexTypeInterpretation)
18906{
18907 find interpretation(problem,interpretation);
18908 neg find hasElementInContainment(problem,interpretation);
18909 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18910 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
18911 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
18912 find mayExist(problem, interpretation, newObject);
18913 neg find mustExist(problem, interpretation, newObject);
18914}
18915pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
18916 problem:LogicProblem, interpretation:PartialInterpretation,
18917 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
18918 container:DefinedElement)
18919{
18920 find interpretation(problem,interpretation);
18921 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18922 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
18923 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
18924 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
18925 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
18926 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
18927 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
18928 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
18929 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
18930 find mustExist(problem, interpretation, container);
18931 neg find mustExist(problem, interpretation, newObject);
18932}
18933pattern createObject_FAMTerminator_class(
18934 problem:LogicProblem, interpretation:PartialInterpretation,
18935 typeInterpretation:PartialComplexTypeInterpretation)
18936{
18937 find interpretation(problem,interpretation);
18938 neg find hasElementInContainment(problem,interpretation);
18939 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18940 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
18941 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
18942 find mayExist(problem, interpretation, newObject);
18943 neg find mustExist(problem, interpretation, newObject);
18944}
18945pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
18946 problem:LogicProblem, interpretation:PartialInterpretation,
18947 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
18948 container:DefinedElement)
18949{
18950 find interpretation(problem,interpretation);
18951 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18952 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
18953 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
18954 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
18955 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
18956 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
18957 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
18958 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
18959 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
18960 find mustExist(problem, interpretation, container);
18961 neg find mustExist(problem, interpretation, newObject);
18962}
18963pattern createObject_FunctionalInput_class(
18964 problem:LogicProblem, interpretation:PartialInterpretation,
18965 typeInterpretation:PartialComplexTypeInterpretation)
18966{
18967 find interpretation(problem,interpretation);
18968 neg find hasElementInContainment(problem,interpretation);
18969 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18970 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
18971 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
18972 find mayExist(problem, interpretation, newObject);
18973 neg find mustExist(problem, interpretation, newObject);
18974}
18975pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
18976 problem:LogicProblem, interpretation:PartialInterpretation,
18977 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
18978 container:DefinedElement)
18979{
18980 find interpretation(problem,interpretation);
18981 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
18982 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
18983 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
18984 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
18985 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
18986 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
18987 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
18988 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
18989 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
18990 find mustExist(problem, interpretation, container);
18991 neg find mustExist(problem, interpretation, newObject);
18992}
18993pattern createObject_InformationLink_class(
18994 problem:LogicProblem, interpretation:PartialInterpretation,
18995 typeInterpretation:PartialComplexTypeInterpretation)
18996{
18997 find interpretation(problem,interpretation);
18998 neg find hasElementInContainment(problem,interpretation);
18999 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
19000 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
19001 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
19002 find mayExist(problem, interpretation, newObject);
19003 neg find mustExist(problem, interpretation, newObject);
19004}
19005pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
19006 problem:LogicProblem, interpretation:PartialInterpretation,
19007 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
19008 container:DefinedElement)
19009{
19010 find interpretation(problem,interpretation);
19011 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
19012 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
19013 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
19014 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
19015 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
19016 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
19017 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
19018 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
19019 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
19020 find mustExist(problem, interpretation, container);
19021 neg find mustExist(problem, interpretation, newObject);
19022}
19023pattern createObject_FunctionalInterface_class(
19024 problem:LogicProblem, interpretation:PartialInterpretation,
19025 typeInterpretation:PartialComplexTypeInterpretation)
19026{
19027 find interpretation(problem,interpretation);
19028 neg find hasElementInContainment(problem,interpretation);
19029 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
19030 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
19031 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
19032 find mayExist(problem, interpretation, newObject);
19033 neg find mustExist(problem, interpretation, newObject);
19034}
19035
19036//////////
19037// 4.2 Type refinement
19038//////////
19039pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
19040 find interpretation(problem,interpretation);
19041 PartialInterpretation.newElements(interpretation,element);
19042 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
19043 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
19044 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19045 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19046 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19047 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19048 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19049}
19050pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
19051 find interpretation(problem,interpretation);
19052 PartialInterpretation.newElements(interpretation,element);
19053 find mayInstanceOfFunction_class(problem,interpretation,element);
19054 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19055 neg find mustInstanceOfFunction_class(problem,interpretation,element);
19056 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19057 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19058 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19059 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19060}
19061pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
19062 find interpretation(problem,interpretation);
19063 PartialInterpretation.newElements(interpretation,element);
19064 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
19065 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
19066 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19067 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
19068 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19069 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19070 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19071 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19072}
19073pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
19074 find interpretation(problem,interpretation);
19075 PartialInterpretation.newElements(interpretation,element);
19076 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
19077 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19078 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19079 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19080 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19081 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19082 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19083}
19084pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
19085 find interpretation(problem,interpretation);
19086 PartialInterpretation.newElements(interpretation,element);
19087 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
19088 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
19089 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19090 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
19091 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19092 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19093 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19094 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19095}
19096pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
19097 find interpretation(problem,interpretation);
19098 PartialInterpretation.newElements(interpretation,element);
19099 find mayInstanceOfInformationLink_class(problem,interpretation,element);
19100 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19101 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19102 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19103 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19104 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19105 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19106}
19107pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
19108 find interpretation(problem,interpretation);
19109 PartialInterpretation.newElements(interpretation,element);
19110 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
19111 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19112 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19113 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19114 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19115 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19116 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19117}
19118
19119//////////
19120// 4.3 Relation refinement
19121//////////
19122pattern refineRelation_model_reference_FunctionalElement(
19123 problem:LogicProblem, interpretation:PartialInterpretation,
19124 relationIterpretation:PartialRelationInterpretation,
19125 from: DefinedElement, to: DefinedElement)
19126{
19127 find interpretation(problem,interpretation);
19128 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19129 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
19130 find mustExist(problem, interpretation, from);
19131 find mustExist(problem, interpretation, to);
19132 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
19133 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
19134 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
19135 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
19136}
19137pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
19138 problem:LogicProblem, interpretation:PartialInterpretation,
19139 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
19140 from: DefinedElement, to: DefinedElement)
19141{
19142 find interpretation(problem,interpretation);
19143 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19144 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
19145 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
19146 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
19147 find mustExist(problem, interpretation, from);
19148 find mustExist(problem, interpretation, to);
19149 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
19150 find mustInstanceOfInformationLink_class(problem,interpretation,to);
19151 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
19152 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
19153}
19154pattern refineRelation_type_attribute_Function(
19155 problem:LogicProblem, interpretation:PartialInterpretation,
19156 relationIterpretation:PartialRelationInterpretation,
19157 from: DefinedElement, to: DefinedElement)
19158{
19159 find interpretation(problem,interpretation);
19160 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19161 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
19162 find mustExist(problem, interpretation, from);
19163 find mustExist(problem, interpretation, to);
19164 find mustInstanceOfFunction_class(problem,interpretation,from);
19165 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
19166 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
19167 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
19168}
19169import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
19170import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
19171import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
19172
19173//////////
19174// 0. Util
19175//////////
19176private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
19177 PartialInterpretation.problem(interpretation,problem);
19178}
19179
19180/////////////////////////
19181// 0.1 Existence
19182/////////////////////////
19183private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19184 find interpretation(problem,interpretation);
19185 LogicProblem.elements(problem,element);
19186} or {
19187 find interpretation(problem,interpretation);
19188 PartialInterpretation.newElements(interpretation,element);
19189}
19190
19191private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19192 find mustExist(problem,interpretation,element);
19193} or {
19194 find interpretation(problem,interpretation);
19195 neg find elementCloseWorld(element);
19196 PartialInterpretation.openWorldElements(interpretation,element);
19197}
19198
19199private pattern elementCloseWorld(element:DefinedElement) {
19200 PartialInterpretation.openWorldElements(i,element);
19201 PartialInterpretation.maxNewElements(i,0);
19202} or {
19203 Scope.targetTypeInterpretation(scope,interpretation);
19204 PartialTypeInterpratation.elements(interpretation,element);
19205 Scope.maxNewElements(scope,0);
19206}
19207
19208////////////////////////
19209// 0.2 Equivalence
19210////////////////////////
19211pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
19212 find mayExist(problem,interpretation,a);
19213 find mayExist(problem,interpretation,b);
19214 a == b;
19215}
19216
19217////////////////////////
19218// 0.3 Required Patterns by TypeIndexer
19219////////////////////////
19220private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
19221 find interpretation(problem,interpretation);
19222 LogicProblem.types(problem,type);
19223 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
19224 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19225}
19226
19227private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
19228 find interpretation(problem,interpretation);
19229 LogicProblem.types(problem,type);
19230 TypeDefinition.elements(type,element);
19231} or {
19232 find interpretation(problem,interpretation);
19233 find typeInterpretation(problem,interpretation,type,typeInterpretation);
19234 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
19235}
19236
19237private pattern isPrimitive(element: PrimitiveElement) {
19238 PrimitiveElement(element);
19239}
19240
19241//////////
19242// 1. Problem-Specific Base Indexers
19243//////////
19244// 1.1 Type Indexers
19245//////////
19246// 1.1.1 primitive Type Indexers
19247//////////
19248
19249//////////
19250// 1.1.2 domain-specific Type Indexers
19251//////////
19252/**
19253 * An element must be an instance of type "FunctionalElement class".
19254 */
19255private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19256 Type.name(type,"FunctionalElement class");
19257 find directInstanceOf(problem,interpretation,element,type);
19258}
19259private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
19260 find interpretation(problem,interpretation);
19261 PartialInterpretation.scopes(interpretation,scope);
19262 Scope.targetTypeInterpretation(scope,typeInterpretation);
19263 Scope.maxNewElements(scope,0);
19264 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19265 Type.name(type,"FunctionalElement class");
19266}
19267
19268/**
19269 * An element may be an instance of type "FunctionalElement class".
19270 */
19271private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19272{
19273 find interpretation(problem,interpretation);
19274 PartialInterpretation.newElements(interpretation,element);
19275 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19276 neg find mustInstanceOfFunction_class(problem,interpretation,element);
19277 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19278 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19279 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19280 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19281 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
19282 neg find isPrimitive(element);
19283} or {
19284 find interpretation(problem,interpretation);
19285 PartialInterpretation.openWorldElements(interpretation,element);
19286 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19287 neg find mustInstanceOfFunction_class(problem,interpretation,element);
19288 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19289 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19290 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19291 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19292 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
19293 neg find isPrimitive(element);
19294} or
19295{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
19296/**
19297 * An element must be an instance of type "FunctionalArchitectureModel class".
19298 */
19299private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19300 Type.name(type,"FunctionalArchitectureModel class");
19301 find directInstanceOf(problem,interpretation,element,type);
19302}
19303private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
19304 find interpretation(problem,interpretation);
19305 PartialInterpretation.scopes(interpretation,scope);
19306 Scope.targetTypeInterpretation(scope,typeInterpretation);
19307 Scope.maxNewElements(scope,0);
19308 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19309 Type.name(type,"FunctionalArchitectureModel class");
19310}
19311
19312/**
19313 * An element may be an instance of type "FunctionalArchitectureModel class".
19314 */
19315private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19316{
19317 find interpretation(problem,interpretation);
19318 PartialInterpretation.newElements(interpretation,element);
19319 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19320 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19321 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19322 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
19323 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19324 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19325 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
19326 neg find isPrimitive(element);
19327} or {
19328 find interpretation(problem,interpretation);
19329 PartialInterpretation.openWorldElements(interpretation,element);
19330 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19331 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19332 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19333 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
19334 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19335 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19336 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
19337 neg find isPrimitive(element);
19338} or
19339{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
19340/**
19341 * An element must be an instance of type "Function class".
19342 */
19343private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19344 Type.name(type,"Function class");
19345 find directInstanceOf(problem,interpretation,element,type);
19346}
19347private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
19348 find interpretation(problem,interpretation);
19349 PartialInterpretation.scopes(interpretation,scope);
19350 Scope.targetTypeInterpretation(scope,typeInterpretation);
19351 Scope.maxNewElements(scope,0);
19352 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19353 Type.name(type,"Function class");
19354}
19355
19356/**
19357 * An element may be an instance of type "Function class".
19358 */
19359private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19360{
19361 find interpretation(problem,interpretation);
19362 PartialInterpretation.newElements(interpretation,element);
19363 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19364 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19365 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19366 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19367 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19368 neg find scopeDisallowsNewFunction_class(problem, interpretation);
19369 neg find isPrimitive(element);
19370} or {
19371 find interpretation(problem,interpretation);
19372 PartialInterpretation.openWorldElements(interpretation,element);
19373 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19374 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19375 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19376 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19377 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19378 neg find scopeDisallowsNewFunction_class(problem, interpretation);
19379 neg find isPrimitive(element);
19380} or
19381{ find mustInstanceOfFunction_class(problem,interpretation,element); }
19382/**
19383 * An element must be an instance of type "FAMTerminator class".
19384 */
19385private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19386 Type.name(type,"FAMTerminator class");
19387 find directInstanceOf(problem,interpretation,element,type);
19388}
19389private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
19390 find interpretation(problem,interpretation);
19391 PartialInterpretation.scopes(interpretation,scope);
19392 Scope.targetTypeInterpretation(scope,typeInterpretation);
19393 Scope.maxNewElements(scope,0);
19394 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19395 Type.name(type,"FAMTerminator class");
19396}
19397
19398/**
19399 * An element may be an instance of type "FAMTerminator class".
19400 */
19401private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19402{
19403 find interpretation(problem,interpretation);
19404 PartialInterpretation.newElements(interpretation,element);
19405 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19406 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19407 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19408 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19409 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19410 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
19411 neg find isPrimitive(element);
19412} or {
19413 find interpretation(problem,interpretation);
19414 PartialInterpretation.openWorldElements(interpretation,element);
19415 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19416 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19417 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19418 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19419 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19420 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
19421 neg find isPrimitive(element);
19422} or
19423{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
19424/**
19425 * An element must be an instance of type "InformationLink class".
19426 */
19427private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19428 Type.name(type,"InformationLink class");
19429 find directInstanceOf(problem,interpretation,element,type);
19430}
19431private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
19432 find interpretation(problem,interpretation);
19433 PartialInterpretation.scopes(interpretation,scope);
19434 Scope.targetTypeInterpretation(scope,typeInterpretation);
19435 Scope.maxNewElements(scope,0);
19436 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19437 Type.name(type,"InformationLink class");
19438}
19439
19440/**
19441 * An element may be an instance of type "InformationLink class".
19442 */
19443private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19444{
19445 find interpretation(problem,interpretation);
19446 PartialInterpretation.newElements(interpretation,element);
19447 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19448 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19449 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19450 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19451 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19452 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
19453 neg find isPrimitive(element);
19454} or {
19455 find interpretation(problem,interpretation);
19456 PartialInterpretation.openWorldElements(interpretation,element);
19457 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19458 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19459 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19460 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19461 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19462 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
19463 neg find isPrimitive(element);
19464} or
19465{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
19466/**
19467 * An element must be an instance of type "FunctionalInterface class".
19468 */
19469private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19470 Type.name(type,"FunctionalInterface class");
19471 find directInstanceOf(problem,interpretation,element,type);
19472}
19473private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
19474 find interpretation(problem,interpretation);
19475 PartialInterpretation.scopes(interpretation,scope);
19476 Scope.targetTypeInterpretation(scope,typeInterpretation);
19477 Scope.maxNewElements(scope,0);
19478 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19479 Type.name(type,"FunctionalInterface class");
19480}
19481
19482/**
19483 * An element may be an instance of type "FunctionalInterface class".
19484 */
19485private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19486{
19487 find interpretation(problem,interpretation);
19488 PartialInterpretation.newElements(interpretation,element);
19489 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19490 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19491 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19492 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19493 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19494 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
19495 neg find isPrimitive(element);
19496} or {
19497 find interpretation(problem,interpretation);
19498 PartialInterpretation.openWorldElements(interpretation,element);
19499 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19500 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19501 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19502 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19503 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19504 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
19505 neg find isPrimitive(element);
19506} or
19507{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
19508/**
19509 * An element must be an instance of type "FunctionalInput class".
19510 */
19511private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19512 Type.name(type,"FunctionalInput class");
19513 find directInstanceOf(problem,interpretation,element,type);
19514}
19515private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
19516 find interpretation(problem,interpretation);
19517 PartialInterpretation.scopes(interpretation,scope);
19518 Scope.targetTypeInterpretation(scope,typeInterpretation);
19519 Scope.maxNewElements(scope,0);
19520 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19521 Type.name(type,"FunctionalInput class");
19522}
19523
19524/**
19525 * An element may be an instance of type "FunctionalInput class".
19526 */
19527private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19528{
19529 find interpretation(problem,interpretation);
19530 PartialInterpretation.newElements(interpretation,element);
19531 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19532 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19533 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
19534 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19535 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19536 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19537 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
19538 neg find isPrimitive(element);
19539} or {
19540 find interpretation(problem,interpretation);
19541 PartialInterpretation.openWorldElements(interpretation,element);
19542 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19543 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19544 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
19545 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19546 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19547 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19548 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
19549 neg find isPrimitive(element);
19550} or
19551{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
19552/**
19553 * An element must be an instance of type "FunctionalOutput class".
19554 */
19555private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19556 Type.name(type,"FunctionalOutput class");
19557 find directInstanceOf(problem,interpretation,element,type);
19558}
19559private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
19560 find interpretation(problem,interpretation);
19561 PartialInterpretation.scopes(interpretation,scope);
19562 Scope.targetTypeInterpretation(scope,typeInterpretation);
19563 Scope.maxNewElements(scope,0);
19564 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19565 Type.name(type,"FunctionalOutput class");
19566}
19567
19568/**
19569 * An element may be an instance of type "FunctionalOutput class".
19570 */
19571private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19572{
19573 find interpretation(problem,interpretation);
19574 PartialInterpretation.newElements(interpretation,element);
19575 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19576 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19577 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19578 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
19579 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19580 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19581 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
19582 neg find isPrimitive(element);
19583} or {
19584 find interpretation(problem,interpretation);
19585 PartialInterpretation.openWorldElements(interpretation,element);
19586 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19587 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19588 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19589 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
19590 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19591 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19592 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
19593 neg find isPrimitive(element);
19594} or
19595{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
19596/**
19597 * An element must be an instance of type "FunctionalData class".
19598 */
19599private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19600 Type.name(type,"FunctionalData class");
19601 find directInstanceOf(problem,interpretation,element,type);
19602}
19603private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
19604 find interpretation(problem,interpretation);
19605 PartialInterpretation.scopes(interpretation,scope);
19606 Scope.targetTypeInterpretation(scope,typeInterpretation);
19607 Scope.maxNewElements(scope,0);
19608 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19609 Type.name(type,"FunctionalData class");
19610}
19611
19612/**
19613 * An element may be an instance of type "FunctionalData class".
19614 */
19615private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19616{
19617 find interpretation(problem,interpretation);
19618 PartialInterpretation.newElements(interpretation,element);
19619 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19620 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19621 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
19622 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19623 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
19624 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19625 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19626 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
19627 neg find isPrimitive(element);
19628} or {
19629 find interpretation(problem,interpretation);
19630 PartialInterpretation.openWorldElements(interpretation,element);
19631 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
19632 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19633 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
19634 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19635 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
19636 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19637 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19638 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
19639 neg find isPrimitive(element);
19640} or
19641{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
19642/**
19643 * An element must be an instance of type "FunctionType enum".
19644 */
19645private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19646 Type.name(type,"FunctionType enum");
19647 find directInstanceOf(problem,interpretation,element,type);
19648}
19649private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
19650 find interpretation(problem,interpretation);
19651 PartialInterpretation.scopes(interpretation,scope);
19652 Scope.targetTypeInterpretation(scope,typeInterpretation);
19653 Scope.maxNewElements(scope,0);
19654 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19655 Type.name(type,"FunctionType enum");
19656}
19657
19658/**
19659 * An element may be an instance of type "FunctionType enum".
19660 */
19661private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19662{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
19663/**
19664 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
19665 */
19666private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19667 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
19668 find directInstanceOf(problem,interpretation,element,type);
19669}
19670private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
19671 find interpretation(problem,interpretation);
19672 PartialInterpretation.scopes(interpretation,scope);
19673 Scope.targetTypeInterpretation(scope,typeInterpretation);
19674 Scope.maxNewElements(scope,0);
19675 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19676 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
19677}
19678
19679/**
19680 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
19681 */
19682private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19683{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
19684/**
19685 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
19686 */
19687private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
19688 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
19689 find directInstanceOf(problem,interpretation,element,type);
19690}
19691private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
19692 find interpretation(problem,interpretation);
19693 PartialInterpretation.scopes(interpretation,scope);
19694 Scope.targetTypeInterpretation(scope,typeInterpretation);
19695 Scope.maxNewElements(scope,0);
19696 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
19697 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
19698}
19699
19700/**
19701 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
19702 */
19703private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
19704{
19705 find interpretation(problem,interpretation);
19706 PartialInterpretation.newElements(interpretation,element);
19707 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19708 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19709 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19710 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19711 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19712 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
19713 neg find isPrimitive(element);
19714} or {
19715 find interpretation(problem,interpretation);
19716 PartialInterpretation.openWorldElements(interpretation,element);
19717 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
19718 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
19719 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
19720 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
19721 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
19722 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
19723 neg find isPrimitive(element);
19724} or
19725{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
19726
19727//////////
19728// 1.2 Relation Declaration Indexers
19729//////////
19730/**
19731 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
19732 */
19733private pattern mustInRelationinterface_reference_FunctionalElement(
19734 problem:LogicProblem, interpretation:PartialInterpretation,
19735 source: DefinedElement, target:DefinedElement)
19736{
19737 find interpretation(problem,interpretation);
19738 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19739 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
19740 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19741 BinaryElementRelationLink.param1(link,source);
19742 BinaryElementRelationLink.param2(link,target);
19743}
19744/**
19745 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
19746 */
19747private pattern mayInRelationinterface_reference_FunctionalElement(
19748 problem:LogicProblem, interpretation:PartialInterpretation,
19749 source: DefinedElement, target:DefinedElement)
19750{
19751 find interpretation(problem,interpretation);
19752 // The two endpoint of the link have to exist
19753 find mayExist(problem, interpretation, source);
19754 find mayExist(problem, interpretation, target);
19755 // Type consistency
19756 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
19757 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
19758 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19759 // the upper bound of the multiplicity should be considered.
19760 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
19761 check(numberOfExistingReferences < 1);
19762 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
19763 // the upper bound of the opposite reference multiplicity should be considered.
19764 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
19765 check(numberOfExistingOppositeReferences < 1);
19766 // The reference is containment, then a new reference cannot be create if:
19767 // 1. Multiple parents
19768 neg find mustContains4(problem,interpretation,_,target);
19769 // 2. Circle in the containment hierarchy
19770 neg find mustTransitiveContains(source,target);
19771} or {
19772 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
19773}
19774/**
19775 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
19776 */
19777private pattern mustInRelationmodel_reference_FunctionalElement(
19778 problem:LogicProblem, interpretation:PartialInterpretation,
19779 source: DefinedElement, target:DefinedElement)
19780{
19781 find interpretation(problem,interpretation);
19782 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19783 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
19784 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19785 BinaryElementRelationLink.param1(link,source);
19786 BinaryElementRelationLink.param2(link,target);
19787}
19788/**
19789 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
19790 */
19791private pattern mayInRelationmodel_reference_FunctionalElement(
19792 problem:LogicProblem, interpretation:PartialInterpretation,
19793 source: DefinedElement, target:DefinedElement)
19794{
19795 find interpretation(problem,interpretation);
19796 // The two endpoint of the link have to exist
19797 find mayExist(problem, interpretation, source);
19798 find mayExist(problem, interpretation, target);
19799 // Type consistency
19800 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
19801 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
19802 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19803 // the upper bound of the multiplicity should be considered.
19804 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
19805 check(numberOfExistingReferences < 1);
19806} or {
19807 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
19808}
19809/**
19810 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
19811 */
19812private pattern mustInRelationparent_reference_FunctionalElement(
19813 problem:LogicProblem, interpretation:PartialInterpretation,
19814 source: DefinedElement, target:DefinedElement)
19815{
19816 find interpretation(problem,interpretation);
19817 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19818 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
19819 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19820 BinaryElementRelationLink.param1(link,source);
19821 BinaryElementRelationLink.param2(link,target);
19822}
19823/**
19824 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
19825 */
19826private pattern mayInRelationparent_reference_FunctionalElement(
19827 problem:LogicProblem, interpretation:PartialInterpretation,
19828 source: DefinedElement, target:DefinedElement)
19829{
19830 find interpretation(problem,interpretation);
19831 // The two endpoint of the link have to exist
19832 find mayExist(problem, interpretation, source);
19833 find mayExist(problem, interpretation, target);
19834 // Type consistency
19835 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
19836 find mayInstanceOfFunction_class(problem,interpretation,target);
19837 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19838 // the upper bound of the multiplicity should be considered.
19839 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
19840 check(numberOfExistingReferences < 1);
19841 // The eOpposite of the reference is containment, then a referene cannot be created if
19842 // 1. Multiple parents
19843 neg find mustContains4(problem,interpretation,source,_);
19844 // 2. Circle in the containment hierarchy
19845 neg find mustTransitiveContains(source,target);
19846} or {
19847 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
19848}
19849/**
19850 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
19851 */
19852private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
19853 problem:LogicProblem, interpretation:PartialInterpretation,
19854 source: DefinedElement, target:DefinedElement)
19855{
19856 find interpretation(problem,interpretation);
19857 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19858 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
19859 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19860 BinaryElementRelationLink.param1(link,source);
19861 BinaryElementRelationLink.param2(link,target);
19862}
19863/**
19864 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
19865 */
19866private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
19867 problem:LogicProblem, interpretation:PartialInterpretation,
19868 source: DefinedElement, target:DefinedElement)
19869{
19870 find interpretation(problem,interpretation);
19871 // The two endpoint of the link have to exist
19872 find mayExist(problem, interpretation, source);
19873 find mayExist(problem, interpretation, target);
19874 // Type consistency
19875 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
19876 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
19877 // The reference is containment, then a new reference cannot be create if:
19878 // 1. Multiple parents
19879 neg find mustContains4(problem,interpretation,_,target);
19880 // 2. Circle in the containment hierarchy
19881 neg find mustTransitiveContains(source,target);
19882} or {
19883 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
19884}
19885/**
19886 * Matcher for detecting tuples t where []subElements reference Function(source,target)
19887 */
19888private pattern mustInRelationsubElements_reference_Function(
19889 problem:LogicProblem, interpretation:PartialInterpretation,
19890 source: DefinedElement, target:DefinedElement)
19891{
19892 find interpretation(problem,interpretation);
19893 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19894 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
19895 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19896 BinaryElementRelationLink.param1(link,source);
19897 BinaryElementRelationLink.param2(link,target);
19898}
19899/**
19900 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
19901 */
19902private pattern mayInRelationsubElements_reference_Function(
19903 problem:LogicProblem, interpretation:PartialInterpretation,
19904 source: DefinedElement, target:DefinedElement)
19905{
19906 find interpretation(problem,interpretation);
19907 // The two endpoint of the link have to exist
19908 find mayExist(problem, interpretation, source);
19909 find mayExist(problem, interpretation, target);
19910 // Type consistency
19911 find mayInstanceOfFunction_class(problem,interpretation,source);
19912 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
19913 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
19914 // the upper bound of the opposite reference multiplicity should be considered.
19915 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
19916 check(numberOfExistingOppositeReferences < 1);
19917 // The reference is containment, then a new reference cannot be create if:
19918 // 1. Multiple parents
19919 neg find mustContains4(problem,interpretation,_,target);
19920 // 2. Circle in the containment hierarchy
19921 neg find mustTransitiveContains(source,target);
19922} or {
19923 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
19924}
19925/**
19926 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
19927 */
19928private pattern mustInRelationdata_reference_FAMTerminator(
19929 problem:LogicProblem, interpretation:PartialInterpretation,
19930 source: DefinedElement, target:DefinedElement)
19931{
19932 find interpretation(problem,interpretation);
19933 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19934 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
19935 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19936 BinaryElementRelationLink.param1(link,source);
19937 BinaryElementRelationLink.param2(link,target);
19938}
19939/**
19940 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
19941 */
19942private pattern mayInRelationdata_reference_FAMTerminator(
19943 problem:LogicProblem, interpretation:PartialInterpretation,
19944 source: DefinedElement, target:DefinedElement)
19945{
19946 find interpretation(problem,interpretation);
19947 // The two endpoint of the link have to exist
19948 find mayExist(problem, interpretation, source);
19949 find mayExist(problem, interpretation, target);
19950 // Type consistency
19951 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
19952 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
19953 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19954 // the upper bound of the multiplicity should be considered.
19955 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
19956 check(numberOfExistingReferences < 1);
19957 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
19958 // the upper bound of the opposite reference multiplicity should be considered.
19959 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
19960 check(numberOfExistingOppositeReferences < 1);
19961 // The eOpposite of the reference is containment, then a referene cannot be created if
19962 // 1. Multiple parents
19963 neg find mustContains4(problem,interpretation,source,_);
19964 // 2. Circle in the containment hierarchy
19965 neg find mustTransitiveContains(source,target);
19966} or {
19967 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
19968}
19969/**
19970 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
19971 */
19972private pattern mustInRelationfrom_reference_InformationLink(
19973 problem:LogicProblem, interpretation:PartialInterpretation,
19974 source: DefinedElement, target:DefinedElement)
19975{
19976 find interpretation(problem,interpretation);
19977 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
19978 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
19979 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
19980 BinaryElementRelationLink.param1(link,source);
19981 BinaryElementRelationLink.param2(link,target);
19982}
19983/**
19984 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
19985 */
19986private pattern mayInRelationfrom_reference_InformationLink(
19987 problem:LogicProblem, interpretation:PartialInterpretation,
19988 source: DefinedElement, target:DefinedElement)
19989{
19990 find interpretation(problem,interpretation);
19991 // The two endpoint of the link have to exist
19992 find mayExist(problem, interpretation, source);
19993 find mayExist(problem, interpretation, target);
19994 // Type consistency
19995 find mayInstanceOfInformationLink_class(problem,interpretation,source);
19996 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
19997 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
19998 // the upper bound of the multiplicity should be considered.
19999 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
20000 check(numberOfExistingReferences < 1);
20001 // The eOpposite of the reference is containment, then a referene cannot be created if
20002 // 1. Multiple parents
20003 neg find mustContains4(problem,interpretation,source,_);
20004 // 2. Circle in the containment hierarchy
20005 neg find mustTransitiveContains(source,target);
20006} or {
20007 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
20008}
20009/**
20010 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
20011 */
20012private pattern mustInRelationto_reference_InformationLink(
20013 problem:LogicProblem, interpretation:PartialInterpretation,
20014 source: DefinedElement, target:DefinedElement)
20015{
20016 find interpretation(problem,interpretation);
20017 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20018 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
20019 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20020 BinaryElementRelationLink.param1(link,source);
20021 BinaryElementRelationLink.param2(link,target);
20022}
20023/**
20024 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
20025 */
20026private pattern mayInRelationto_reference_InformationLink(
20027 problem:LogicProblem, interpretation:PartialInterpretation,
20028 source: DefinedElement, target:DefinedElement)
20029{
20030 find interpretation(problem,interpretation);
20031 // The two endpoint of the link have to exist
20032 find mayExist(problem, interpretation, source);
20033 find mayExist(problem, interpretation, target);
20034 // Type consistency
20035 find mayInstanceOfInformationLink_class(problem,interpretation,source);
20036 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
20037 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20038 // the upper bound of the multiplicity should be considered.
20039 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
20040 check(numberOfExistingReferences < 1);
20041} or {
20042 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
20043}
20044/**
20045 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
20046 */
20047private pattern mustInRelationdata_reference_FunctionalInterface(
20048 problem:LogicProblem, interpretation:PartialInterpretation,
20049 source: DefinedElement, target:DefinedElement)
20050{
20051 find interpretation(problem,interpretation);
20052 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20053 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
20054 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20055 BinaryElementRelationLink.param1(link,source);
20056 BinaryElementRelationLink.param2(link,target);
20057}
20058/**
20059 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
20060 */
20061private pattern mayInRelationdata_reference_FunctionalInterface(
20062 problem:LogicProblem, interpretation:PartialInterpretation,
20063 source: DefinedElement, target:DefinedElement)
20064{
20065 find interpretation(problem,interpretation);
20066 // The two endpoint of the link have to exist
20067 find mayExist(problem, interpretation, source);
20068 find mayExist(problem, interpretation, target);
20069 // Type consistency
20070 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
20071 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
20072 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
20073 // the upper bound of the opposite reference multiplicity should be considered.
20074 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
20075 check(numberOfExistingOppositeReferences < 1);
20076 // The reference is containment, then a new reference cannot be create if:
20077 // 1. Multiple parents
20078 neg find mustContains4(problem,interpretation,_,target);
20079 // 2. Circle in the containment hierarchy
20080 neg find mustTransitiveContains(source,target);
20081} or {
20082 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
20083}
20084/**
20085 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
20086 */
20087private pattern mustInRelationelement_reference_FunctionalInterface(
20088 problem:LogicProblem, interpretation:PartialInterpretation,
20089 source: DefinedElement, target:DefinedElement)
20090{
20091 find interpretation(problem,interpretation);
20092 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20093 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
20094 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20095 BinaryElementRelationLink.param1(link,source);
20096 BinaryElementRelationLink.param2(link,target);
20097}
20098/**
20099 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
20100 */
20101private pattern mayInRelationelement_reference_FunctionalInterface(
20102 problem:LogicProblem, interpretation:PartialInterpretation,
20103 source: DefinedElement, target:DefinedElement)
20104{
20105 find interpretation(problem,interpretation);
20106 // The two endpoint of the link have to exist
20107 find mayExist(problem, interpretation, source);
20108 find mayExist(problem, interpretation, target);
20109 // Type consistency
20110 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
20111 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
20112 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20113 // the upper bound of the multiplicity should be considered.
20114 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
20115 check(numberOfExistingReferences < 1);
20116 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
20117 // the upper bound of the opposite reference multiplicity should be considered.
20118 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
20119 check(numberOfExistingOppositeReferences < 1);
20120 // The eOpposite of the reference is containment, then a referene cannot be created if
20121 // 1. Multiple parents
20122 neg find mustContains4(problem,interpretation,source,_);
20123 // 2. Circle in the containment hierarchy
20124 neg find mustTransitiveContains(source,target);
20125} or {
20126 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
20127}
20128/**
20129 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
20130 */
20131private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
20132 problem:LogicProblem, interpretation:PartialInterpretation,
20133 source: DefinedElement, target:DefinedElement)
20134{
20135 find interpretation(problem,interpretation);
20136 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20137 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
20138 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20139 BinaryElementRelationLink.param1(link,source);
20140 BinaryElementRelationLink.param2(link,target);
20141}
20142/**
20143 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
20144 */
20145private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
20146 problem:LogicProblem, interpretation:PartialInterpretation,
20147 source: DefinedElement, target:DefinedElement)
20148{
20149 find interpretation(problem,interpretation);
20150 // The two endpoint of the link have to exist
20151 find mayExist(problem, interpretation, source);
20152 find mayExist(problem, interpretation, target);
20153 // Type consistency
20154 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
20155 find mayInstanceOfInformationLink_class(problem,interpretation,target);
20156 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
20157 // the upper bound of the opposite reference multiplicity should be considered.
20158 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
20159 check(numberOfExistingOppositeReferences < 1);
20160} or {
20161 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
20162}
20163/**
20164 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
20165 */
20166private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
20167 problem:LogicProblem, interpretation:PartialInterpretation,
20168 source: DefinedElement, target:DefinedElement)
20169{
20170 find interpretation(problem,interpretation);
20171 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20172 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
20173 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20174 BinaryElementRelationLink.param1(link,source);
20175 BinaryElementRelationLink.param2(link,target);
20176}
20177/**
20178 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
20179 */
20180private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
20181 problem:LogicProblem, interpretation:PartialInterpretation,
20182 source: DefinedElement, target:DefinedElement)
20183{
20184 find interpretation(problem,interpretation);
20185 // The two endpoint of the link have to exist
20186 find mayExist(problem, interpretation, source);
20187 find mayExist(problem, interpretation, target);
20188 // Type consistency
20189 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
20190 find mayInstanceOfInformationLink_class(problem,interpretation,target);
20191 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
20192 // the upper bound of the opposite reference multiplicity should be considered.
20193 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
20194 check(numberOfExistingOppositeReferences < 1);
20195 // The reference is containment, then a new reference cannot be create if:
20196 // 1. Multiple parents
20197 neg find mustContains4(problem,interpretation,_,target);
20198 // 2. Circle in the containment hierarchy
20199 neg find mustTransitiveContains(source,target);
20200} or {
20201 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
20202}
20203/**
20204 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
20205 */
20206private pattern mustInRelationterminator_reference_FunctionalData(
20207 problem:LogicProblem, interpretation:PartialInterpretation,
20208 source: DefinedElement, target:DefinedElement)
20209{
20210 find interpretation(problem,interpretation);
20211 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20212 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
20213 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20214 BinaryElementRelationLink.param1(link,source);
20215 BinaryElementRelationLink.param2(link,target);
20216}
20217/**
20218 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
20219 */
20220private pattern mayInRelationterminator_reference_FunctionalData(
20221 problem:LogicProblem, interpretation:PartialInterpretation,
20222 source: DefinedElement, target:DefinedElement)
20223{
20224 find interpretation(problem,interpretation);
20225 // The two endpoint of the link have to exist
20226 find mayExist(problem, interpretation, source);
20227 find mayExist(problem, interpretation, target);
20228 // Type consistency
20229 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
20230 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
20231 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20232 // the upper bound of the multiplicity should be considered.
20233 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
20234 check(numberOfExistingReferences < 1);
20235 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
20236 // the upper bound of the opposite reference multiplicity should be considered.
20237 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
20238 check(numberOfExistingOppositeReferences < 1);
20239 // The reference is containment, then a new reference cannot be create if:
20240 // 1. Multiple parents
20241 neg find mustContains4(problem,interpretation,_,target);
20242 // 2. Circle in the containment hierarchy
20243 neg find mustTransitiveContains(source,target);
20244} or {
20245 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
20246}
20247/**
20248 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
20249 */
20250private pattern mustInRelationinterface_reference_FunctionalData(
20251 problem:LogicProblem, interpretation:PartialInterpretation,
20252 source: DefinedElement, target:DefinedElement)
20253{
20254 find interpretation(problem,interpretation);
20255 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20256 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
20257 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20258 BinaryElementRelationLink.param1(link,source);
20259 BinaryElementRelationLink.param2(link,target);
20260}
20261/**
20262 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
20263 */
20264private pattern mayInRelationinterface_reference_FunctionalData(
20265 problem:LogicProblem, interpretation:PartialInterpretation,
20266 source: DefinedElement, target:DefinedElement)
20267{
20268 find interpretation(problem,interpretation);
20269 // The two endpoint of the link have to exist
20270 find mayExist(problem, interpretation, source);
20271 find mayExist(problem, interpretation, target);
20272 // Type consistency
20273 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
20274 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
20275 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20276 // the upper bound of the multiplicity should be considered.
20277 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
20278 check(numberOfExistingReferences < 1);
20279 // The eOpposite of the reference is containment, then a referene cannot be created if
20280 // 1. Multiple parents
20281 neg find mustContains4(problem,interpretation,source,_);
20282 // 2. Circle in the containment hierarchy
20283 neg find mustTransitiveContains(source,target);
20284} or {
20285 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
20286}
20287/**
20288 * Matcher for detecting tuples t where []type attribute Function(source,target)
20289 */
20290private pattern mustInRelationtype_attribute_Function(
20291 problem:LogicProblem, interpretation:PartialInterpretation,
20292 source: DefinedElement, target:DefinedElement)
20293{
20294 find interpretation(problem,interpretation);
20295 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20296 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
20297 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
20298 BinaryElementRelationLink.param1(link,source);
20299 BinaryElementRelationLink.param2(link,target);
20300}
20301/**
20302 * Matcher for detecting tuples t where <>type attribute Function(source,target)
20303 */
20304private pattern mayInRelationtype_attribute_Function(
20305 problem:LogicProblem, interpretation:PartialInterpretation,
20306 source: DefinedElement, target:DefinedElement)
20307{
20308 find interpretation(problem,interpretation);
20309 // The two endpoint of the link have to exist
20310 find mayExist(problem, interpretation, source);
20311 find mayExist(problem, interpretation, target);
20312 // Type consistency
20313 find mayInstanceOfFunction_class(problem,interpretation,source);
20314 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
20315 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
20316 // the upper bound of the multiplicity should be considered.
20317 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
20318 check(numberOfExistingReferences < 1);
20319} or {
20320 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
20321}
20322
20323//////////
20324// 1.3 Relation Definition Indexers
20325//////////
20326
20327//////////
20328// 1.4 Containment Indexer
20329//////////
20330private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
20331 find mustContains4(_,_,source,target);
20332}
20333
20334private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
20335 source: DefinedElement, target: DefinedElement)
20336 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
20337
20338 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
20339
20340 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
20341
20342 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
20343
20344 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
20345
20346 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
20347
20348private pattern mustTransitiveContains(source,target) {
20349 find mustContains2+(source,target);
20350}
20351
20352//////////
20353// 2. Invalidation Indexers
20354//////////
20355// 2.1 Invalidated by WF Queries
20356//////////
20357
20358//////////
20359// 3. Unfinishedness Indexers
20360//////////
20361// 3.1 Unfinishedness Measured by Multiplicity
20362//////////
20363pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
20364 find interpretation(problem,interpretation);
20365 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20366 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
20367 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
20368 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
20369 check(numberOfExistingReferences < 1);
20370 missingMultiplicity == eval(1-numberOfExistingReferences);
20371}
20372pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
20373 find interpretation(problem,interpretation);
20374 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20375 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
20376 find mustInstanceOfInformationLink_class(problem,interpretation,object);
20377 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
20378 check(numberOfExistingReferences < 1);
20379 missingMultiplicity == eval(1-numberOfExistingReferences);
20380}
20381pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
20382 find interpretation(problem,interpretation);
20383 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20384 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
20385 find mustInstanceOfFunction_class(problem,interpretation,object);
20386 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
20387 check(numberOfExistingReferences < 1);
20388 missingMultiplicity == eval(1-numberOfExistingReferences);
20389}
20390
20391//////////
20392// 3.2 Unfinishedness Measured by WF Queries
20393//////////
20394
20395//////////
20396// 4. Refinement Indexers
20397//////////
20398// 4.1 Object constructors
20399//////////
20400private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
20401{
20402 find interpretation(problem,interpretation);
20403 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
20404 find mustExist(problem, interpretation, root);
20405}or{
20406 find interpretation(problem,interpretation);
20407 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
20408 find mustExist(problem, interpretation, root);
20409}or{
20410 find interpretation(problem,interpretation);
20411 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
20412 find mustExist(problem, interpretation, root);
20413}or{
20414 find interpretation(problem,interpretation);
20415 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
20416 find mustExist(problem, interpretation, root);
20417}or{
20418 find interpretation(problem,interpretation);
20419 find mustInstanceOfFunction_class(problem,interpretation,root);
20420 find mustExist(problem, interpretation, root);
20421}or{
20422 find interpretation(problem,interpretation);
20423 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
20424 find mustExist(problem, interpretation, root);
20425}or{
20426 find interpretation(problem,interpretation);
20427 find mustInstanceOfInformationLink_class(problem,interpretation,root);
20428 find mustExist(problem, interpretation, root);
20429}or{
20430 find interpretation(problem,interpretation);
20431 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
20432 find mustExist(problem, interpretation, root);
20433}or{
20434 find interpretation(problem,interpretation);
20435 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
20436 find mustExist(problem, interpretation, root);
20437}or{
20438 find interpretation(problem,interpretation);
20439 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
20440 find mustExist(problem, interpretation, root);
20441}or{
20442 find interpretation(problem,interpretation);
20443 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
20444 find mustExist(problem, interpretation, root);
20445}
20446pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
20447 problem:LogicProblem, interpretation:PartialInterpretation,
20448 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20449 container:DefinedElement)
20450{
20451 find interpretation(problem,interpretation);
20452 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20453 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
20454 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20455 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
20456 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20457 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
20458 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
20459 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
20460 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
20461 find mustExist(problem, interpretation, container);
20462 neg find mustExist(problem, interpretation, newObject);
20463}
20464pattern createObject_FunctionalInterface_class(
20465 problem:LogicProblem, interpretation:PartialInterpretation,
20466 typeInterpretation:PartialComplexTypeInterpretation)
20467{
20468 find interpretation(problem,interpretation);
20469 neg find hasElementInContainment(problem,interpretation);
20470 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20471 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
20472 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
20473 find mayExist(problem, interpretation, newObject);
20474 neg find mustExist(problem, interpretation, newObject);
20475}
20476pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
20477 problem:LogicProblem, interpretation:PartialInterpretation,
20478 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20479 container:DefinedElement)
20480{
20481 find interpretation(problem,interpretation);
20482 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20483 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
20484 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20485 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
20486 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
20487 find mayInstanceOfFunction_class(problem,interpretation,newObject);
20488 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
20489 find mustExist(problem, interpretation, container);
20490 neg find mustExist(problem, interpretation, newObject);
20491}
20492pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
20493 problem:LogicProblem, interpretation:PartialInterpretation,
20494 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20495 container:DefinedElement)
20496{
20497 find interpretation(problem,interpretation);
20498 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20499 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
20500 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20501 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
20502 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20503 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
20504 find mustInstanceOfFunction_class(problem,interpretation,container);
20505 find mayInstanceOfFunction_class(problem,interpretation,newObject);
20506 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
20507 find mustExist(problem, interpretation, container);
20508 neg find mustExist(problem, interpretation, newObject);
20509}
20510pattern createObject_Function_class(
20511 problem:LogicProblem, interpretation:PartialInterpretation,
20512 typeInterpretation:PartialComplexTypeInterpretation)
20513{
20514 find interpretation(problem,interpretation);
20515 neg find hasElementInContainment(problem,interpretation);
20516 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20517 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
20518 find mayInstanceOfFunction_class(problem,interpretation,newObject);
20519 find mayExist(problem, interpretation, newObject);
20520 neg find mustExist(problem, interpretation, newObject);
20521}
20522pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
20523 problem:LogicProblem, interpretation:PartialInterpretation,
20524 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20525 container:DefinedElement)
20526{
20527 find interpretation(problem,interpretation);
20528 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20529 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
20530 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20531 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
20532 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20533 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
20534 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
20535 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
20536 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
20537 find mustExist(problem, interpretation, container);
20538 neg find mustExist(problem, interpretation, newObject);
20539}
20540pattern createObject_FunctionalOutput_class(
20541 problem:LogicProblem, interpretation:PartialInterpretation,
20542 typeInterpretation:PartialComplexTypeInterpretation)
20543{
20544 find interpretation(problem,interpretation);
20545 neg find hasElementInContainment(problem,interpretation);
20546 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20547 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
20548 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
20549 find mayExist(problem, interpretation, newObject);
20550 neg find mustExist(problem, interpretation, newObject);
20551}
20552pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
20553 problem:LogicProblem, interpretation:PartialInterpretation,
20554 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20555 container:DefinedElement)
20556{
20557 find interpretation(problem,interpretation);
20558 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20559 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
20560 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20561 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
20562 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20563 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
20564 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
20565 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
20566 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
20567 find mustExist(problem, interpretation, container);
20568 neg find mustExist(problem, interpretation, newObject);
20569}
20570pattern createObject_FunctionalInput_class(
20571 problem:LogicProblem, interpretation:PartialInterpretation,
20572 typeInterpretation:PartialComplexTypeInterpretation)
20573{
20574 find interpretation(problem,interpretation);
20575 neg find hasElementInContainment(problem,interpretation);
20576 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20577 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
20578 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
20579 find mayExist(problem, interpretation, newObject);
20580 neg find mustExist(problem, interpretation, newObject);
20581}
20582pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
20583 problem:LogicProblem, interpretation:PartialInterpretation,
20584 typeInterpretation:PartialComplexTypeInterpretation)
20585{
20586 find interpretation(problem,interpretation);
20587 neg find hasElementInContainment(problem,interpretation);
20588 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20589 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
20590 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
20591 find mayExist(problem, interpretation, newObject);
20592 neg find mustExist(problem, interpretation, newObject);
20593}
20594pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
20595 problem:LogicProblem, interpretation:PartialInterpretation,
20596 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20597 container:DefinedElement)
20598{
20599 find interpretation(problem,interpretation);
20600 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20601 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
20602 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20603 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
20604 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20605 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
20606 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
20607 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
20608 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
20609 find mustExist(problem, interpretation, container);
20610 neg find mustExist(problem, interpretation, newObject);
20611}
20612pattern createObject_InformationLink_class(
20613 problem:LogicProblem, interpretation:PartialInterpretation,
20614 typeInterpretation:PartialComplexTypeInterpretation)
20615{
20616 find interpretation(problem,interpretation);
20617 neg find hasElementInContainment(problem,interpretation);
20618 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20619 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
20620 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
20621 find mayExist(problem, interpretation, newObject);
20622 neg find mustExist(problem, interpretation, newObject);
20623}
20624pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
20625 problem:LogicProblem, interpretation:PartialInterpretation,
20626 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
20627 container:DefinedElement)
20628{
20629 find interpretation(problem,interpretation);
20630 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20631 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
20632 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
20633 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
20634 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
20635 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
20636 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
20637 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
20638 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
20639 find mustExist(problem, interpretation, container);
20640 neg find mustExist(problem, interpretation, newObject);
20641}
20642pattern createObject_FAMTerminator_class(
20643 problem:LogicProblem, interpretation:PartialInterpretation,
20644 typeInterpretation:PartialComplexTypeInterpretation)
20645{
20646 find interpretation(problem,interpretation);
20647 neg find hasElementInContainment(problem,interpretation);
20648 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20649 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
20650 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
20651 find mayExist(problem, interpretation, newObject);
20652 neg find mustExist(problem, interpretation, newObject);
20653}
20654
20655//////////
20656// 4.2 Type refinement
20657//////////
20658pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
20659 find interpretation(problem,interpretation);
20660 PartialInterpretation.newElements(interpretation,element);
20661 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
20662 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20663 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20664 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
20665 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20666 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20667 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20668}
20669pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
20670 find interpretation(problem,interpretation);
20671 PartialInterpretation.newElements(interpretation,element);
20672 find mayInstanceOfFunction_class(problem,interpretation,element);
20673 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20674 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20675 neg find mustInstanceOfFunction_class(problem,interpretation,element);
20676 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20677 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20678 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20679}
20680pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
20681 find interpretation(problem,interpretation);
20682 PartialInterpretation.newElements(interpretation,element);
20683 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
20684 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20685 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
20686 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20687 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
20688 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
20689 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20690 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20691}
20692pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
20693 find interpretation(problem,interpretation);
20694 PartialInterpretation.newElements(interpretation,element);
20695 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
20696 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20697 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
20698 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20699 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
20700 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
20701 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20702 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20703}
20704pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
20705 find interpretation(problem,interpretation);
20706 PartialInterpretation.newElements(interpretation,element);
20707 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
20708 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20709 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
20710 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20711 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
20712 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20713 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20714}
20715pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
20716 find interpretation(problem,interpretation);
20717 PartialInterpretation.newElements(interpretation,element);
20718 find mayInstanceOfInformationLink_class(problem,interpretation,element);
20719 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20720 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20721 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
20722 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20723 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20724 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20725}
20726pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
20727 find interpretation(problem,interpretation);
20728 PartialInterpretation.newElements(interpretation,element);
20729 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
20730 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20731 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20732 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
20733 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20734 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20735 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20736}
20737
20738//////////
20739// 4.3 Relation refinement
20740//////////
20741pattern refineRelation_model_reference_FunctionalElement(
20742 problem:LogicProblem, interpretation:PartialInterpretation,
20743 relationIterpretation:PartialRelationInterpretation,
20744 from: DefinedElement, to: DefinedElement)
20745{
20746 find interpretation(problem,interpretation);
20747 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20748 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
20749 find mustExist(problem, interpretation, from);
20750 find mustExist(problem, interpretation, to);
20751 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
20752 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
20753 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
20754 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
20755}
20756pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
20757 problem:LogicProblem, interpretation:PartialInterpretation,
20758 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
20759 from: DefinedElement, to: DefinedElement)
20760{
20761 find interpretation(problem,interpretation);
20762 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20763 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
20764 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
20765 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
20766 find mustExist(problem, interpretation, from);
20767 find mustExist(problem, interpretation, to);
20768 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
20769 find mustInstanceOfInformationLink_class(problem,interpretation,to);
20770 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
20771 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
20772}
20773pattern refineRelation_type_attribute_Function(
20774 problem:LogicProblem, interpretation:PartialInterpretation,
20775 relationIterpretation:PartialRelationInterpretation,
20776 from: DefinedElement, to: DefinedElement)
20777{
20778 find interpretation(problem,interpretation);
20779 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
20780 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
20781 find mustExist(problem, interpretation, from);
20782 find mustExist(problem, interpretation, to);
20783 find mustInstanceOfFunction_class(problem,interpretation,from);
20784 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
20785 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
20786 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
20787}
20788import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
20789import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
20790import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
20791
20792//////////
20793// 0. Util
20794//////////
20795private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
20796 PartialInterpretation.problem(interpretation,problem);
20797}
20798
20799/////////////////////////
20800// 0.1 Existence
20801/////////////////////////
20802private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
20803 find interpretation(problem,interpretation);
20804 LogicProblem.elements(problem,element);
20805} or {
20806 find interpretation(problem,interpretation);
20807 PartialInterpretation.newElements(interpretation,element);
20808}
20809
20810private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
20811 find mustExist(problem,interpretation,element);
20812} or {
20813 find interpretation(problem,interpretation);
20814 neg find elementCloseWorld(element);
20815 PartialInterpretation.openWorldElements(interpretation,element);
20816}
20817
20818private pattern elementCloseWorld(element:DefinedElement) {
20819 PartialInterpretation.openWorldElements(i,element);
20820 PartialInterpretation.maxNewElements(i,0);
20821} or {
20822 Scope.targetTypeInterpretation(scope,interpretation);
20823 PartialTypeInterpratation.elements(interpretation,element);
20824 Scope.maxNewElements(scope,0);
20825}
20826
20827////////////////////////
20828// 0.2 Equivalence
20829////////////////////////
20830pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
20831 find mayExist(problem,interpretation,a);
20832 find mayExist(problem,interpretation,b);
20833 a == b;
20834}
20835
20836////////////////////////
20837// 0.3 Required Patterns by TypeIndexer
20838////////////////////////
20839private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
20840 find interpretation(problem,interpretation);
20841 LogicProblem.types(problem,type);
20842 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
20843 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
20844}
20845
20846private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
20847 find interpretation(problem,interpretation);
20848 LogicProblem.types(problem,type);
20849 TypeDefinition.elements(type,element);
20850} or {
20851 find interpretation(problem,interpretation);
20852 find typeInterpretation(problem,interpretation,type,typeInterpretation);
20853 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
20854}
20855
20856private pattern isPrimitive(element: PrimitiveElement) {
20857 PrimitiveElement(element);
20858}
20859
20860//////////
20861// 1. Problem-Specific Base Indexers
20862//////////
20863// 1.1 Type Indexers
20864//////////
20865// 1.1.1 primitive Type Indexers
20866//////////
20867
20868//////////
20869// 1.1.2 domain-specific Type Indexers
20870//////////
20871/**
20872 * An element must be an instance of type "FunctionalElement class".
20873 */
20874private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
20875 Type.name(type,"FunctionalElement class");
20876 find directInstanceOf(problem,interpretation,element,type);
20877}
20878private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
20879 find interpretation(problem,interpretation);
20880 PartialInterpretation.scopes(interpretation,scope);
20881 Scope.targetTypeInterpretation(scope,typeInterpretation);
20882 Scope.maxNewElements(scope,0);
20883 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
20884 Type.name(type,"FunctionalElement class");
20885}
20886
20887/**
20888 * An element may be an instance of type "FunctionalElement class".
20889 */
20890private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
20891{
20892 find interpretation(problem,interpretation);
20893 PartialInterpretation.newElements(interpretation,element);
20894 neg find mustInstanceOfFunction_class(problem,interpretation,element);
20895 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20896 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20897 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20898 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20899 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20900 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
20901 neg find isPrimitive(element);
20902} or {
20903 find interpretation(problem,interpretation);
20904 PartialInterpretation.openWorldElements(interpretation,element);
20905 neg find mustInstanceOfFunction_class(problem,interpretation,element);
20906 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20907 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20908 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20909 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20910 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20911 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
20912 neg find isPrimitive(element);
20913} or
20914{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
20915/**
20916 * An element must be an instance of type "FunctionalArchitectureModel class".
20917 */
20918private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
20919 Type.name(type,"FunctionalArchitectureModel class");
20920 find directInstanceOf(problem,interpretation,element,type);
20921}
20922private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
20923 find interpretation(problem,interpretation);
20924 PartialInterpretation.scopes(interpretation,scope);
20925 Scope.targetTypeInterpretation(scope,typeInterpretation);
20926 Scope.maxNewElements(scope,0);
20927 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
20928 Type.name(type,"FunctionalArchitectureModel class");
20929}
20930
20931/**
20932 * An element may be an instance of type "FunctionalArchitectureModel class".
20933 */
20934private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
20935{
20936 find interpretation(problem,interpretation);
20937 PartialInterpretation.newElements(interpretation,element);
20938 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20939 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
20940 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20941 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20942 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
20943 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20944 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
20945 neg find isPrimitive(element);
20946} or {
20947 find interpretation(problem,interpretation);
20948 PartialInterpretation.openWorldElements(interpretation,element);
20949 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20950 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
20951 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20952 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20953 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
20954 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20955 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
20956 neg find isPrimitive(element);
20957} or
20958{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
20959/**
20960 * An element must be an instance of type "Function class".
20961 */
20962private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
20963 Type.name(type,"Function class");
20964 find directInstanceOf(problem,interpretation,element,type);
20965}
20966private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
20967 find interpretation(problem,interpretation);
20968 PartialInterpretation.scopes(interpretation,scope);
20969 Scope.targetTypeInterpretation(scope,typeInterpretation);
20970 Scope.maxNewElements(scope,0);
20971 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
20972 Type.name(type,"Function class");
20973}
20974
20975/**
20976 * An element may be an instance of type "Function class".
20977 */
20978private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
20979{
20980 find interpretation(problem,interpretation);
20981 PartialInterpretation.newElements(interpretation,element);
20982 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20983 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20984 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20985 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20986 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20987 neg find scopeDisallowsNewFunction_class(problem, interpretation);
20988 neg find isPrimitive(element);
20989} or {
20990 find interpretation(problem,interpretation);
20991 PartialInterpretation.openWorldElements(interpretation,element);
20992 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
20993 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
20994 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
20995 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
20996 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
20997 neg find scopeDisallowsNewFunction_class(problem, interpretation);
20998 neg find isPrimitive(element);
20999} or
21000{ find mustInstanceOfFunction_class(problem,interpretation,element); }
21001/**
21002 * An element must be an instance of type "FAMTerminator class".
21003 */
21004private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
21005 Type.name(type,"FAMTerminator class");
21006 find directInstanceOf(problem,interpretation,element,type);
21007}
21008private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
21009 find interpretation(problem,interpretation);
21010 PartialInterpretation.scopes(interpretation,scope);
21011 Scope.targetTypeInterpretation(scope,typeInterpretation);
21012 Scope.maxNewElements(scope,0);
21013 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
21014 Type.name(type,"FAMTerminator class");
21015}
21016
21017/**
21018 * An element may be an instance of type "FAMTerminator class".
21019 */
21020private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
21021{
21022 find interpretation(problem,interpretation);
21023 PartialInterpretation.newElements(interpretation,element);
21024 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21025 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21026 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
21027 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21028 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21029 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
21030 neg find isPrimitive(element);
21031} or {
21032 find interpretation(problem,interpretation);
21033 PartialInterpretation.openWorldElements(interpretation,element);
21034 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21035 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21036 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
21037 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21038 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21039 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
21040 neg find isPrimitive(element);
21041} or
21042{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
21043/**
21044 * An element must be an instance of type "InformationLink class".
21045 */
21046private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
21047 Type.name(type,"InformationLink class");
21048 find directInstanceOf(problem,interpretation,element,type);
21049}
21050private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
21051 find interpretation(problem,interpretation);
21052 PartialInterpretation.scopes(interpretation,scope);
21053 Scope.targetTypeInterpretation(scope,typeInterpretation);
21054 Scope.maxNewElements(scope,0);
21055 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
21056 Type.name(type,"InformationLink class");
21057}
21058
21059/**
21060 * An element may be an instance of type "InformationLink class".
21061 */
21062private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
21063{
21064 find interpretation(problem,interpretation);
21065 PartialInterpretation.newElements(interpretation,element);
21066 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21067 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21068 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21069 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
21070 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21071 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
21072 neg find isPrimitive(element);
21073} or {
21074 find interpretation(problem,interpretation);
21075 PartialInterpretation.openWorldElements(interpretation,element);
21076 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21077 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21078 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21079 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
21080 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21081 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
21082 neg find isPrimitive(element);
21083} or
21084{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
21085/**
21086 * An element must be an instance of type "FunctionalInterface class".
21087 */
21088private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
21089 Type.name(type,"FunctionalInterface class");
21090 find directInstanceOf(problem,interpretation,element,type);
21091}
21092private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
21093 find interpretation(problem,interpretation);
21094 PartialInterpretation.scopes(interpretation,scope);
21095 Scope.targetTypeInterpretation(scope,typeInterpretation);
21096 Scope.maxNewElements(scope,0);
21097 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
21098 Type.name(type,"FunctionalInterface class");
21099}
21100
21101/**
21102 * An element may be an instance of type "FunctionalInterface class".
21103 */
21104private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
21105{
21106 find interpretation(problem,interpretation);
21107 PartialInterpretation.newElements(interpretation,element);
21108 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21109 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21110 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
21111 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21112 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21113 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
21114 neg find isPrimitive(element);
21115} or {
21116 find interpretation(problem,interpretation);
21117 PartialInterpretation.openWorldElements(interpretation,element);
21118 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21119 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21120 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
21121 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21122 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21123 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
21124 neg find isPrimitive(element);
21125} or
21126{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
21127/**
21128 * An element must be an instance of type "FunctionalInput class".
21129 */
21130private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
21131 Type.name(type,"FunctionalInput class");
21132 find directInstanceOf(problem,interpretation,element,type);
21133}
21134private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
21135 find interpretation(problem,interpretation);
21136 PartialInterpretation.scopes(interpretation,scope);
21137 Scope.targetTypeInterpretation(scope,typeInterpretation);
21138 Scope.maxNewElements(scope,0);
21139 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
21140 Type.name(type,"FunctionalInput class");
21141}
21142
21143/**
21144 * An element may be an instance of type "FunctionalInput class".
21145 */
21146private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
21147{
21148 find interpretation(problem,interpretation);
21149 PartialInterpretation.newElements(interpretation,element);
21150 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21151 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21152 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21153 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21154 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
21155 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21156 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
21157 neg find isPrimitive(element);
21158} or {
21159 find interpretation(problem,interpretation);
21160 PartialInterpretation.openWorldElements(interpretation,element);
21161 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21162 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21163 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21164 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21165 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
21166 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21167 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
21168 neg find isPrimitive(element);
21169} or
21170{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
21171/**
21172 * An element must be an instance of type "FunctionalOutput class".
21173 */
21174private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
21175 Type.name(type,"FunctionalOutput class");
21176 find directInstanceOf(problem,interpretation,element,type);
21177}
21178private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
21179 find interpretation(problem,interpretation);
21180 PartialInterpretation.scopes(interpretation,scope);
21181 Scope.targetTypeInterpretation(scope,typeInterpretation);
21182 Scope.maxNewElements(scope,0);
21183 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
21184 Type.name(type,"FunctionalOutput class");
21185}
21186
21187/**
21188 * An element may be an instance of type "FunctionalOutput class".
21189 */
21190private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
21191{
21192 find interpretation(problem,interpretation);
21193 PartialInterpretation.newElements(interpretation,element);
21194 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21195 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21196 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21197 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21198 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
21199 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21200 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
21201 neg find isPrimitive(element);
21202} or {
21203 find interpretation(problem,interpretation);
21204 PartialInterpretation.openWorldElements(interpretation,element);
21205 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21206 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21207 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21208 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21209 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
21210 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21211 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
21212 neg find isPrimitive(element);
21213} or
21214{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
21215/**
21216 * An element must be an instance of type "FunctionalData class".
21217 */
21218private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
21219 Type.name(type,"FunctionalData class");
21220 find directInstanceOf(problem,interpretation,element,type);
21221}
21222private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
21223 find interpretation(problem,interpretation);
21224 PartialInterpretation.scopes(interpretation,scope);
21225 Scope.targetTypeInterpretation(scope,typeInterpretation);
21226 Scope.maxNewElements(scope,0);
21227 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
21228 Type.name(type,"FunctionalData class");
21229}
21230
21231/**
21232 * An element may be an instance of type "FunctionalData class".
21233 */
21234private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
21235{
21236 find interpretation(problem,interpretation);
21237 PartialInterpretation.newElements(interpretation,element);
21238 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21239 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21240 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21241 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21242 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
21243 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
21244 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21245 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
21246 neg find isPrimitive(element);
21247} or {
21248 find interpretation(problem,interpretation);
21249 PartialInterpretation.openWorldElements(interpretation,element);
21250 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21251 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21252 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21253 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21254 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
21255 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
21256 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
21257 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
21258 neg find isPrimitive(element);
21259} or
21260{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
21261/**
21262 * An element must be an instance of type "FunctionType enum".
21263 */
21264private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
21265 Type.name(type,"FunctionType enum");
21266 find directInstanceOf(problem,interpretation,element,type);
21267}
21268private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
21269 find interpretation(problem,interpretation);
21270 PartialInterpretation.scopes(interpretation,scope);
21271 Scope.targetTypeInterpretation(scope,typeInterpretation);
21272 Scope.maxNewElements(scope,0);
21273 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
21274 Type.name(type,"FunctionType enum");
21275}
21276
21277/**
21278 * An element may be an instance of type "FunctionType enum".
21279 */
21280private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
21281{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
21282/**
21283 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
21284 */
21285private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
21286 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
21287 find directInstanceOf(problem,interpretation,element,type);
21288}
21289private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
21290 find interpretation(problem,interpretation);
21291 PartialInterpretation.scopes(interpretation,scope);
21292 Scope.targetTypeInterpretation(scope,typeInterpretation);
21293 Scope.maxNewElements(scope,0);
21294 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
21295 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
21296}
21297
21298/**
21299 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
21300 */
21301private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
21302{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
21303/**
21304 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
21305 */
21306private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
21307 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
21308 find directInstanceOf(problem,interpretation,element,type);
21309}
21310private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
21311 find interpretation(problem,interpretation);
21312 PartialInterpretation.scopes(interpretation,scope);
21313 Scope.targetTypeInterpretation(scope,typeInterpretation);
21314 Scope.maxNewElements(scope,0);
21315 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
21316 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
21317}
21318
21319/**
21320 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
21321 */
21322private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
21323{
21324 find interpretation(problem,interpretation);
21325 PartialInterpretation.newElements(interpretation,element);
21326 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21327 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21328 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21329 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
21330 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21331 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
21332 neg find isPrimitive(element);
21333} or {
21334 find interpretation(problem,interpretation);
21335 PartialInterpretation.openWorldElements(interpretation,element);
21336 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
21337 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
21338 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
21339 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
21340 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
21341 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
21342 neg find isPrimitive(element);
21343} or
21344{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
21345
21346//////////
21347// 1.2 Relation Declaration Indexers
21348//////////
21349/**
21350 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
21351 */
21352private pattern mustInRelationinterface_reference_FunctionalElement(
21353 problem:LogicProblem, interpretation:PartialInterpretation,
21354 source: DefinedElement, target:DefinedElement)
21355{
21356 find interpretation(problem,interpretation);
21357 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21358 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
21359 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21360 BinaryElementRelationLink.param1(link,source);
21361 BinaryElementRelationLink.param2(link,target);
21362}
21363/**
21364 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
21365 */
21366private pattern mayInRelationinterface_reference_FunctionalElement(
21367 problem:LogicProblem, interpretation:PartialInterpretation,
21368 source: DefinedElement, target:DefinedElement)
21369{
21370 find interpretation(problem,interpretation);
21371 // The two endpoint of the link have to exist
21372 find mayExist(problem, interpretation, source);
21373 find mayExist(problem, interpretation, target);
21374 // Type consistency
21375 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
21376 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
21377 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
21378 // the upper bound of the multiplicity should be considered.
21379 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
21380 check(numberOfExistingReferences < 1);
21381 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
21382 // the upper bound of the opposite reference multiplicity should be considered.
21383 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
21384 check(numberOfExistingOppositeReferences < 1);
21385 // The reference is containment, then a new reference cannot be create if:
21386 // 1. Multiple parents
21387 neg find mustContains4(problem,interpretation,_,target);
21388 // 2. Circle in the containment hierarchy
21389 neg find mustTransitiveContains(source,target);
21390} or {
21391 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
21392}
21393/**
21394 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
21395 */
21396 private pattern mustInRelationmodel_reference_FunctionalElement(
21397 problem:LogicProblem, interpretation:PartialInterpretation,
21398 source: DefinedElement, target:DefinedElement)
21399 {
21400 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
21401 }
21402/**
21403 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
21404 */
21405 private pattern mayInRelationmodel_reference_FunctionalElement(
21406 problem:LogicProblem, interpretation:PartialInterpretation,
21407 source: DefinedElement, target:DefinedElement)
21408 {
21409 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(problem,interpretation,source,target);
21410 }
21411/**
21412 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
21413 */
21414private pattern mustInRelationparent_reference_FunctionalElement(
21415 problem:LogicProblem, interpretation:PartialInterpretation,
21416 source: DefinedElement, target:DefinedElement)
21417{
21418 find interpretation(problem,interpretation);
21419 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21420 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
21421 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21422 BinaryElementRelationLink.param1(link,source);
21423 BinaryElementRelationLink.param2(link,target);
21424}
21425/**
21426 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
21427 */
21428private pattern mayInRelationparent_reference_FunctionalElement(
21429 problem:LogicProblem, interpretation:PartialInterpretation,
21430 source: DefinedElement, target:DefinedElement)
21431{
21432 find interpretation(problem,interpretation);
21433 // The two endpoint of the link have to exist
21434 find mayExist(problem, interpretation, source);
21435 find mayExist(problem, interpretation, target);
21436 // Type consistency
21437 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
21438 find mayInstanceOfFunction_class(problem,interpretation,target);
21439 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
21440 // the upper bound of the multiplicity should be considered.
21441 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
21442 check(numberOfExistingReferences < 1);
21443 // The eOpposite of the reference is containment, then a referene cannot be created if
21444 // 1. Multiple parents
21445 neg find mustContains4(problem,interpretation,source,_);
21446 // 2. Circle in the containment hierarchy
21447 neg find mustTransitiveContains(source,target);
21448} or {
21449 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
21450}
21451/**
21452 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
21453 */
21454private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
21455 problem:LogicProblem, interpretation:PartialInterpretation,
21456 source: DefinedElement, target:DefinedElement)
21457{
21458 find interpretation(problem,interpretation);
21459 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21460 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
21461 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21462 BinaryElementRelationLink.param1(link,source);
21463 BinaryElementRelationLink.param2(link,target);
21464}
21465/**
21466 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
21467 */
21468private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
21469 problem:LogicProblem, interpretation:PartialInterpretation,
21470 source: DefinedElement, target:DefinedElement)
21471{
21472 find interpretation(problem,interpretation);
21473 // The two endpoint of the link have to exist
21474 find mayExist(problem, interpretation, source);
21475 find mayExist(problem, interpretation, target);
21476 // Type consistency
21477 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
21478 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
21479 // The reference is containment, then a new reference cannot be create if:
21480 // 1. Multiple parents
21481 neg find mustContains4(problem,interpretation,_,target);
21482 // 2. Circle in the containment hierarchy
21483 neg find mustTransitiveContains(source,target);
21484} or {
21485 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
21486}
21487/**
21488 * Matcher for detecting tuples t where []subElements reference Function(source,target)
21489 */
21490private pattern mustInRelationsubElements_reference_Function(
21491 problem:LogicProblem, interpretation:PartialInterpretation,
21492 source: DefinedElement, target:DefinedElement)
21493{
21494 find interpretation(problem,interpretation);
21495 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21496 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
21497 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21498 BinaryElementRelationLink.param1(link,source);
21499 BinaryElementRelationLink.param2(link,target);
21500}
21501/**
21502 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
21503 */
21504private pattern mayInRelationsubElements_reference_Function(
21505 problem:LogicProblem, interpretation:PartialInterpretation,
21506 source: DefinedElement, target:DefinedElement)
21507{
21508 find interpretation(problem,interpretation);
21509 // The two endpoint of the link have to exist
21510 find mayExist(problem, interpretation, source);
21511 find mayExist(problem, interpretation, target);
21512 // Type consistency
21513 find mayInstanceOfFunction_class(problem,interpretation,source);
21514 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
21515 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
21516 // the upper bound of the opposite reference multiplicity should be considered.
21517 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
21518 check(numberOfExistingOppositeReferences < 1);
21519 // The reference is containment, then a new reference cannot be create if:
21520 // 1. Multiple parents
21521 neg find mustContains4(problem,interpretation,_,target);
21522 // 2. Circle in the containment hierarchy
21523 neg find mustTransitiveContains(source,target);
21524} or {
21525 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
21526}
21527/**
21528 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
21529 */
21530private pattern mustInRelationdata_reference_FAMTerminator(
21531 problem:LogicProblem, interpretation:PartialInterpretation,
21532 source: DefinedElement, target:DefinedElement)
21533{
21534 find interpretation(problem,interpretation);
21535 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21536 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
21537 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21538 BinaryElementRelationLink.param1(link,source);
21539 BinaryElementRelationLink.param2(link,target);
21540}
21541/**
21542 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
21543 */
21544private pattern mayInRelationdata_reference_FAMTerminator(
21545 problem:LogicProblem, interpretation:PartialInterpretation,
21546 source: DefinedElement, target:DefinedElement)
21547{
21548 find interpretation(problem,interpretation);
21549 // The two endpoint of the link have to exist
21550 find mayExist(problem, interpretation, source);
21551 find mayExist(problem, interpretation, target);
21552 // Type consistency
21553 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
21554 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
21555 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
21556 // the upper bound of the multiplicity should be considered.
21557 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
21558 check(numberOfExistingReferences < 1);
21559 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
21560 // the upper bound of the opposite reference multiplicity should be considered.
21561 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
21562 check(numberOfExistingOppositeReferences < 1);
21563 // The eOpposite of the reference is containment, then a referene cannot be created if
21564 // 1. Multiple parents
21565 neg find mustContains4(problem,interpretation,source,_);
21566 // 2. Circle in the containment hierarchy
21567 neg find mustTransitiveContains(source,target);
21568} or {
21569 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
21570}
21571/**
21572 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
21573 */
21574private pattern mustInRelationfrom_reference_InformationLink(
21575 problem:LogicProblem, interpretation:PartialInterpretation,
21576 source: DefinedElement, target:DefinedElement)
21577{
21578 find interpretation(problem,interpretation);
21579 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21580 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
21581 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21582 BinaryElementRelationLink.param1(link,source);
21583 BinaryElementRelationLink.param2(link,target);
21584}
21585/**
21586 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
21587 */
21588private pattern mayInRelationfrom_reference_InformationLink(
21589 problem:LogicProblem, interpretation:PartialInterpretation,
21590 source: DefinedElement, target:DefinedElement)
21591{
21592 find interpretation(problem,interpretation);
21593 // The two endpoint of the link have to exist
21594 find mayExist(problem, interpretation, source);
21595 find mayExist(problem, interpretation, target);
21596 // Type consistency
21597 find mayInstanceOfInformationLink_class(problem,interpretation,source);
21598 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
21599 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
21600 // the upper bound of the multiplicity should be considered.
21601 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
21602 check(numberOfExistingReferences < 1);
21603 // The eOpposite of the reference is containment, then a referene cannot be created if
21604 // 1. Multiple parents
21605 neg find mustContains4(problem,interpretation,source,_);
21606 // 2. Circle in the containment hierarchy
21607 neg find mustTransitiveContains(source,target);
21608} or {
21609 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
21610}
21611/**
21612 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
21613 */
21614private pattern mustInRelationto_reference_InformationLink(
21615 problem:LogicProblem, interpretation:PartialInterpretation,
21616 source: DefinedElement, target:DefinedElement)
21617{
21618 find interpretation(problem,interpretation);
21619 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21620 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
21621 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21622 BinaryElementRelationLink.param1(link,source);
21623 BinaryElementRelationLink.param2(link,target);
21624}
21625/**
21626 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
21627 */
21628private pattern mayInRelationto_reference_InformationLink(
21629 problem:LogicProblem, interpretation:PartialInterpretation,
21630 source: DefinedElement, target:DefinedElement)
21631{
21632 find interpretation(problem,interpretation);
21633 // The two endpoint of the link have to exist
21634 find mayExist(problem, interpretation, source);
21635 find mayExist(problem, interpretation, target);
21636 // Type consistency
21637 find mayInstanceOfInformationLink_class(problem,interpretation,source);
21638 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
21639 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
21640 // the upper bound of the multiplicity should be considered.
21641 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
21642 check(numberOfExistingReferences < 1);
21643} or {
21644 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
21645}
21646/**
21647 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
21648 */
21649private pattern mustInRelationdata_reference_FunctionalInterface(
21650 problem:LogicProblem, interpretation:PartialInterpretation,
21651 source: DefinedElement, target:DefinedElement)
21652{
21653 find interpretation(problem,interpretation);
21654 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21655 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
21656 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21657 BinaryElementRelationLink.param1(link,source);
21658 BinaryElementRelationLink.param2(link,target);
21659}
21660/**
21661 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
21662 */
21663private pattern mayInRelationdata_reference_FunctionalInterface(
21664 problem:LogicProblem, interpretation:PartialInterpretation,
21665 source: DefinedElement, target:DefinedElement)
21666{
21667 find interpretation(problem,interpretation);
21668 // The two endpoint of the link have to exist
21669 find mayExist(problem, interpretation, source);
21670 find mayExist(problem, interpretation, target);
21671 // Type consistency
21672 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
21673 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
21674 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
21675 // the upper bound of the opposite reference multiplicity should be considered.
21676 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
21677 check(numberOfExistingOppositeReferences < 1);
21678 // The reference is containment, then a new reference cannot be create if:
21679 // 1. Multiple parents
21680 neg find mustContains4(problem,interpretation,_,target);
21681 // 2. Circle in the containment hierarchy
21682 neg find mustTransitiveContains(source,target);
21683} or {
21684 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
21685}
21686/**
21687 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
21688 */
21689private pattern mustInRelationelement_reference_FunctionalInterface(
21690 problem:LogicProblem, interpretation:PartialInterpretation,
21691 source: DefinedElement, target:DefinedElement)
21692{
21693 find interpretation(problem,interpretation);
21694 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21695 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
21696 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21697 BinaryElementRelationLink.param1(link,source);
21698 BinaryElementRelationLink.param2(link,target);
21699}
21700/**
21701 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
21702 */
21703private pattern mayInRelationelement_reference_FunctionalInterface(
21704 problem:LogicProblem, interpretation:PartialInterpretation,
21705 source: DefinedElement, target:DefinedElement)
21706{
21707 find interpretation(problem,interpretation);
21708 // The two endpoint of the link have to exist
21709 find mayExist(problem, interpretation, source);
21710 find mayExist(problem, interpretation, target);
21711 // Type consistency
21712 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
21713 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
21714 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
21715 // the upper bound of the multiplicity should be considered.
21716 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
21717 check(numberOfExistingReferences < 1);
21718 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
21719 // the upper bound of the opposite reference multiplicity should be considered.
21720 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
21721 check(numberOfExistingOppositeReferences < 1);
21722 // The eOpposite of the reference is containment, then a referene cannot be created if
21723 // 1. Multiple parents
21724 neg find mustContains4(problem,interpretation,source,_);
21725 // 2. Circle in the containment hierarchy
21726 neg find mustTransitiveContains(source,target);
21727} or {
21728 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
21729}
21730/**
21731 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
21732 */
21733private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
21734 problem:LogicProblem, interpretation:PartialInterpretation,
21735 source: DefinedElement, target:DefinedElement)
21736{
21737 find interpretation(problem,interpretation);
21738 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21739 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
21740 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21741 BinaryElementRelationLink.param1(link,source);
21742 BinaryElementRelationLink.param2(link,target);
21743}
21744/**
21745 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
21746 */
21747private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
21748 problem:LogicProblem, interpretation:PartialInterpretation,
21749 source: DefinedElement, target:DefinedElement)
21750{
21751 find interpretation(problem,interpretation);
21752 // The two endpoint of the link have to exist
21753 find mayExist(problem, interpretation, source);
21754 find mayExist(problem, interpretation, target);
21755 // Type consistency
21756 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
21757 find mayInstanceOfInformationLink_class(problem,interpretation,target);
21758 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
21759 // the upper bound of the opposite reference multiplicity should be considered.
21760 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
21761 check(numberOfExistingOppositeReferences < 1);
21762} or {
21763 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
21764}
21765/**
21766 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
21767 */
21768private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
21769 problem:LogicProblem, interpretation:PartialInterpretation,
21770 source: DefinedElement, target:DefinedElement)
21771{
21772 find interpretation(problem,interpretation);
21773 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21774 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
21775 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21776 BinaryElementRelationLink.param1(link,source);
21777 BinaryElementRelationLink.param2(link,target);
21778}
21779/**
21780 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
21781 */
21782private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
21783 problem:LogicProblem, interpretation:PartialInterpretation,
21784 source: DefinedElement, target:DefinedElement)
21785{
21786 find interpretation(problem,interpretation);
21787 // The two endpoint of the link have to exist
21788 find mayExist(problem, interpretation, source);
21789 find mayExist(problem, interpretation, target);
21790 // Type consistency
21791 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
21792 find mayInstanceOfInformationLink_class(problem,interpretation,target);
21793 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
21794 // the upper bound of the opposite reference multiplicity should be considered.
21795 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
21796 check(numberOfExistingOppositeReferences < 1);
21797 // The reference is containment, then a new reference cannot be create if:
21798 // 1. Multiple parents
21799 neg find mustContains4(problem,interpretation,_,target);
21800 // 2. Circle in the containment hierarchy
21801 neg find mustTransitiveContains(source,target);
21802} or {
21803 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
21804}
21805/**
21806 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
21807 */
21808private pattern mustInRelationterminator_reference_FunctionalData(
21809 problem:LogicProblem, interpretation:PartialInterpretation,
21810 source: DefinedElement, target:DefinedElement)
21811{
21812 find interpretation(problem,interpretation);
21813 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21814 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
21815 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21816 BinaryElementRelationLink.param1(link,source);
21817 BinaryElementRelationLink.param2(link,target);
21818}
21819/**
21820 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
21821 */
21822private pattern mayInRelationterminator_reference_FunctionalData(
21823 problem:LogicProblem, interpretation:PartialInterpretation,
21824 source: DefinedElement, target:DefinedElement)
21825{
21826 find interpretation(problem,interpretation);
21827 // The two endpoint of the link have to exist
21828 find mayExist(problem, interpretation, source);
21829 find mayExist(problem, interpretation, target);
21830 // Type consistency
21831 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
21832 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
21833 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
21834 // the upper bound of the multiplicity should be considered.
21835 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
21836 check(numberOfExistingReferences < 1);
21837 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
21838 // the upper bound of the opposite reference multiplicity should be considered.
21839 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
21840 check(numberOfExistingOppositeReferences < 1);
21841 // The reference is containment, then a new reference cannot be create if:
21842 // 1. Multiple parents
21843 neg find mustContains4(problem,interpretation,_,target);
21844 // 2. Circle in the containment hierarchy
21845 neg find mustTransitiveContains(source,target);
21846} or {
21847 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
21848}
21849/**
21850 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
21851 */
21852private pattern mustInRelationinterface_reference_FunctionalData(
21853 problem:LogicProblem, interpretation:PartialInterpretation,
21854 source: DefinedElement, target:DefinedElement)
21855{
21856 find interpretation(problem,interpretation);
21857 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
21858 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
21859 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
21860 BinaryElementRelationLink.param1(link,source);
21861 BinaryElementRelationLink.param2(link,target);
21862}
21863/**
21864 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
21865 */
21866private pattern mayInRelationinterface_reference_FunctionalData(
21867 problem:LogicProblem, interpretation:PartialInterpretation,
21868 source: DefinedElement, target:DefinedElement)
21869{
21870 find interpretation(problem,interpretation);
21871 // The two endpoint of the link have to exist
21872 find mayExist(problem, interpretation, source);
21873 find mayExist(problem, interpretation, target);
21874 // Type consistency
21875 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
21876 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
21877 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
21878 // the upper bound of the multiplicity should be considered.
21879 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
21880 check(numberOfExistingReferences < 1);
21881 // The eOpposite of the reference is containment, then a referene cannot be created if
21882 // 1. Multiple parents
21883 neg find mustContains4(problem,interpretation,source,_);
21884 // 2. Circle in the containment hierarchy
21885 neg find mustTransitiveContains(source,target);
21886} or {
21887 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
21888}
21889/**
21890 * Matcher for detecting tuples t where []type attribute Function(source,target)
21891 */
21892 private pattern mustInRelationtype_attribute_Function(
21893 problem:LogicProblem, interpretation:PartialInterpretation,
21894 source: DefinedElement, target:DefinedElement)
21895 {
21896 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
21897 }
21898/**
21899 * Matcher for detecting tuples t where []type attribute Function(source,target)
21900 */
21901 private pattern mayInRelationtype_attribute_Function(
21902 problem:LogicProblem, interpretation:PartialInterpretation,
21903 source: DefinedElement, target:DefinedElement)
21904 {
21905 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(problem,interpretation,source,target);
21906 }
21907
21908//////////
21909// 1.3 Relation Definition Indexers
21910//////////
21911// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam terminatorAndInformation
21912private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
21913 problem:LogicProblem, interpretation:PartialInterpretation,
21914 var_T, var_I)
21915{
21916 find interpretation(problem,interpretation);
21917 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
21918 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
21919 // T is exported
21920 // I is exported
21921 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
21922 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
21923 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
21924 var_virtual0 == var_I;
21925 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
21926 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
21927 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
21928 var_virtual1 == var_T;
21929}or{
21930 find interpretation(problem,interpretation);
21931 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
21932 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
21933 // T is exported
21934 // I is exported
21935 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
21936 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
21937 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
21938 var_virtual0 == var_In;
21939 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
21940 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
21941 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
21942 var_virtual1 == var_T;
21943}
21944private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
21945 problem:LogicProblem, interpretation:PartialInterpretation,
21946 var_T, var_I)
21947{
21948 find interpretation(problem,interpretation);
21949 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
21950 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
21951 // T is exported
21952 // I is exported
21953 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
21954 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
21955 find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
21956 find mayEquivalent(problem, interpretation, var_virtual0, var_I);
21957 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
21958 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
21959 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
21960 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
21961}or{
21962 find interpretation(problem,interpretation);
21963 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
21964 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
21965 // T is exported
21966 // I is exported
21967 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
21968 find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
21969 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
21970 find mayEquivalent(problem, interpretation, var_virtual0, var_In);
21971 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In);
21972 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
21973 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
21974 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
21975}
21976private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(
21977 problem:LogicProblem, interpretation:PartialInterpretation,
21978 var_T, var_I)
21979{
21980 find interpretation(problem,interpretation);
21981 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
21982 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
21983 // T is exported
21984 // I is exported
21985 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
21986 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
21987 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
21988 var_virtual0 == var_I;
21989 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
21990 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
21991 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
21992 var_virtual1 == var_T;
21993}or{
21994 find interpretation(problem,interpretation);
21995 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
21996 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
21997 // T is exported
21998 // I is exported
21999 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
22000 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
22001 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
22002 var_virtual0 == var_In;
22003 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
22004 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
22005 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
22006 var_virtual1 == var_T;
22007}
22008// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam type
22009private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
22010 problem:LogicProblem, interpretation:PartialInterpretation,
22011 var_This, var_Target)
22012{
22013 find interpretation(problem,interpretation);
22014 find mustInstanceOfFunction_class(problem,interpretation,var_This);
22015 // type constraint is enforced by construction
22016 // This is exported
22017 // Target is exported
22018 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
22019 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
22020 var_Target == var_virtual0;
22021}or{
22022 find interpretation(problem,interpretation);
22023 find mustInstanceOfFunction_class(problem,interpretation,var_This);
22024 // type constraint is enforced by construction
22025 // This is exported
22026 // Target is exported
22027 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
22028 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
22029 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
22030 var_Target == var_virtual0;
22031}or{
22032 find interpretation(problem,interpretation);
22033 find mustInstanceOfFunction_class(problem,interpretation,var_This);
22034 // type constraint is enforced by construction
22035 // This is exported
22036 // Target is exported
22037 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
22038 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
22039 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
22040 var_Target == var_virtual0;
22041}
22042private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
22043 problem:LogicProblem, interpretation:PartialInterpretation,
22044 var_This, var_Target)
22045{
22046 find interpretation(problem,interpretation);
22047 find mayInstanceOfFunction_class(problem,interpretation,var_This);
22048 // type constraint is enforced by construction
22049 // This is exported
22050 // Target is exported
22051 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
22052 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
22053 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
22054}or{
22055 find interpretation(problem,interpretation);
22056 find mayInstanceOfFunction_class(problem,interpretation,var_This);
22057 // type constraint is enforced by construction
22058 // This is exported
22059 // Target is exported
22060 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
22061 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
22062 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
22063 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
22064}or{
22065 find interpretation(problem,interpretation);
22066 find mayInstanceOfFunction_class(problem,interpretation,var_This);
22067 // type constraint is enforced by construction
22068 // This is exported
22069 // Target is exported
22070 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
22071 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
22072 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
22073 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
22074}
22075private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_type(
22076 problem:LogicProblem, interpretation:PartialInterpretation,
22077 var_This, var_Target)
22078{
22079 find interpretation(problem,interpretation);
22080 find mustInstanceOfFunction_class(problem,interpretation,var_This);
22081 // type constraint is enforced by construction
22082 // This is exported
22083 // Target is exported
22084 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
22085 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
22086 var_Target == var_virtual0;
22087}or{
22088 find interpretation(problem,interpretation);
22089 find mustInstanceOfFunction_class(problem,interpretation,var_This);
22090 // type constraint is enforced by construction
22091 // This is exported
22092 // Target is exported
22093 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
22094 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(problem,interpretation,_var__Model,var_This);
22095 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
22096 var_Target == var_virtual0;
22097}or{
22098 find interpretation(problem,interpretation);
22099 find mustInstanceOfFunction_class(problem,interpretation,var_This);
22100 // type constraint is enforced by construction
22101 // This is exported
22102 // Target is exported
22103 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,var_This,_var__Par);
22104 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(problem,interpretation,_var__Child,var_This);
22105 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
22106 var_Target == var_virtual0;
22107}
22108// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam rootElements
22109private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
22110 problem:LogicProblem, interpretation:PartialInterpretation,
22111 var_Model, var_Root)
22112{
22113 find interpretation(problem,interpretation);
22114 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
22115 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
22116 // Model is exported
22117 // Root is exported
22118 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
22119 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
22120 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
22121 var_virtual0 == var_Root;
22122}
22123private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
22124 problem:LogicProblem, interpretation:PartialInterpretation,
22125 var_Model, var_Root)
22126{
22127 find interpretation(problem,interpretation);
22128 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
22129 find mayInstanceOfFunction_class(problem,interpretation,var_Root);
22130 // Model is exported
22131 // Root is exported
22132 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
22133 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
22134 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
22135 find mayEquivalent(problem, interpretation, var_virtual0, var_Root);
22136}
22137private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_rootElements(
22138 problem:LogicProblem, interpretation:PartialInterpretation,
22139 var_Model, var_Root)
22140{
22141 find interpretation(problem,interpretation);
22142 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
22143 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
22144 // Model is exported
22145 // Root is exported
22146 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
22147 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
22148 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
22149 var_virtual0 == var_Root;
22150}
22151// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam parent
22152private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
22153 problem:LogicProblem, interpretation:PartialInterpretation,
22154 var_Func, var_Par)
22155{
22156 find interpretation(problem,interpretation);
22157 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
22158 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
22159 // Func is exported
22160 // Par is exported
22161 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
22162 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
22163 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
22164 var_virtual0 == var_Par;
22165}
22166private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
22167 problem:LogicProblem, interpretation:PartialInterpretation,
22168 var_Func, var_Par)
22169{
22170 find interpretation(problem,interpretation);
22171 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
22172 find mayInstanceOfFunction_class(problem,interpretation,var_Par);
22173 // Func is exported
22174 // Par is exported
22175 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
22176 find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
22177 find mayInstanceOfFunction_class(problem,interpretation,var_virtual0);
22178 find mayEquivalent(problem, interpretation, var_virtual0, var_Par);
22179}
22180private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_parent(
22181 problem:LogicProblem, interpretation:PartialInterpretation,
22182 var_Func, var_Par)
22183{
22184 find interpretation(problem,interpretation);
22185 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
22186 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
22187 // Func is exported
22188 // Par is exported
22189 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
22190 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
22191 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
22192 var_virtual0 == var_Par;
22193}
22194// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam model
22195private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
22196 problem:LogicProblem, interpretation:PartialInterpretation,
22197 var_This, var_Target)
22198{
22199 find interpretation(problem,interpretation);
22200 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
22201 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
22202 // This is exported
22203 // Target is exported
22204 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
22205 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
22206}
22207private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
22208 problem:LogicProblem, interpretation:PartialInterpretation,
22209 var_This, var_Target)
22210{
22211 find interpretation(problem,interpretation);
22212 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
22213 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
22214 // This is exported
22215 // Target is exported
22216 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
22217 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
22218}
22219private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_model(
22220 problem:LogicProblem, interpretation:PartialInterpretation,
22221 var_This, var_Target)
22222{
22223 find interpretation(problem,interpretation);
22224 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
22225 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
22226 // This is exported
22227 // Target is exported
22228 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
22229 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
22230}
22231
22232//////////
22233// 1.4 Containment Indexer
22234//////////
22235private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
22236 find mustContains4(_,_,source,target);
22237}
22238
22239private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
22240 source: DefinedElement, target: DefinedElement)
22241 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
22242
22243 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
22244
22245 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
22246
22247 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
22248
22249 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
22250
22251 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
22252
22253private pattern mustTransitiveContains(source,target) {
22254 find mustContains2+(source,target);
22255}
22256
22257//////////
22258// 2. Invalidation Indexers
22259//////////
22260// 2.1 Invalidated by WF Queries
22261//////////
22262pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
22263 var_T, var_I)
22264{
22265 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I);
22266}
22267
22268//////////
22269// 3. Unfinishedness Indexers
22270//////////
22271// 3.1 Unfinishedness Measured by Multiplicity
22272//////////
22273pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
22274 find interpretation(problem,interpretation);
22275 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22276 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
22277 find mustInstanceOfInformationLink_class(problem,interpretation,object);
22278 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
22279 check(numberOfExistingReferences < 1);
22280 missingMultiplicity == eval(1-numberOfExistingReferences);
22281}
22282
22283//////////
22284// 3.2 Unfinishedness Measured by WF Queries
22285//////////
22286pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
22287 var_T, var_I)
22288{
22289 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_terminatorAndInformation(problem,interpretation,var_T,var_I);
22290}
22291
22292//////////
22293// 4. Refinement Indexers
22294//////////
22295// 4.1 Object constructors
22296//////////
22297private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
22298{
22299 find interpretation(problem,interpretation);
22300 find mustInstanceOfFunction_class(problem,interpretation,root);
22301 find mustExist(problem, interpretation, root);
22302}or{
22303 find interpretation(problem,interpretation);
22304 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
22305 find mustExist(problem, interpretation, root);
22306}or{
22307 find interpretation(problem,interpretation);
22308 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
22309 find mustExist(problem, interpretation, root);
22310}or{
22311 find interpretation(problem,interpretation);
22312 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
22313 find mustExist(problem, interpretation, root);
22314}or{
22315 find interpretation(problem,interpretation);
22316 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
22317 find mustExist(problem, interpretation, root);
22318}or{
22319 find interpretation(problem,interpretation);
22320 find mustInstanceOfInformationLink_class(problem,interpretation,root);
22321 find mustExist(problem, interpretation, root);
22322}or{
22323 find interpretation(problem,interpretation);
22324 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
22325 find mustExist(problem, interpretation, root);
22326}or{
22327 find interpretation(problem,interpretation);
22328 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
22329 find mustExist(problem, interpretation, root);
22330}or{
22331 find interpretation(problem,interpretation);
22332 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
22333 find mustExist(problem, interpretation, root);
22334}or{
22335 find interpretation(problem,interpretation);
22336 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
22337 find mustExist(problem, interpretation, root);
22338}or{
22339 find interpretation(problem,interpretation);
22340 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
22341 find mustExist(problem, interpretation, root);
22342}
22343pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
22344 problem:LogicProblem, interpretation:PartialInterpretation,
22345 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
22346 container:DefinedElement)
22347{
22348 find interpretation(problem,interpretation);
22349 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22350 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
22351 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
22352 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
22353 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
22354 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
22355 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
22356 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
22357 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
22358 find mustExist(problem, interpretation, container);
22359 neg find mustExist(problem, interpretation, newObject);
22360}
22361pattern createObject_FunctionalInterface_class(
22362 problem:LogicProblem, interpretation:PartialInterpretation,
22363 typeInterpretation:PartialComplexTypeInterpretation)
22364{
22365 find interpretation(problem,interpretation);
22366 neg find hasElementInContainment(problem,interpretation);
22367 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22368 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
22369 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
22370 find mayExist(problem, interpretation, newObject);
22371 neg find mustExist(problem, interpretation, newObject);
22372}
22373pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
22374 problem:LogicProblem, interpretation:PartialInterpretation,
22375 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
22376 container:DefinedElement)
22377{
22378 find interpretation(problem,interpretation);
22379 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22380 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
22381 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
22382 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
22383 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
22384 find mayInstanceOfFunction_class(problem,interpretation,newObject);
22385 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
22386 find mustExist(problem, interpretation, container);
22387 neg find mustExist(problem, interpretation, newObject);
22388}
22389pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
22390 problem:LogicProblem, interpretation:PartialInterpretation,
22391 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
22392 container:DefinedElement)
22393{
22394 find interpretation(problem,interpretation);
22395 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22396 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
22397 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
22398 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
22399 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
22400 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
22401 find mustInstanceOfFunction_class(problem,interpretation,container);
22402 find mayInstanceOfFunction_class(problem,interpretation,newObject);
22403 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
22404 find mustExist(problem, interpretation, container);
22405 neg find mustExist(problem, interpretation, newObject);
22406}
22407pattern createObject_Function_class(
22408 problem:LogicProblem, interpretation:PartialInterpretation,
22409 typeInterpretation:PartialComplexTypeInterpretation)
22410{
22411 find interpretation(problem,interpretation);
22412 neg find hasElementInContainment(problem,interpretation);
22413 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22414 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
22415 find mayInstanceOfFunction_class(problem,interpretation,newObject);
22416 find mayExist(problem, interpretation, newObject);
22417 neg find mustExist(problem, interpretation, newObject);
22418}
22419pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
22420 problem:LogicProblem, interpretation:PartialInterpretation,
22421 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
22422 container:DefinedElement)
22423{
22424 find interpretation(problem,interpretation);
22425 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22426 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
22427 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
22428 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
22429 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
22430 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
22431 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
22432 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
22433 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
22434 find mustExist(problem, interpretation, container);
22435 neg find mustExist(problem, interpretation, newObject);
22436}
22437pattern createObject_FAMTerminator_class(
22438 problem:LogicProblem, interpretation:PartialInterpretation,
22439 typeInterpretation:PartialComplexTypeInterpretation)
22440{
22441 find interpretation(problem,interpretation);
22442 neg find hasElementInContainment(problem,interpretation);
22443 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22444 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
22445 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
22446 find mayExist(problem, interpretation, newObject);
22447 neg find mustExist(problem, interpretation, newObject);
22448}
22449pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
22450 problem:LogicProblem, interpretation:PartialInterpretation,
22451 typeInterpretation:PartialComplexTypeInterpretation)
22452{
22453 find interpretation(problem,interpretation);
22454 neg find hasElementInContainment(problem,interpretation);
22455 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22456 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
22457 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
22458 find mayExist(problem, interpretation, newObject);
22459 neg find mustExist(problem, interpretation, newObject);
22460}
22461pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
22462 problem:LogicProblem, interpretation:PartialInterpretation,
22463 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
22464 container:DefinedElement)
22465{
22466 find interpretation(problem,interpretation);
22467 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22468 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
22469 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
22470 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
22471 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
22472 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
22473 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
22474 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
22475 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
22476 find mustExist(problem, interpretation, container);
22477 neg find mustExist(problem, interpretation, newObject);
22478}
22479pattern createObject_InformationLink_class(
22480 problem:LogicProblem, interpretation:PartialInterpretation,
22481 typeInterpretation:PartialComplexTypeInterpretation)
22482{
22483 find interpretation(problem,interpretation);
22484 neg find hasElementInContainment(problem,interpretation);
22485 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22486 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
22487 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
22488 find mayExist(problem, interpretation, newObject);
22489 neg find mustExist(problem, interpretation, newObject);
22490}
22491pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
22492 problem:LogicProblem, interpretation:PartialInterpretation,
22493 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
22494 container:DefinedElement)
22495{
22496 find interpretation(problem,interpretation);
22497 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22498 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
22499 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
22500 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
22501 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
22502 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
22503 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
22504 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
22505 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
22506 find mustExist(problem, interpretation, container);
22507 neg find mustExist(problem, interpretation, newObject);
22508}
22509pattern createObject_FunctionalOutput_class(
22510 problem:LogicProblem, interpretation:PartialInterpretation,
22511 typeInterpretation:PartialComplexTypeInterpretation)
22512{
22513 find interpretation(problem,interpretation);
22514 neg find hasElementInContainment(problem,interpretation);
22515 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22516 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
22517 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
22518 find mayExist(problem, interpretation, newObject);
22519 neg find mustExist(problem, interpretation, newObject);
22520}
22521pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
22522 problem:LogicProblem, interpretation:PartialInterpretation,
22523 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
22524 container:DefinedElement)
22525{
22526 find interpretation(problem,interpretation);
22527 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22528 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
22529 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
22530 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
22531 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
22532 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
22533 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
22534 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
22535 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
22536 find mustExist(problem, interpretation, container);
22537 neg find mustExist(problem, interpretation, newObject);
22538}
22539pattern createObject_FunctionalInput_class(
22540 problem:LogicProblem, interpretation:PartialInterpretation,
22541 typeInterpretation:PartialComplexTypeInterpretation)
22542{
22543 find interpretation(problem,interpretation);
22544 neg find hasElementInContainment(problem,interpretation);
22545 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22546 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
22547 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
22548 find mayExist(problem, interpretation, newObject);
22549 neg find mustExist(problem, interpretation, newObject);
22550}
22551
22552//////////
22553// 4.2 Type refinement
22554//////////
22555pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
22556 find interpretation(problem,interpretation);
22557 PartialInterpretation.newElements(interpretation,element);
22558 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
22559 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22560 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22561 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22562 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22563 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22564 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22565}
22566pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
22567 find interpretation(problem,interpretation);
22568 PartialInterpretation.newElements(interpretation,element);
22569 find mayInstanceOfFunction_class(problem,interpretation,element);
22570 neg find mustInstanceOfFunction_class(problem,interpretation,element);
22571 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22572 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22573 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22574 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22575 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22576}
22577pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
22578 find interpretation(problem,interpretation);
22579 PartialInterpretation.newElements(interpretation,element);
22580 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
22581 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22582 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22583 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22584 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22585 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22586 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22587}
22588pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
22589 find interpretation(problem,interpretation);
22590 PartialInterpretation.newElements(interpretation,element);
22591 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
22592 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22593 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22594 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22595 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22596 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
22597 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22598}
22599pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
22600 find interpretation(problem,interpretation);
22601 PartialInterpretation.newElements(interpretation,element);
22602 find mayInstanceOfInformationLink_class(problem,interpretation,element);
22603 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22604 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22605 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22606 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22607 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22608 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22609}
22610pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
22611 find interpretation(problem,interpretation);
22612 PartialInterpretation.newElements(interpretation,element);
22613 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
22614 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22615 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22616 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22617 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22618 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
22619 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
22620 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22621}
22622pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
22623 find interpretation(problem,interpretation);
22624 PartialInterpretation.newElements(interpretation,element);
22625 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
22626 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22627 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22628 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22629 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22630 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
22631 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
22632 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22633}
22634
22635//////////
22636// 4.3 Relation refinement
22637//////////
22638pattern refineRelation_model_reference_FunctionalElement(
22639 problem:LogicProblem, interpretation:PartialInterpretation,
22640 relationIterpretation:PartialRelationInterpretation,
22641 from: DefinedElement, to: DefinedElement)
22642{
22643 find interpretation(problem,interpretation);
22644 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22645 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
22646 find mustExist(problem, interpretation, from);
22647 find mustExist(problem, interpretation, to);
22648 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
22649 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
22650 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
22651 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
22652}
22653pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
22654 problem:LogicProblem, interpretation:PartialInterpretation,
22655 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
22656 from: DefinedElement, to: DefinedElement)
22657{
22658 find interpretation(problem,interpretation);
22659 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22660 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
22661 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
22662 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
22663 find mustExist(problem, interpretation, from);
22664 find mustExist(problem, interpretation, to);
22665 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
22666 find mustInstanceOfInformationLink_class(problem,interpretation,to);
22667 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
22668 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
22669}
22670pattern refineRelation_type_attribute_Function(
22671 problem:LogicProblem, interpretation:PartialInterpretation,
22672 relationIterpretation:PartialRelationInterpretation,
22673 from: DefinedElement, to: DefinedElement)
22674{
22675 find interpretation(problem,interpretation);
22676 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
22677 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
22678 find mustExist(problem, interpretation, from);
22679 find mustExist(problem, interpretation, to);
22680 find mustInstanceOfFunction_class(problem,interpretation,from);
22681 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
22682 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
22683 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
22684}
22685import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
22686import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
22687import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
22688
22689//////////
22690// 0. Util
22691//////////
22692private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
22693 PartialInterpretation.problem(interpretation,problem);
22694}
22695
22696/////////////////////////
22697// 0.1 Existence
22698/////////////////////////
22699private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22700 find interpretation(problem,interpretation);
22701 LogicProblem.elements(problem,element);
22702} or {
22703 find interpretation(problem,interpretation);
22704 PartialInterpretation.newElements(interpretation,element);
22705}
22706
22707private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22708 find mustExist(problem,interpretation,element);
22709} or {
22710 find interpretation(problem,interpretation);
22711 neg find elementCloseWorld(element);
22712 PartialInterpretation.openWorldElements(interpretation,element);
22713}
22714
22715private pattern elementCloseWorld(element:DefinedElement) {
22716 PartialInterpretation.openWorldElements(i,element);
22717 PartialInterpretation.maxNewElements(i,0);
22718} or {
22719 Scope.targetTypeInterpretation(scope,interpretation);
22720 PartialTypeInterpratation.elements(interpretation,element);
22721 Scope.maxNewElements(scope,0);
22722}
22723
22724////////////////////////
22725// 0.2 Equivalence
22726////////////////////////
22727pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
22728 find mayExist(problem,interpretation,a);
22729 find mayExist(problem,interpretation,b);
22730 a == b;
22731}
22732
22733////////////////////////
22734// 0.3 Required Patterns by TypeIndexer
22735////////////////////////
22736private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
22737 find interpretation(problem,interpretation);
22738 LogicProblem.types(problem,type);
22739 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
22740 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22741}
22742
22743private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
22744 find interpretation(problem,interpretation);
22745 LogicProblem.types(problem,type);
22746 TypeDefinition.elements(type,element);
22747} or {
22748 find interpretation(problem,interpretation);
22749 find typeInterpretation(problem,interpretation,type,typeInterpretation);
22750 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
22751}
22752
22753private pattern isPrimitive(element: PrimitiveElement) {
22754 PrimitiveElement(element);
22755}
22756
22757//////////
22758// 1. Problem-Specific Base Indexers
22759//////////
22760// 1.1 Type Indexers
22761//////////
22762// 1.1.1 primitive Type Indexers
22763//////////
22764
22765//////////
22766// 1.1.2 domain-specific Type Indexers
22767//////////
22768/**
22769 * An element must be an instance of type "FunctionalElement class".
22770 */
22771private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22772 Type.name(type,"FunctionalElement class");
22773 find directInstanceOf(problem,interpretation,element,type);
22774}
22775private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22776 find interpretation(problem,interpretation);
22777 PartialInterpretation.scopes(interpretation,scope);
22778 Scope.targetTypeInterpretation(scope,typeInterpretation);
22779 Scope.maxNewElements(scope,0);
22780 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22781 Type.name(type,"FunctionalElement class");
22782}
22783
22784/**
22785 * An element may be an instance of type "FunctionalElement class".
22786 */
22787private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22788{
22789 find interpretation(problem,interpretation);
22790 PartialInterpretation.newElements(interpretation,element);
22791 neg find mustInstanceOfFunction_class(problem,interpretation,element);
22792 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22793 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22794 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22795 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22796 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22797 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
22798 neg find isPrimitive(element);
22799} or {
22800 find interpretation(problem,interpretation);
22801 PartialInterpretation.openWorldElements(interpretation,element);
22802 neg find mustInstanceOfFunction_class(problem,interpretation,element);
22803 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22804 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22805 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22806 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22807 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22808 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
22809 neg find isPrimitive(element);
22810} or
22811{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
22812/**
22813 * An element must be an instance of type "FunctionalArchitectureModel class".
22814 */
22815private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22816 Type.name(type,"FunctionalArchitectureModel class");
22817 find directInstanceOf(problem,interpretation,element,type);
22818}
22819private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22820 find interpretation(problem,interpretation);
22821 PartialInterpretation.scopes(interpretation,scope);
22822 Scope.targetTypeInterpretation(scope,typeInterpretation);
22823 Scope.maxNewElements(scope,0);
22824 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22825 Type.name(type,"FunctionalArchitectureModel class");
22826}
22827
22828/**
22829 * An element may be an instance of type "FunctionalArchitectureModel class".
22830 */
22831private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22832{
22833 find interpretation(problem,interpretation);
22834 PartialInterpretation.newElements(interpretation,element);
22835 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
22836 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22837 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22838 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22839 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22840 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22841 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
22842 neg find isPrimitive(element);
22843} or {
22844 find interpretation(problem,interpretation);
22845 PartialInterpretation.openWorldElements(interpretation,element);
22846 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
22847 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22848 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22849 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22850 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22851 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22852 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
22853 neg find isPrimitive(element);
22854} or
22855{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
22856/**
22857 * An element must be an instance of type "Function class".
22858 */
22859private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22860 Type.name(type,"Function class");
22861 find directInstanceOf(problem,interpretation,element,type);
22862}
22863private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22864 find interpretation(problem,interpretation);
22865 PartialInterpretation.scopes(interpretation,scope);
22866 Scope.targetTypeInterpretation(scope,typeInterpretation);
22867 Scope.maxNewElements(scope,0);
22868 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22869 Type.name(type,"Function class");
22870}
22871
22872/**
22873 * An element may be an instance of type "Function class".
22874 */
22875private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22876{
22877 find interpretation(problem,interpretation);
22878 PartialInterpretation.newElements(interpretation,element);
22879 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22880 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22881 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22882 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22883 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22884 neg find scopeDisallowsNewFunction_class(problem, interpretation);
22885 neg find isPrimitive(element);
22886} or {
22887 find interpretation(problem,interpretation);
22888 PartialInterpretation.openWorldElements(interpretation,element);
22889 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22890 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22891 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22892 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22893 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22894 neg find scopeDisallowsNewFunction_class(problem, interpretation);
22895 neg find isPrimitive(element);
22896} or
22897{ find mustInstanceOfFunction_class(problem,interpretation,element); }
22898/**
22899 * An element must be an instance of type "FAMTerminator class".
22900 */
22901private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22902 Type.name(type,"FAMTerminator class");
22903 find directInstanceOf(problem,interpretation,element,type);
22904}
22905private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22906 find interpretation(problem,interpretation);
22907 PartialInterpretation.scopes(interpretation,scope);
22908 Scope.targetTypeInterpretation(scope,typeInterpretation);
22909 Scope.maxNewElements(scope,0);
22910 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22911 Type.name(type,"FAMTerminator class");
22912}
22913
22914/**
22915 * An element may be an instance of type "FAMTerminator class".
22916 */
22917private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22918{
22919 find interpretation(problem,interpretation);
22920 PartialInterpretation.newElements(interpretation,element);
22921 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22922 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22923 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22924 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22925 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22926 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
22927 neg find isPrimitive(element);
22928} or {
22929 find interpretation(problem,interpretation);
22930 PartialInterpretation.openWorldElements(interpretation,element);
22931 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22932 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22933 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
22934 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22935 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22936 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
22937 neg find isPrimitive(element);
22938} or
22939{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
22940/**
22941 * An element must be an instance of type "InformationLink class".
22942 */
22943private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22944 Type.name(type,"InformationLink class");
22945 find directInstanceOf(problem,interpretation,element,type);
22946}
22947private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22948 find interpretation(problem,interpretation);
22949 PartialInterpretation.scopes(interpretation,scope);
22950 Scope.targetTypeInterpretation(scope,typeInterpretation);
22951 Scope.maxNewElements(scope,0);
22952 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22953 Type.name(type,"InformationLink class");
22954}
22955
22956/**
22957 * An element may be an instance of type "InformationLink class".
22958 */
22959private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
22960{
22961 find interpretation(problem,interpretation);
22962 PartialInterpretation.newElements(interpretation,element);
22963 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22964 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22965 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22966 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22967 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22968 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
22969 neg find isPrimitive(element);
22970} or {
22971 find interpretation(problem,interpretation);
22972 PartialInterpretation.openWorldElements(interpretation,element);
22973 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
22974 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
22975 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
22976 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
22977 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
22978 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
22979 neg find isPrimitive(element);
22980} or
22981{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
22982/**
22983 * An element must be an instance of type "FunctionalInterface class".
22984 */
22985private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
22986 Type.name(type,"FunctionalInterface class");
22987 find directInstanceOf(problem,interpretation,element,type);
22988}
22989private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
22990 find interpretation(problem,interpretation);
22991 PartialInterpretation.scopes(interpretation,scope);
22992 Scope.targetTypeInterpretation(scope,typeInterpretation);
22993 Scope.maxNewElements(scope,0);
22994 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
22995 Type.name(type,"FunctionalInterface class");
22996}
22997
22998/**
22999 * An element may be an instance of type "FunctionalInterface class".
23000 */
23001private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23002{
23003 find interpretation(problem,interpretation);
23004 PartialInterpretation.newElements(interpretation,element);
23005 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
23006 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23007 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23008 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
23009 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23010 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
23011 neg find isPrimitive(element);
23012} or {
23013 find interpretation(problem,interpretation);
23014 PartialInterpretation.openWorldElements(interpretation,element);
23015 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
23016 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23017 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23018 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
23019 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23020 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
23021 neg find isPrimitive(element);
23022} or
23023{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
23024/**
23025 * An element must be an instance of type "FunctionalInput class".
23026 */
23027private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23028 Type.name(type,"FunctionalInput class");
23029 find directInstanceOf(problem,interpretation,element,type);
23030}
23031private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
23032 find interpretation(problem,interpretation);
23033 PartialInterpretation.scopes(interpretation,scope);
23034 Scope.targetTypeInterpretation(scope,typeInterpretation);
23035 Scope.maxNewElements(scope,0);
23036 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23037 Type.name(type,"FunctionalInput class");
23038}
23039
23040/**
23041 * An element may be an instance of type "FunctionalInput class".
23042 */
23043private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23044{
23045 find interpretation(problem,interpretation);
23046 PartialInterpretation.newElements(interpretation,element);
23047 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23048 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23049 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23050 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
23051 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
23052 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
23053 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
23054 neg find isPrimitive(element);
23055} or {
23056 find interpretation(problem,interpretation);
23057 PartialInterpretation.openWorldElements(interpretation,element);
23058 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23059 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23060 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23061 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
23062 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
23063 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
23064 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
23065 neg find isPrimitive(element);
23066} or
23067{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
23068/**
23069 * An element must be an instance of type "FunctionalOutput class".
23070 */
23071private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23072 Type.name(type,"FunctionalOutput class");
23073 find directInstanceOf(problem,interpretation,element,type);
23074}
23075private pattern scopeDisallowsNewFunctionalOutput_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,"FunctionalOutput class");
23082}
23083
23084/**
23085 * An element may be an instance of type "FunctionalOutput class".
23086 */
23087private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23088{
23089 find interpretation(problem,interpretation);
23090 PartialInterpretation.newElements(interpretation,element);
23091 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23092 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23093 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
23094 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23095 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
23096 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
23097 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
23098 neg find isPrimitive(element);
23099} or {
23100 find interpretation(problem,interpretation);
23101 PartialInterpretation.openWorldElements(interpretation,element);
23102 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23103 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23104 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
23105 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23106 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
23107 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
23108 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
23109 neg find isPrimitive(element);
23110} or
23111{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
23112/**
23113 * An element must be an instance of type "FunctionalData class".
23114 */
23115private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23116 Type.name(type,"FunctionalData class");
23117 find directInstanceOf(problem,interpretation,element,type);
23118}
23119private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
23120 find interpretation(problem,interpretation);
23121 PartialInterpretation.scopes(interpretation,scope);
23122 Scope.targetTypeInterpretation(scope,typeInterpretation);
23123 Scope.maxNewElements(scope,0);
23124 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23125 Type.name(type,"FunctionalData class");
23126}
23127
23128/**
23129 * An element may be an instance of type "FunctionalData class".
23130 */
23131private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23132{
23133 find interpretation(problem,interpretation);
23134 PartialInterpretation.newElements(interpretation,element);
23135 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23136 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23137 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
23138 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23139 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
23140 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
23141 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
23142 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
23143 neg find isPrimitive(element);
23144} or {
23145 find interpretation(problem,interpretation);
23146 PartialInterpretation.openWorldElements(interpretation,element);
23147 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23148 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23149 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
23150 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23151 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
23152 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
23153 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
23154 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
23155 neg find isPrimitive(element);
23156} or
23157{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
23158/**
23159 * An element must be an instance of type "FunctionType enum".
23160 */
23161private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23162 Type.name(type,"FunctionType enum");
23163 find directInstanceOf(problem,interpretation,element,type);
23164}
23165private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
23166 find interpretation(problem,interpretation);
23167 PartialInterpretation.scopes(interpretation,scope);
23168 Scope.targetTypeInterpretation(scope,typeInterpretation);
23169 Scope.maxNewElements(scope,0);
23170 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
23171 Type.name(type,"FunctionType enum");
23172}
23173
23174/**
23175 * An element may be an instance of type "FunctionType enum".
23176 */
23177private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23178{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
23179/**
23180 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
23181 */
23182private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23183 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
23184 find directInstanceOf(problem,interpretation,element,type);
23185}
23186private pattern scopeDisallowsNewFunctionalArchitectureModel_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,"FunctionalArchitectureModel class DefinedPart");
23193}
23194
23195/**
23196 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
23197 */
23198private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23199{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
23200/**
23201 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
23202 */
23203private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
23204 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
23205 find directInstanceOf(problem,interpretation,element,type);
23206}
23207private pattern scopeDisallowsNewFunctionalArchitectureModel_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,"FunctionalArchitectureModel class UndefinedPart");
23214}
23215
23216/**
23217 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
23218 */
23219private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
23220{
23221 find interpretation(problem,interpretation);
23222 PartialInterpretation.newElements(interpretation,element);
23223 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
23224 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23225 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23226 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23227 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
23228 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
23229 neg find isPrimitive(element);
23230} or {
23231 find interpretation(problem,interpretation);
23232 PartialInterpretation.openWorldElements(interpretation,element);
23233 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
23234 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
23235 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
23236 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
23237 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
23238 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
23239 neg find isPrimitive(element);
23240} or
23241{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
23242
23243//////////
23244// 1.2 Relation Declaration Indexers
23245//////////
23246/**
23247 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
23248 */
23249private pattern mustInRelationinterface_reference_FunctionalElement(
23250 problem:LogicProblem, interpretation:PartialInterpretation,
23251 source: DefinedElement, target:DefinedElement)
23252{
23253 find interpretation(problem,interpretation);
23254 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23255 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
23256 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23257 BinaryElementRelationLink.param1(link,source);
23258 BinaryElementRelationLink.param2(link,target);
23259}
23260/**
23261 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
23262 */
23263private pattern mayInRelationinterface_reference_FunctionalElement(
23264 problem:LogicProblem, interpretation:PartialInterpretation,
23265 source: DefinedElement, target:DefinedElement)
23266{
23267 find interpretation(problem,interpretation);
23268 // The two endpoint of the link have to exist
23269 find mayExist(problem, interpretation, source);
23270 find mayExist(problem, interpretation, target);
23271 // Type consistency
23272 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
23273 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
23274 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23275 // the upper bound of the multiplicity should be considered.
23276 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
23277 check(numberOfExistingReferences < 1);
23278 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23279 // the upper bound of the opposite reference multiplicity should be considered.
23280 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
23281 check(numberOfExistingOppositeReferences < 1);
23282 // The reference is containment, then a new reference cannot be create if:
23283 // 1. Multiple parents
23284 neg find mustContains4(problem,interpretation,_,target);
23285 // 2. Circle in the containment hierarchy
23286 neg find mustTransitiveContains(source,target);
23287} or {
23288 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
23289}
23290/**
23291 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
23292 */
23293 private pattern mustInRelationmodel_reference_FunctionalElement(
23294 problem:LogicProblem, interpretation:PartialInterpretation,
23295 source: DefinedElement, target:DefinedElement)
23296 {
23297 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model(problem,interpretation,source,target);
23298 }
23299/**
23300 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
23301 */
23302 private pattern mayInRelationmodel_reference_FunctionalElement(
23303 problem:LogicProblem, interpretation:PartialInterpretation,
23304 source: DefinedElement, target:DefinedElement)
23305 {
23306 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model(problem,interpretation,source,target);
23307 }
23308/**
23309 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
23310 */
23311private pattern mustInRelationparent_reference_FunctionalElement(
23312 problem:LogicProblem, interpretation:PartialInterpretation,
23313 source: DefinedElement, target:DefinedElement)
23314{
23315 find interpretation(problem,interpretation);
23316 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23317 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
23318 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23319 BinaryElementRelationLink.param1(link,source);
23320 BinaryElementRelationLink.param2(link,target);
23321}
23322/**
23323 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
23324 */
23325private pattern mayInRelationparent_reference_FunctionalElement(
23326 problem:LogicProblem, interpretation:PartialInterpretation,
23327 source: DefinedElement, target:DefinedElement)
23328{
23329 find interpretation(problem,interpretation);
23330 // The two endpoint of the link have to exist
23331 find mayExist(problem, interpretation, source);
23332 find mayExist(problem, interpretation, target);
23333 // Type consistency
23334 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
23335 find mayInstanceOfFunction_class(problem,interpretation,target);
23336 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23337 // the upper bound of the multiplicity should be considered.
23338 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
23339 check(numberOfExistingReferences < 1);
23340 // The eOpposite of the reference is containment, then a referene cannot be created if
23341 // 1. Multiple parents
23342 neg find mustContains4(problem,interpretation,source,_);
23343 // 2. Circle in the containment hierarchy
23344 neg find mustTransitiveContains(source,target);
23345} or {
23346 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
23347}
23348/**
23349 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
23350 */
23351private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
23352 problem:LogicProblem, interpretation:PartialInterpretation,
23353 source: DefinedElement, target:DefinedElement)
23354{
23355 find interpretation(problem,interpretation);
23356 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23357 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
23358 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23359 BinaryElementRelationLink.param1(link,source);
23360 BinaryElementRelationLink.param2(link,target);
23361}
23362/**
23363 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
23364 */
23365private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
23366 problem:LogicProblem, interpretation:PartialInterpretation,
23367 source: DefinedElement, target:DefinedElement)
23368{
23369 find interpretation(problem,interpretation);
23370 // The two endpoint of the link have to exist
23371 find mayExist(problem, interpretation, source);
23372 find mayExist(problem, interpretation, target);
23373 // Type consistency
23374 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
23375 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
23376 // The reference is containment, then a new reference cannot be create if:
23377 // 1. Multiple parents
23378 neg find mustContains4(problem,interpretation,_,target);
23379 // 2. Circle in the containment hierarchy
23380 neg find mustTransitiveContains(source,target);
23381} or {
23382 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
23383}
23384/**
23385 * Matcher for detecting tuples t where []subElements reference Function(source,target)
23386 */
23387private pattern mustInRelationsubElements_reference_Function(
23388 problem:LogicProblem, interpretation:PartialInterpretation,
23389 source: DefinedElement, target:DefinedElement)
23390{
23391 find interpretation(problem,interpretation);
23392 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23393 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
23394 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23395 BinaryElementRelationLink.param1(link,source);
23396 BinaryElementRelationLink.param2(link,target);
23397}
23398/**
23399 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
23400 */
23401private pattern mayInRelationsubElements_reference_Function(
23402 problem:LogicProblem, interpretation:PartialInterpretation,
23403 source: DefinedElement, target:DefinedElement)
23404{
23405 find interpretation(problem,interpretation);
23406 // The two endpoint of the link have to exist
23407 find mayExist(problem, interpretation, source);
23408 find mayExist(problem, interpretation, target);
23409 // Type consistency
23410 find mayInstanceOfFunction_class(problem,interpretation,source);
23411 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
23412 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23413 // the upper bound of the opposite reference multiplicity should be considered.
23414 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
23415 check(numberOfExistingOppositeReferences < 1);
23416 // The reference is containment, then a new reference cannot be create if:
23417 // 1. Multiple parents
23418 neg find mustContains4(problem,interpretation,_,target);
23419 // 2. Circle in the containment hierarchy
23420 neg find mustTransitiveContains(source,target);
23421} or {
23422 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
23423}
23424/**
23425 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
23426 */
23427private pattern mustInRelationdata_reference_FAMTerminator(
23428 problem:LogicProblem, interpretation:PartialInterpretation,
23429 source: DefinedElement, target:DefinedElement)
23430{
23431 find interpretation(problem,interpretation);
23432 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23433 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
23434 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23435 BinaryElementRelationLink.param1(link,source);
23436 BinaryElementRelationLink.param2(link,target);
23437}
23438/**
23439 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
23440 */
23441private pattern mayInRelationdata_reference_FAMTerminator(
23442 problem:LogicProblem, interpretation:PartialInterpretation,
23443 source: DefinedElement, target:DefinedElement)
23444{
23445 find interpretation(problem,interpretation);
23446 // The two endpoint of the link have to exist
23447 find mayExist(problem, interpretation, source);
23448 find mayExist(problem, interpretation, target);
23449 // Type consistency
23450 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
23451 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
23452 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23453 // the upper bound of the multiplicity should be considered.
23454 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
23455 check(numberOfExistingReferences < 1);
23456 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23457 // the upper bound of the opposite reference multiplicity should be considered.
23458 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
23459 check(numberOfExistingOppositeReferences < 1);
23460 // The eOpposite of the reference is containment, then a referene cannot be created if
23461 // 1. Multiple parents
23462 neg find mustContains4(problem,interpretation,source,_);
23463 // 2. Circle in the containment hierarchy
23464 neg find mustTransitiveContains(source,target);
23465} or {
23466 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
23467}
23468/**
23469 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
23470 */
23471private pattern mustInRelationfrom_reference_InformationLink(
23472 problem:LogicProblem, interpretation:PartialInterpretation,
23473 source: DefinedElement, target:DefinedElement)
23474{
23475 find interpretation(problem,interpretation);
23476 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23477 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
23478 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23479 BinaryElementRelationLink.param1(link,source);
23480 BinaryElementRelationLink.param2(link,target);
23481}
23482/**
23483 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
23484 */
23485private pattern mayInRelationfrom_reference_InformationLink(
23486 problem:LogicProblem, interpretation:PartialInterpretation,
23487 source: DefinedElement, target:DefinedElement)
23488{
23489 find interpretation(problem,interpretation);
23490 // The two endpoint of the link have to exist
23491 find mayExist(problem, interpretation, source);
23492 find mayExist(problem, interpretation, target);
23493 // Type consistency
23494 find mayInstanceOfInformationLink_class(problem,interpretation,source);
23495 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
23496 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23497 // the upper bound of the multiplicity should be considered.
23498 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
23499 check(numberOfExistingReferences < 1);
23500 // The eOpposite of the reference is containment, then a referene cannot be created if
23501 // 1. Multiple parents
23502 neg find mustContains4(problem,interpretation,source,_);
23503 // 2. Circle in the containment hierarchy
23504 neg find mustTransitiveContains(source,target);
23505} or {
23506 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
23507}
23508/**
23509 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
23510 */
23511private pattern mustInRelationto_reference_InformationLink(
23512 problem:LogicProblem, interpretation:PartialInterpretation,
23513 source: DefinedElement, target:DefinedElement)
23514{
23515 find interpretation(problem,interpretation);
23516 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23517 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
23518 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23519 BinaryElementRelationLink.param1(link,source);
23520 BinaryElementRelationLink.param2(link,target);
23521}
23522/**
23523 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
23524 */
23525private pattern mayInRelationto_reference_InformationLink(
23526 problem:LogicProblem, interpretation:PartialInterpretation,
23527 source: DefinedElement, target:DefinedElement)
23528{
23529 find interpretation(problem,interpretation);
23530 // The two endpoint of the link have to exist
23531 find mayExist(problem, interpretation, source);
23532 find mayExist(problem, interpretation, target);
23533 // Type consistency
23534 find mayInstanceOfInformationLink_class(problem,interpretation,source);
23535 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
23536 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23537 // the upper bound of the multiplicity should be considered.
23538 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
23539 check(numberOfExistingReferences < 1);
23540} or {
23541 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
23542}
23543/**
23544 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
23545 */
23546private pattern mustInRelationdata_reference_FunctionalInterface(
23547 problem:LogicProblem, interpretation:PartialInterpretation,
23548 source: DefinedElement, target:DefinedElement)
23549{
23550 find interpretation(problem,interpretation);
23551 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23552 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
23553 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23554 BinaryElementRelationLink.param1(link,source);
23555 BinaryElementRelationLink.param2(link,target);
23556}
23557/**
23558 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
23559 */
23560private pattern mayInRelationdata_reference_FunctionalInterface(
23561 problem:LogicProblem, interpretation:PartialInterpretation,
23562 source: DefinedElement, target:DefinedElement)
23563{
23564 find interpretation(problem,interpretation);
23565 // The two endpoint of the link have to exist
23566 find mayExist(problem, interpretation, source);
23567 find mayExist(problem, interpretation, target);
23568 // Type consistency
23569 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
23570 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
23571 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23572 // the upper bound of the opposite reference multiplicity should be considered.
23573 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
23574 check(numberOfExistingOppositeReferences < 1);
23575 // The reference is containment, then a new reference cannot be create if:
23576 // 1. Multiple parents
23577 neg find mustContains4(problem,interpretation,_,target);
23578 // 2. Circle in the containment hierarchy
23579 neg find mustTransitiveContains(source,target);
23580} or {
23581 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
23582}
23583/**
23584 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
23585 */
23586private pattern mustInRelationelement_reference_FunctionalInterface(
23587 problem:LogicProblem, interpretation:PartialInterpretation,
23588 source: DefinedElement, target:DefinedElement)
23589{
23590 find interpretation(problem,interpretation);
23591 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23592 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
23593 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23594 BinaryElementRelationLink.param1(link,source);
23595 BinaryElementRelationLink.param2(link,target);
23596}
23597/**
23598 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
23599 */
23600private pattern mayInRelationelement_reference_FunctionalInterface(
23601 problem:LogicProblem, interpretation:PartialInterpretation,
23602 source: DefinedElement, target:DefinedElement)
23603{
23604 find interpretation(problem,interpretation);
23605 // The two endpoint of the link have to exist
23606 find mayExist(problem, interpretation, source);
23607 find mayExist(problem, interpretation, target);
23608 // Type consistency
23609 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
23610 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
23611 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23612 // the upper bound of the multiplicity should be considered.
23613 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
23614 check(numberOfExistingReferences < 1);
23615 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23616 // the upper bound of the opposite reference multiplicity should be considered.
23617 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
23618 check(numberOfExistingOppositeReferences < 1);
23619 // The eOpposite of the reference is containment, then a referene cannot be created if
23620 // 1. Multiple parents
23621 neg find mustContains4(problem,interpretation,source,_);
23622 // 2. Circle in the containment hierarchy
23623 neg find mustTransitiveContains(source,target);
23624} or {
23625 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
23626}
23627/**
23628 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
23629 */
23630private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
23631 problem:LogicProblem, interpretation:PartialInterpretation,
23632 source: DefinedElement, target:DefinedElement)
23633{
23634 find interpretation(problem,interpretation);
23635 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23636 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
23637 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23638 BinaryElementRelationLink.param1(link,source);
23639 BinaryElementRelationLink.param2(link,target);
23640}
23641/**
23642 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
23643 */
23644private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
23645 problem:LogicProblem, interpretation:PartialInterpretation,
23646 source: DefinedElement, target:DefinedElement)
23647{
23648 find interpretation(problem,interpretation);
23649 // The two endpoint of the link have to exist
23650 find mayExist(problem, interpretation, source);
23651 find mayExist(problem, interpretation, target);
23652 // Type consistency
23653 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
23654 find mayInstanceOfInformationLink_class(problem,interpretation,target);
23655 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23656 // the upper bound of the opposite reference multiplicity should be considered.
23657 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
23658 check(numberOfExistingOppositeReferences < 1);
23659} or {
23660 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
23661}
23662/**
23663 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
23664 */
23665private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
23666 problem:LogicProblem, interpretation:PartialInterpretation,
23667 source: DefinedElement, target:DefinedElement)
23668{
23669 find interpretation(problem,interpretation);
23670 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23671 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
23672 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23673 BinaryElementRelationLink.param1(link,source);
23674 BinaryElementRelationLink.param2(link,target);
23675}
23676/**
23677 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
23678 */
23679private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
23680 problem:LogicProblem, interpretation:PartialInterpretation,
23681 source: DefinedElement, target:DefinedElement)
23682{
23683 find interpretation(problem,interpretation);
23684 // The two endpoint of the link have to exist
23685 find mayExist(problem, interpretation, source);
23686 find mayExist(problem, interpretation, target);
23687 // Type consistency
23688 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
23689 find mayInstanceOfInformationLink_class(problem,interpretation,target);
23690 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23691 // the upper bound of the opposite reference multiplicity should be considered.
23692 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
23693 check(numberOfExistingOppositeReferences < 1);
23694 // The reference is containment, then a new reference cannot be create if:
23695 // 1. Multiple parents
23696 neg find mustContains4(problem,interpretation,_,target);
23697 // 2. Circle in the containment hierarchy
23698 neg find mustTransitiveContains(source,target);
23699} or {
23700 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
23701}
23702/**
23703 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
23704 */
23705private pattern mustInRelationterminator_reference_FunctionalData(
23706 problem:LogicProblem, interpretation:PartialInterpretation,
23707 source: DefinedElement, target:DefinedElement)
23708{
23709 find interpretation(problem,interpretation);
23710 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23711 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
23712 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23713 BinaryElementRelationLink.param1(link,source);
23714 BinaryElementRelationLink.param2(link,target);
23715}
23716/**
23717 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
23718 */
23719private pattern mayInRelationterminator_reference_FunctionalData(
23720 problem:LogicProblem, interpretation:PartialInterpretation,
23721 source: DefinedElement, target:DefinedElement)
23722{
23723 find interpretation(problem,interpretation);
23724 // The two endpoint of the link have to exist
23725 find mayExist(problem, interpretation, source);
23726 find mayExist(problem, interpretation, target);
23727 // Type consistency
23728 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
23729 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
23730 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23731 // the upper bound of the multiplicity should be considered.
23732 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
23733 check(numberOfExistingReferences < 1);
23734 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
23735 // the upper bound of the opposite reference multiplicity should be considered.
23736 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
23737 check(numberOfExistingOppositeReferences < 1);
23738 // The reference is containment, then a new reference cannot be create if:
23739 // 1. Multiple parents
23740 neg find mustContains4(problem,interpretation,_,target);
23741 // 2. Circle in the containment hierarchy
23742 neg find mustTransitiveContains(source,target);
23743} or {
23744 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
23745}
23746/**
23747 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
23748 */
23749private pattern mustInRelationinterface_reference_FunctionalData(
23750 problem:LogicProblem, interpretation:PartialInterpretation,
23751 source: DefinedElement, target:DefinedElement)
23752{
23753 find interpretation(problem,interpretation);
23754 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
23755 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
23756 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
23757 BinaryElementRelationLink.param1(link,source);
23758 BinaryElementRelationLink.param2(link,target);
23759}
23760/**
23761 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
23762 */
23763private pattern mayInRelationinterface_reference_FunctionalData(
23764 problem:LogicProblem, interpretation:PartialInterpretation,
23765 source: DefinedElement, target:DefinedElement)
23766{
23767 find interpretation(problem,interpretation);
23768 // The two endpoint of the link have to exist
23769 find mayExist(problem, interpretation, source);
23770 find mayExist(problem, interpretation, target);
23771 // Type consistency
23772 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
23773 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
23774 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
23775 // the upper bound of the multiplicity should be considered.
23776 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
23777 check(numberOfExistingReferences < 1);
23778 // The eOpposite of the reference is containment, then a referene cannot be created if
23779 // 1. Multiple parents
23780 neg find mustContains4(problem,interpretation,source,_);
23781 // 2. Circle in the containment hierarchy
23782 neg find mustTransitiveContains(source,target);
23783} or {
23784 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
23785}
23786/**
23787 * Matcher for detecting tuples t where []type attribute Function(source,target)
23788 */
23789 private pattern mustInRelationtype_attribute_Function(
23790 problem:LogicProblem, interpretation:PartialInterpretation,
23791 source: DefinedElement, target:DefinedElement)
23792 {
23793 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type(problem,interpretation,source,target);
23794 }
23795/**
23796 * Matcher for detecting tuples t where []type attribute Function(source,target)
23797 */
23798 private pattern mayInRelationtype_attribute_Function(
23799 problem:LogicProblem, interpretation:PartialInterpretation,
23800 source: DefinedElement, target:DefinedElement)
23801 {
23802 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type(problem,interpretation,source,target);
23803 }
23804
23805//////////
23806// 1.3 Relation Definition Indexers
23807//////////
23808// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz terminatorAndInformation
23809private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(
23810 problem:LogicProblem, interpretation:PartialInterpretation,
23811 var_T, var_I)
23812{
23813 find interpretation(problem,interpretation);
23814 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
23815 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
23816 // T is exported
23817 // I is exported
23818 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
23819 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
23820 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
23821 var_virtual0 == var_I;
23822 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
23823 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
23824 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
23825 var_virtual1 == var_T;
23826}or{
23827 find interpretation(problem,interpretation);
23828 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
23829 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
23830 // T is exported
23831 // I is exported
23832 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
23833 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
23834 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
23835 var_virtual0 == var_In;
23836 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
23837 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
23838 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
23839 var_virtual1 == var_T;
23840}
23841private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(
23842 problem:LogicProblem, interpretation:PartialInterpretation,
23843 var_T, var_I)
23844{
23845 find interpretation(problem,interpretation);
23846 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
23847 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
23848 // T is exported
23849 // I is exported
23850 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
23851 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
23852 find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
23853 find mayEquivalent(problem, interpretation, var_virtual0, var_I);
23854 find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
23855 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
23856 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
23857 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
23858}or{
23859 find interpretation(problem,interpretation);
23860 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T);
23861 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
23862 // T is exported
23863 // I is exported
23864 find mayInstanceOfInformationLink_class(problem,interpretation,var_I);
23865 find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
23866 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
23867 find mayEquivalent(problem, interpretation, var_virtual0, var_In);
23868 find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In);
23869 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
23870 find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
23871 find mayEquivalent(problem, interpretation, var_virtual1, var_T);
23872}
23873private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(
23874 problem:LogicProblem, interpretation:PartialInterpretation,
23875 var_T, var_I)
23876{
23877 find interpretation(problem,interpretation);
23878 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
23879 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
23880 // T is exported
23881 // I is exported
23882 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
23883 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0);
23884 find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0);
23885 var_virtual0 == var_I;
23886 find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out);
23887 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1);
23888 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
23889 var_virtual1 == var_T;
23890}or{
23891 find interpretation(problem,interpretation);
23892 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T);
23893 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
23894 // T is exported
23895 // I is exported
23896 find mustInstanceOfInformationLink_class(problem,interpretation,var_I);
23897 find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0);
23898 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0);
23899 var_virtual0 == var_In;
23900 find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In);
23901 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1);
23902 find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1);
23903 var_virtual1 == var_T;
23904}
23905// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz type
23906private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type(
23907 problem:LogicProblem, interpretation:PartialInterpretation,
23908 var_This, var_Target)
23909{
23910 find interpretation(problem,interpretation);
23911 find mustInstanceOfFunction_class(problem,interpretation,var_This);
23912 // type constraint is enforced by construction
23913 // This is exported
23914 // Target is exported
23915 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This);
23916 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
23917 var_Target == var_virtual0;
23918}or{
23919 find interpretation(problem,interpretation);
23920 find mustInstanceOfFunction_class(problem,interpretation,var_This);
23921 // type constraint is enforced by construction
23922 // This is exported
23923 // Target is exported
23924 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This);
23925 neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This);
23926 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
23927 var_Target == var_virtual0;
23928}or{
23929 find interpretation(problem,interpretation);
23930 find mustInstanceOfFunction_class(problem,interpretation,var_This);
23931 // type constraint is enforced by construction
23932 // This is exported
23933 // Target is exported
23934 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,var_This,_var__Par);
23935 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This);
23936 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
23937 var_Target == var_virtual0;
23938}
23939private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type(
23940 problem:LogicProblem, interpretation:PartialInterpretation,
23941 var_This, var_Target)
23942{
23943 find interpretation(problem,interpretation);
23944 find mayInstanceOfFunction_class(problem,interpretation,var_This);
23945 // type constraint is enforced by construction
23946 // This is exported
23947 // Target is exported
23948 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This);
23949 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
23950 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
23951}or{
23952 find interpretation(problem,interpretation);
23953 find mayInstanceOfFunction_class(problem,interpretation,var_This);
23954 // type constraint is enforced by construction
23955 // This is exported
23956 // Target is exported
23957 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This);
23958 neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This);
23959 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
23960 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
23961}or{
23962 find interpretation(problem,interpretation);
23963 find mayInstanceOfFunction_class(problem,interpretation,var_This);
23964 // type constraint is enforced by construction
23965 // This is exported
23966 // Target is exported
23967 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,var_This,_var__Par);
23968 find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This);
23969 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
23970 find mayEquivalent(problem, interpretation, var_Target, var_virtual0);
23971}
23972private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_type(
23973 problem:LogicProblem, interpretation:PartialInterpretation,
23974 var_This, var_Target)
23975{
23976 find interpretation(problem,interpretation);
23977 find mustInstanceOfFunction_class(problem,interpretation,var_This);
23978 // type constraint is enforced by construction
23979 // This is exported
23980 // Target is exported
23981 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This);
23982 var_virtual0 == const_Root_FunctionType;DefinedElement.name(const_Root_FunctionType,"Root FunctionType"); //LogicProblem.elements(problem,const_Root_FunctionType);
23983 var_Target == var_virtual0;
23984}or{
23985 find interpretation(problem,interpretation);
23986 find mustInstanceOfFunction_class(problem,interpretation,var_This);
23987 // type constraint is enforced by construction
23988 // This is exported
23989 // Target is exported
23990 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This);
23991 neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(problem,interpretation,_var__Model,var_This);
23992 var_virtual0 == const_Leaf_FunctionType;DefinedElement.name(const_Leaf_FunctionType,"Leaf FunctionType"); //LogicProblem.elements(problem,const_Leaf_FunctionType);
23993 var_Target == var_virtual0;
23994}or{
23995 find interpretation(problem,interpretation);
23996 find mustInstanceOfFunction_class(problem,interpretation,var_This);
23997 // type constraint is enforced by construction
23998 // This is exported
23999 // Target is exported
24000 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,var_This,_var__Par);
24001 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(problem,interpretation,_var__Child,var_This);
24002 var_virtual0 == const_Intermediate_FunctionType;DefinedElement.name(const_Intermediate_FunctionType,"Intermediate FunctionType"); //LogicProblem.elements(problem,const_Intermediate_FunctionType);
24003 var_Target == var_virtual0;
24004}
24005// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz rootElements
24006private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(
24007 problem:LogicProblem, interpretation:PartialInterpretation,
24008 var_Model, var_Root)
24009{
24010 find interpretation(problem,interpretation);
24011 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
24012 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
24013 // Model is exported
24014 // Root is exported
24015 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
24016 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
24017 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
24018 var_virtual0 == var_Root;
24019}
24020private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(
24021 problem:LogicProblem, interpretation:PartialInterpretation,
24022 var_Model, var_Root)
24023{
24024 find interpretation(problem,interpretation);
24025 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
24026 find mayInstanceOfFunction_class(problem,interpretation,var_Root);
24027 // Model is exported
24028 // Root is exported
24029 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
24030 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
24031 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
24032 find mayEquivalent(problem, interpretation, var_virtual0, var_Root);
24033}
24034private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_rootElements(
24035 problem:LogicProblem, interpretation:PartialInterpretation,
24036 var_Model, var_Root)
24037{
24038 find interpretation(problem,interpretation);
24039 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
24040 find mustInstanceOfFunction_class(problem,interpretation,var_Root);
24041 // Model is exported
24042 // Root is exported
24043 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model);
24044 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0);
24045 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0);
24046 var_virtual0 == var_Root;
24047}
24048// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz parent
24049private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(
24050 problem:LogicProblem, interpretation:PartialInterpretation,
24051 var_Func, var_Par)
24052{
24053 find interpretation(problem,interpretation);
24054 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
24055 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
24056 // Func is exported
24057 // Par is exported
24058 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
24059 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
24060 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
24061 var_virtual0 == var_Par;
24062}
24063private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(
24064 problem:LogicProblem, interpretation:PartialInterpretation,
24065 var_Func, var_Par)
24066{
24067 find interpretation(problem,interpretation);
24068 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
24069 find mayInstanceOfFunction_class(problem,interpretation,var_Par);
24070 // Func is exported
24071 // Par is exported
24072 find mayInstanceOfFunction_class(problem,interpretation,var_Func);
24073 find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
24074 find mayInstanceOfFunction_class(problem,interpretation,var_virtual0);
24075 find mayEquivalent(problem, interpretation, var_virtual0, var_Par);
24076}
24077private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_parent(
24078 problem:LogicProblem, interpretation:PartialInterpretation,
24079 var_Func, var_Par)
24080{
24081 find interpretation(problem,interpretation);
24082 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
24083 find mustInstanceOfFunction_class(problem,interpretation,var_Par);
24084 // Func is exported
24085 // Par is exported
24086 find mustInstanceOfFunction_class(problem,interpretation,var_Func);
24087 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0);
24088 find mustInstanceOfFunction_class(problem,interpretation,var_virtual0);
24089 var_virtual0 == var_Par;
24090}
24091// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test xyz model
24092private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model(
24093 problem:LogicProblem, interpretation:PartialInterpretation,
24094 var_This, var_Target)
24095{
24096 find interpretation(problem,interpretation);
24097 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
24098 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
24099 // This is exported
24100 // Target is exported
24101 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
24102 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
24103}
24104private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model(
24105 problem:LogicProblem, interpretation:PartialInterpretation,
24106 var_This, var_Target)
24107{
24108 find interpretation(problem,interpretation);
24109 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
24110 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
24111 // This is exported
24112 // Target is exported
24113 find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This);
24114 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
24115}
24116private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_model(
24117 problem:LogicProblem, interpretation:PartialInterpretation,
24118 var_This, var_Target)
24119{
24120 find interpretation(problem,interpretation);
24121 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
24122 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
24123 // This is exported
24124 // Target is exported
24125 find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This);
24126 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target);
24127}
24128
24129//////////
24130// 1.4 Containment Indexer
24131//////////
24132private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
24133 find mustContains4(_,_,source,target);
24134}
24135
24136private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
24137 source: DefinedElement, target: DefinedElement)
24138 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
24139
24140 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
24141
24142 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
24143
24144 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
24145
24146 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
24147
24148 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
24149
24150private pattern mustTransitiveContains(source,target) {
24151 find mustContains2+(source,target);
24152}
24153
24154//////////
24155// 2. Invalidation Indexers
24156//////////
24157// 2.1 Invalidated by WF Queries
24158//////////
24159pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
24160 var_T, var_I)
24161{
24162 find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(problem,interpretation,var_T,var_I);
24163}
24164
24165//////////
24166// 3. Unfinishedness Indexers
24167//////////
24168// 3.1 Unfinishedness Measured by Multiplicity
24169//////////
24170pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
24171 find interpretation(problem,interpretation);
24172 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24173 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
24174 find mustInstanceOfInformationLink_class(problem,interpretation,object);
24175 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
24176 check(numberOfExistingReferences < 1);
24177 missingMultiplicity == eval(1-numberOfExistingReferences);
24178}
24179
24180//////////
24181// 3.2 Unfinishedness Measured by WF Queries
24182//////////
24183pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation,
24184 var_T, var_I)
24185{
24186 find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_xyz_terminatorAndInformation(problem,interpretation,var_T,var_I);
24187}
24188
24189//////////
24190// 4. Refinement Indexers
24191//////////
24192// 4.1 Object constructors
24193//////////
24194private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
24195{
24196 find interpretation(problem,interpretation);
24197 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
24198 find mustExist(problem, interpretation, root);
24199}or{
24200 find interpretation(problem,interpretation);
24201 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
24202 find mustExist(problem, interpretation, root);
24203}or{
24204 find interpretation(problem,interpretation);
24205 find mustInstanceOfInformationLink_class(problem,interpretation,root);
24206 find mustExist(problem, interpretation, root);
24207}or{
24208 find interpretation(problem,interpretation);
24209 find mustInstanceOfFunction_class(problem,interpretation,root);
24210 find mustExist(problem, interpretation, root);
24211}or{
24212 find interpretation(problem,interpretation);
24213 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
24214 find mustExist(problem, interpretation, root);
24215}or{
24216 find interpretation(problem,interpretation);
24217 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
24218 find mustExist(problem, interpretation, root);
24219}or{
24220 find interpretation(problem,interpretation);
24221 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
24222 find mustExist(problem, interpretation, root);
24223}or{
24224 find interpretation(problem,interpretation);
24225 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
24226 find mustExist(problem, interpretation, root);
24227}or{
24228 find interpretation(problem,interpretation);
24229 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
24230 find mustExist(problem, interpretation, root);
24231}or{
24232 find interpretation(problem,interpretation);
24233 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
24234 find mustExist(problem, interpretation, root);
24235}or{
24236 find interpretation(problem,interpretation);
24237 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
24238 find mustExist(problem, interpretation, root);
24239}
24240pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
24241 problem:LogicProblem, interpretation:PartialInterpretation,
24242 typeInterpretation:PartialComplexTypeInterpretation)
24243{
24244 find interpretation(problem,interpretation);
24245 neg find hasElementInContainment(problem,interpretation);
24246 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24247 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
24248 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
24249 find mayExist(problem, interpretation, newObject);
24250 neg find mustExist(problem, interpretation, newObject);
24251}
24252pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
24253 problem:LogicProblem, interpretation:PartialInterpretation,
24254 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
24255 container:DefinedElement)
24256{
24257 find interpretation(problem,interpretation);
24258 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24259 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
24260 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
24261 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
24262 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
24263 find mayInstanceOfFunction_class(problem,interpretation,newObject);
24264 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
24265 find mustExist(problem, interpretation, container);
24266 neg find mustExist(problem, interpretation, newObject);
24267}
24268pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
24269 problem:LogicProblem, interpretation:PartialInterpretation,
24270 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
24271 container:DefinedElement)
24272{
24273 find interpretation(problem,interpretation);
24274 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24275 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
24276 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
24277 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
24278 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
24279 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
24280 find mustInstanceOfFunction_class(problem,interpretation,container);
24281 find mayInstanceOfFunction_class(problem,interpretation,newObject);
24282 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
24283 find mustExist(problem, interpretation, container);
24284 neg find mustExist(problem, interpretation, newObject);
24285}
24286pattern createObject_Function_class(
24287 problem:LogicProblem, interpretation:PartialInterpretation,
24288 typeInterpretation:PartialComplexTypeInterpretation)
24289{
24290 find interpretation(problem,interpretation);
24291 neg find hasElementInContainment(problem,interpretation);
24292 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24293 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
24294 find mayInstanceOfFunction_class(problem,interpretation,newObject);
24295 find mayExist(problem, interpretation, newObject);
24296 neg find mustExist(problem, interpretation, newObject);
24297}
24298pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
24299 problem:LogicProblem, interpretation:PartialInterpretation,
24300 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
24301 container:DefinedElement)
24302{
24303 find interpretation(problem,interpretation);
24304 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24305 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
24306 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
24307 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
24308 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
24309 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
24310 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
24311 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
24312 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
24313 find mustExist(problem, interpretation, container);
24314 neg find mustExist(problem, interpretation, newObject);
24315}
24316pattern createObject_InformationLink_class(
24317 problem:LogicProblem, interpretation:PartialInterpretation,
24318 typeInterpretation:PartialComplexTypeInterpretation)
24319{
24320 find interpretation(problem,interpretation);
24321 neg find hasElementInContainment(problem,interpretation);
24322 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24323 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
24324 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
24325 find mayExist(problem, interpretation, newObject);
24326 neg find mustExist(problem, interpretation, newObject);
24327}
24328pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
24329 problem:LogicProblem, interpretation:PartialInterpretation,
24330 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
24331 container:DefinedElement)
24332{
24333 find interpretation(problem,interpretation);
24334 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24335 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
24336 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
24337 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
24338 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
24339 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
24340 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
24341 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
24342 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
24343 find mustExist(problem, interpretation, container);
24344 neg find mustExist(problem, interpretation, newObject);
24345}
24346pattern createObject_FunctionalOutput_class(
24347 problem:LogicProblem, interpretation:PartialInterpretation,
24348 typeInterpretation:PartialComplexTypeInterpretation)
24349{
24350 find interpretation(problem,interpretation);
24351 neg find hasElementInContainment(problem,interpretation);
24352 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24353 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
24354 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
24355 find mayExist(problem, interpretation, newObject);
24356 neg find mustExist(problem, interpretation, newObject);
24357}
24358pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
24359 problem:LogicProblem, interpretation:PartialInterpretation,
24360 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
24361 container:DefinedElement)
24362{
24363 find interpretation(problem,interpretation);
24364 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24365 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
24366 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
24367 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
24368 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
24369 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
24370 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
24371 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
24372 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
24373 find mustExist(problem, interpretation, container);
24374 neg find mustExist(problem, interpretation, newObject);
24375}
24376pattern createObject_FAMTerminator_class(
24377 problem:LogicProblem, interpretation:PartialInterpretation,
24378 typeInterpretation:PartialComplexTypeInterpretation)
24379{
24380 find interpretation(problem,interpretation);
24381 neg find hasElementInContainment(problem,interpretation);
24382 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24383 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
24384 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
24385 find mayExist(problem, interpretation, newObject);
24386 neg find mustExist(problem, interpretation, newObject);
24387}
24388pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
24389 problem:LogicProblem, interpretation:PartialInterpretation,
24390 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
24391 container:DefinedElement)
24392{
24393 find interpretation(problem,interpretation);
24394 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24395 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
24396 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
24397 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
24398 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
24399 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
24400 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
24401 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
24402 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
24403 find mustExist(problem, interpretation, container);
24404 neg find mustExist(problem, interpretation, newObject);
24405}
24406pattern createObject_FunctionalInterface_class(
24407 problem:LogicProblem, interpretation:PartialInterpretation,
24408 typeInterpretation:PartialComplexTypeInterpretation)
24409{
24410 find interpretation(problem,interpretation);
24411 neg find hasElementInContainment(problem,interpretation);
24412 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24413 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
24414 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
24415 find mayExist(problem, interpretation, newObject);
24416 neg find mustExist(problem, interpretation, newObject);
24417}
24418pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
24419 problem:LogicProblem, interpretation:PartialInterpretation,
24420 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
24421 container:DefinedElement)
24422{
24423 find interpretation(problem,interpretation);
24424 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24425 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
24426 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
24427 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
24428 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
24429 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
24430 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
24431 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
24432 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
24433 find mustExist(problem, interpretation, container);
24434 neg find mustExist(problem, interpretation, newObject);
24435}
24436pattern createObject_FunctionalInput_class(
24437 problem:LogicProblem, interpretation:PartialInterpretation,
24438 typeInterpretation:PartialComplexTypeInterpretation)
24439{
24440 find interpretation(problem,interpretation);
24441 neg find hasElementInContainment(problem,interpretation);
24442 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24443 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
24444 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
24445 find mayExist(problem, interpretation, newObject);
24446 neg find mustExist(problem, interpretation, newObject);
24447}
24448
24449//////////
24450// 4.2 Type refinement
24451//////////
24452pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
24453 find interpretation(problem,interpretation);
24454 PartialInterpretation.newElements(interpretation,element);
24455 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
24456 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
24457 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24458 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24459 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24460 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24461 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24462}
24463pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
24464 find interpretation(problem,interpretation);
24465 PartialInterpretation.newElements(interpretation,element);
24466 find mayInstanceOfFunction_class(problem,interpretation,element);
24467 neg find mustInstanceOfFunction_class(problem,interpretation,element);
24468 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24469 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24470 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24471 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24472 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24473}
24474pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
24475 find interpretation(problem,interpretation);
24476 PartialInterpretation.newElements(interpretation,element);
24477 find mayInstanceOfInformationLink_class(problem,interpretation,element);
24478 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24479 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24480 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24481 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24482 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24483 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24484}
24485pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
24486 find interpretation(problem,interpretation);
24487 PartialInterpretation.newElements(interpretation,element);
24488 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
24489 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24490 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24491 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24492 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24493 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
24494 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24495 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
24496}
24497pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
24498 find interpretation(problem,interpretation);
24499 PartialInterpretation.newElements(interpretation,element);
24500 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
24501 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24502 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24503 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24504 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24505 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24506 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24507}
24508pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
24509 find interpretation(problem,interpretation);
24510 PartialInterpretation.newElements(interpretation,element);
24511 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
24512 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24513 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24514 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24515 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24516 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24517 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24518}
24519pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
24520 find interpretation(problem,interpretation);
24521 PartialInterpretation.newElements(interpretation,element);
24522 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
24523 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24524 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24525 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24526 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24527 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
24528 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
24529 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24530}
24531
24532//////////
24533// 4.3 Relation refinement
24534//////////
24535pattern refineRelation_model_reference_FunctionalElement(
24536 problem:LogicProblem, interpretation:PartialInterpretation,
24537 relationIterpretation:PartialRelationInterpretation,
24538 from: DefinedElement, to: DefinedElement)
24539{
24540 find interpretation(problem,interpretation);
24541 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24542 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
24543 find mustExist(problem, interpretation, from);
24544 find mustExist(problem, interpretation, to);
24545 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
24546 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
24547 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
24548 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
24549}
24550pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
24551 problem:LogicProblem, interpretation:PartialInterpretation,
24552 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
24553 from: DefinedElement, to: DefinedElement)
24554{
24555 find interpretation(problem,interpretation);
24556 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24557 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
24558 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
24559 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
24560 find mustExist(problem, interpretation, from);
24561 find mustExist(problem, interpretation, to);
24562 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
24563 find mustInstanceOfInformationLink_class(problem,interpretation,to);
24564 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
24565 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
24566}
24567pattern refineRelation_type_attribute_Function(
24568 problem:LogicProblem, interpretation:PartialInterpretation,
24569 relationIterpretation:PartialRelationInterpretation,
24570 from: DefinedElement, to: DefinedElement)
24571{
24572 find interpretation(problem,interpretation);
24573 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
24574 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
24575 find mustExist(problem, interpretation, from);
24576 find mustExist(problem, interpretation, to);
24577 find mustInstanceOfFunction_class(problem,interpretation,from);
24578 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
24579 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
24580 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
24581}
24582import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
24583import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
24584import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
24585
24586//////////
24587// 0. Util
24588//////////
24589private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
24590 PartialInterpretation.problem(interpretation,problem);
24591}
24592
24593/////////////////////////
24594// 0.1 Existence
24595/////////////////////////
24596private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24597 find interpretation(problem,interpretation);
24598 LogicProblem.elements(problem,element);
24599} or {
24600 find interpretation(problem,interpretation);
24601 PartialInterpretation.newElements(interpretation,element);
24602}
24603
24604private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24605 find mustExist(problem,interpretation,element);
24606} or {
24607 find interpretation(problem,interpretation);
24608 neg find elementCloseWorld(element);
24609 PartialInterpretation.openWorldElements(interpretation,element);
24610}
24611
24612private pattern elementCloseWorld(element:DefinedElement) {
24613 PartialInterpretation.openWorldElements(i,element);
24614 PartialInterpretation.maxNewElements(i,0);
24615} or {
24616 Scope.targetTypeInterpretation(scope,interpretation);
24617 PartialTypeInterpratation.elements(interpretation,element);
24618 Scope.maxNewElements(scope,0);
24619}
24620
24621////////////////////////
24622// 0.2 Equivalence
24623////////////////////////
24624pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
24625 find mayExist(problem,interpretation,a);
24626 find mayExist(problem,interpretation,b);
24627 a == b;
24628}
24629
24630////////////////////////
24631// 0.3 Required Patterns by TypeIndexer
24632////////////////////////
24633private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
24634 find interpretation(problem,interpretation);
24635 LogicProblem.types(problem,type);
24636 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
24637 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
24638}
24639
24640private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
24641 find interpretation(problem,interpretation);
24642 LogicProblem.types(problem,type);
24643 TypeDefinition.elements(type,element);
24644} or {
24645 find interpretation(problem,interpretation);
24646 find typeInterpretation(problem,interpretation,type,typeInterpretation);
24647 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
24648}
24649
24650private pattern isPrimitive(element: PrimitiveElement) {
24651 PrimitiveElement(element);
24652}
24653
24654//////////
24655// 1. Problem-Specific Base Indexers
24656//////////
24657// 1.1 Type Indexers
24658//////////
24659// 1.1.1 primitive Type Indexers
24660//////////
24661
24662//////////
24663// 1.1.2 domain-specific Type Indexers
24664//////////
24665/**
24666 * An element must be an instance of type "FunctionalElement class".
24667 */
24668private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24669 Type.name(type,"FunctionalElement class");
24670 find directInstanceOf(problem,interpretation,element,type);
24671}
24672private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
24673 find interpretation(problem,interpretation);
24674 PartialInterpretation.scopes(interpretation,scope);
24675 Scope.targetTypeInterpretation(scope,typeInterpretation);
24676 Scope.maxNewElements(scope,0);
24677 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
24678 Type.name(type,"FunctionalElement class");
24679}
24680
24681/**
24682 * An element may be an instance of type "FunctionalElement class".
24683 */
24684private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
24685{
24686 find interpretation(problem,interpretation);
24687 PartialInterpretation.newElements(interpretation,element);
24688 neg find mustInstanceOfFunction_class(problem,interpretation,element);
24689 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24690 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24691 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24692 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24693 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24694 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
24695 neg find isPrimitive(element);
24696} or {
24697 find interpretation(problem,interpretation);
24698 PartialInterpretation.openWorldElements(interpretation,element);
24699 neg find mustInstanceOfFunction_class(problem,interpretation,element);
24700 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24701 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24702 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24703 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24704 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24705 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
24706 neg find isPrimitive(element);
24707} or
24708{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
24709/**
24710 * An element must be an instance of type "FunctionalArchitectureModel class".
24711 */
24712private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24713 Type.name(type,"FunctionalArchitectureModel class");
24714 find directInstanceOf(problem,interpretation,element,type);
24715}
24716private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
24717 find interpretation(problem,interpretation);
24718 PartialInterpretation.scopes(interpretation,scope);
24719 Scope.targetTypeInterpretation(scope,typeInterpretation);
24720 Scope.maxNewElements(scope,0);
24721 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
24722 Type.name(type,"FunctionalArchitectureModel class");
24723}
24724
24725/**
24726 * An element may be an instance of type "FunctionalArchitectureModel class".
24727 */
24728private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
24729{
24730 find interpretation(problem,interpretation);
24731 PartialInterpretation.newElements(interpretation,element);
24732 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24733 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24734 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24735 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24736 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
24737 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24738 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
24739 neg find isPrimitive(element);
24740} or {
24741 find interpretation(problem,interpretation);
24742 PartialInterpretation.openWorldElements(interpretation,element);
24743 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24744 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24745 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24746 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24747 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
24748 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24749 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
24750 neg find isPrimitive(element);
24751} or
24752{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
24753/**
24754 * An element must be an instance of type "Function class".
24755 */
24756private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24757 Type.name(type,"Function class");
24758 find directInstanceOf(problem,interpretation,element,type);
24759}
24760private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
24761 find interpretation(problem,interpretation);
24762 PartialInterpretation.scopes(interpretation,scope);
24763 Scope.targetTypeInterpretation(scope,typeInterpretation);
24764 Scope.maxNewElements(scope,0);
24765 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
24766 Type.name(type,"Function class");
24767}
24768
24769/**
24770 * An element may be an instance of type "Function class".
24771 */
24772private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
24773{
24774 find interpretation(problem,interpretation);
24775 PartialInterpretation.newElements(interpretation,element);
24776 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24777 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24778 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24779 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24780 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24781 neg find scopeDisallowsNewFunction_class(problem, interpretation);
24782 neg find isPrimitive(element);
24783} or {
24784 find interpretation(problem,interpretation);
24785 PartialInterpretation.openWorldElements(interpretation,element);
24786 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24787 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24788 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24789 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24790 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24791 neg find scopeDisallowsNewFunction_class(problem, interpretation);
24792 neg find isPrimitive(element);
24793} or
24794{ find mustInstanceOfFunction_class(problem,interpretation,element); }
24795/**
24796 * An element must be an instance of type "FAMTerminator class".
24797 */
24798private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24799 Type.name(type,"FAMTerminator class");
24800 find directInstanceOf(problem,interpretation,element,type);
24801}
24802private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
24803 find interpretation(problem,interpretation);
24804 PartialInterpretation.scopes(interpretation,scope);
24805 Scope.targetTypeInterpretation(scope,typeInterpretation);
24806 Scope.maxNewElements(scope,0);
24807 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
24808 Type.name(type,"FAMTerminator class");
24809}
24810
24811/**
24812 * An element may be an instance of type "FAMTerminator class".
24813 */
24814private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
24815{
24816 find interpretation(problem,interpretation);
24817 PartialInterpretation.newElements(interpretation,element);
24818 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24819 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24820 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24821 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24822 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24823 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
24824 neg find isPrimitive(element);
24825} or {
24826 find interpretation(problem,interpretation);
24827 PartialInterpretation.openWorldElements(interpretation,element);
24828 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24829 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24830 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24831 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24832 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24833 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
24834 neg find isPrimitive(element);
24835} or
24836{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
24837/**
24838 * An element must be an instance of type "InformationLink class".
24839 */
24840private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24841 Type.name(type,"InformationLink class");
24842 find directInstanceOf(problem,interpretation,element,type);
24843}
24844private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
24845 find interpretation(problem,interpretation);
24846 PartialInterpretation.scopes(interpretation,scope);
24847 Scope.targetTypeInterpretation(scope,typeInterpretation);
24848 Scope.maxNewElements(scope,0);
24849 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
24850 Type.name(type,"InformationLink class");
24851}
24852
24853/**
24854 * An element may be an instance of type "InformationLink class".
24855 */
24856private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
24857{
24858 find interpretation(problem,interpretation);
24859 PartialInterpretation.newElements(interpretation,element);
24860 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24861 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24862 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24863 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24864 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24865 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
24866 neg find isPrimitive(element);
24867} or {
24868 find interpretation(problem,interpretation);
24869 PartialInterpretation.openWorldElements(interpretation,element);
24870 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24871 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24872 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24873 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24874 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24875 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
24876 neg find isPrimitive(element);
24877} or
24878{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
24879/**
24880 * An element must be an instance of type "FunctionalInterface class".
24881 */
24882private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24883 Type.name(type,"FunctionalInterface class");
24884 find directInstanceOf(problem,interpretation,element,type);
24885}
24886private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
24887 find interpretation(problem,interpretation);
24888 PartialInterpretation.scopes(interpretation,scope);
24889 Scope.targetTypeInterpretation(scope,typeInterpretation);
24890 Scope.maxNewElements(scope,0);
24891 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
24892 Type.name(type,"FunctionalInterface class");
24893}
24894
24895/**
24896 * An element may be an instance of type "FunctionalInterface class".
24897 */
24898private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
24899{
24900 find interpretation(problem,interpretation);
24901 PartialInterpretation.newElements(interpretation,element);
24902 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24903 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24904 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24905 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24906 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24907 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
24908 neg find isPrimitive(element);
24909} or {
24910 find interpretation(problem,interpretation);
24911 PartialInterpretation.openWorldElements(interpretation,element);
24912 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24913 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24914 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24915 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
24916 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24917 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
24918 neg find isPrimitive(element);
24919} or
24920{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
24921/**
24922 * An element must be an instance of type "FunctionalInput class".
24923 */
24924private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24925 Type.name(type,"FunctionalInput class");
24926 find directInstanceOf(problem,interpretation,element,type);
24927}
24928private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
24929 find interpretation(problem,interpretation);
24930 PartialInterpretation.scopes(interpretation,scope);
24931 Scope.targetTypeInterpretation(scope,typeInterpretation);
24932 Scope.maxNewElements(scope,0);
24933 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
24934 Type.name(type,"FunctionalInput class");
24935}
24936
24937/**
24938 * An element may be an instance of type "FunctionalInput class".
24939 */
24940private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
24941{
24942 find interpretation(problem,interpretation);
24943 PartialInterpretation.newElements(interpretation,element);
24944 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
24945 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24946 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24947 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24948 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24949 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24950 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
24951 neg find isPrimitive(element);
24952} or {
24953 find interpretation(problem,interpretation);
24954 PartialInterpretation.openWorldElements(interpretation,element);
24955 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
24956 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24957 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24958 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24959 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24960 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24961 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
24962 neg find isPrimitive(element);
24963} or
24964{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
24965/**
24966 * An element must be an instance of type "FunctionalOutput class".
24967 */
24968private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
24969 Type.name(type,"FunctionalOutput class");
24970 find directInstanceOf(problem,interpretation,element,type);
24971}
24972private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
24973 find interpretation(problem,interpretation);
24974 PartialInterpretation.scopes(interpretation,scope);
24975 Scope.targetTypeInterpretation(scope,typeInterpretation);
24976 Scope.maxNewElements(scope,0);
24977 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
24978 Type.name(type,"FunctionalOutput class");
24979}
24980
24981/**
24982 * An element may be an instance of type "FunctionalOutput class".
24983 */
24984private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
24985{
24986 find interpretation(problem,interpretation);
24987 PartialInterpretation.newElements(interpretation,element);
24988 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
24989 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
24990 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
24991 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
24992 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
24993 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
24994 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
24995 neg find isPrimitive(element);
24996} or {
24997 find interpretation(problem,interpretation);
24998 PartialInterpretation.openWorldElements(interpretation,element);
24999 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
25000 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
25001 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
25002 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
25003 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
25004 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
25005 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
25006 neg find isPrimitive(element);
25007} or
25008{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
25009/**
25010 * An element must be an instance of type "FunctionalData class".
25011 */
25012private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
25013 Type.name(type,"FunctionalData class");
25014 find directInstanceOf(problem,interpretation,element,type);
25015}
25016private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
25017 find interpretation(problem,interpretation);
25018 PartialInterpretation.scopes(interpretation,scope);
25019 Scope.targetTypeInterpretation(scope,typeInterpretation);
25020 Scope.maxNewElements(scope,0);
25021 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
25022 Type.name(type,"FunctionalData class");
25023}
25024
25025/**
25026 * An element may be an instance of type "FunctionalData class".
25027 */
25028private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
25029{
25030 find interpretation(problem,interpretation);
25031 PartialInterpretation.newElements(interpretation,element);
25032 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
25033 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
25034 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
25035 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
25036 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
25037 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
25038 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
25039 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
25040 neg find isPrimitive(element);
25041} or {
25042 find interpretation(problem,interpretation);
25043 PartialInterpretation.openWorldElements(interpretation,element);
25044 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
25045 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
25046 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
25047 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
25048 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
25049 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
25050 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
25051 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
25052 neg find isPrimitive(element);
25053} or
25054{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
25055/**
25056 * An element must be an instance of type "FunctionType enum".
25057 */
25058private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
25059 Type.name(type,"FunctionType enum");
25060 find directInstanceOf(problem,interpretation,element,type);
25061}
25062private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
25063 find interpretation(problem,interpretation);
25064 PartialInterpretation.scopes(interpretation,scope);
25065 Scope.targetTypeInterpretation(scope,typeInterpretation);
25066 Scope.maxNewElements(scope,0);
25067 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
25068 Type.name(type,"FunctionType enum");
25069}
25070
25071/**
25072 * An element may be an instance of type "FunctionType enum".
25073 */
25074private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
25075{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
25076/**
25077 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
25078 */
25079private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
25080 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
25081 find directInstanceOf(problem,interpretation,element,type);
25082}
25083private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
25084 find interpretation(problem,interpretation);
25085 PartialInterpretation.scopes(interpretation,scope);
25086 Scope.targetTypeInterpretation(scope,typeInterpretation);
25087 Scope.maxNewElements(scope,0);
25088 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
25089 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
25090}
25091
25092/**
25093 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
25094 */
25095private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
25096{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
25097/**
25098 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
25099 */
25100private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
25101 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
25102 find directInstanceOf(problem,interpretation,element,type);
25103}
25104private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
25105 find interpretation(problem,interpretation);
25106 PartialInterpretation.scopes(interpretation,scope);
25107 Scope.targetTypeInterpretation(scope,typeInterpretation);
25108 Scope.maxNewElements(scope,0);
25109 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
25110 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
25111}
25112
25113/**
25114 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
25115 */
25116private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
25117{
25118 find interpretation(problem,interpretation);
25119 PartialInterpretation.newElements(interpretation,element);
25120 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
25121 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
25122 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
25123 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
25124 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
25125 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
25126 neg find isPrimitive(element);
25127} or {
25128 find interpretation(problem,interpretation);
25129 PartialInterpretation.openWorldElements(interpretation,element);
25130 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
25131 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
25132 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
25133 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
25134 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
25135 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
25136 neg find isPrimitive(element);
25137} or
25138{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
25139
25140//////////
25141// 1.2 Relation Declaration Indexers
25142//////////
25143/**
25144 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
25145 */
25146private pattern mustInRelationinterface_reference_FunctionalElement(
25147 problem:LogicProblem, interpretation:PartialInterpretation,
25148 source: DefinedElement, target:DefinedElement)
25149{
25150 find interpretation(problem,interpretation);
25151 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25152 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
25153 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25154 BinaryElementRelationLink.param1(link,source);
25155 BinaryElementRelationLink.param2(link,target);
25156}
25157/**
25158 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
25159 */
25160private pattern mayInRelationinterface_reference_FunctionalElement(
25161 problem:LogicProblem, interpretation:PartialInterpretation,
25162 source: DefinedElement, target:DefinedElement)
25163{
25164 find interpretation(problem,interpretation);
25165 // The two endpoint of the link have to exist
25166 find mayExist(problem, interpretation, source);
25167 find mayExist(problem, interpretation, target);
25168 // Type consistency
25169 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
25170 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
25171 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25172 // the upper bound of the multiplicity should be considered.
25173 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
25174 check(numberOfExistingReferences < 1);
25175 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
25176 // the upper bound of the opposite reference multiplicity should be considered.
25177 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
25178 check(numberOfExistingOppositeReferences < 1);
25179 // The reference is containment, then a new reference cannot be create if:
25180 // 1. Multiple parents
25181 neg find mustContains4(problem,interpretation,_,target);
25182 // 2. Circle in the containment hierarchy
25183 neg find mustTransitiveContains(source,target);
25184} or {
25185 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
25186}
25187/**
25188 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
25189 */
25190private pattern mustInRelationmodel_reference_FunctionalElement(
25191 problem:LogicProblem, interpretation:PartialInterpretation,
25192 source: DefinedElement, target:DefinedElement)
25193{
25194 find interpretation(problem,interpretation);
25195 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25196 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
25197 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25198 BinaryElementRelationLink.param1(link,source);
25199 BinaryElementRelationLink.param2(link,target);
25200}
25201/**
25202 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
25203 */
25204private pattern mayInRelationmodel_reference_FunctionalElement(
25205 problem:LogicProblem, interpretation:PartialInterpretation,
25206 source: DefinedElement, target:DefinedElement)
25207{
25208 find interpretation(problem,interpretation);
25209 // The two endpoint of the link have to exist
25210 find mayExist(problem, interpretation, source);
25211 find mayExist(problem, interpretation, target);
25212 // Type consistency
25213 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
25214 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
25215 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25216 // the upper bound of the multiplicity should be considered.
25217 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
25218 check(numberOfExistingReferences < 1);
25219} or {
25220 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
25221}
25222/**
25223 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
25224 */
25225private pattern mustInRelationparent_reference_FunctionalElement(
25226 problem:LogicProblem, interpretation:PartialInterpretation,
25227 source: DefinedElement, target:DefinedElement)
25228{
25229 find interpretation(problem,interpretation);
25230 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25231 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
25232 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25233 BinaryElementRelationLink.param1(link,source);
25234 BinaryElementRelationLink.param2(link,target);
25235}
25236/**
25237 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
25238 */
25239private pattern mayInRelationparent_reference_FunctionalElement(
25240 problem:LogicProblem, interpretation:PartialInterpretation,
25241 source: DefinedElement, target:DefinedElement)
25242{
25243 find interpretation(problem,interpretation);
25244 // The two endpoint of the link have to exist
25245 find mayExist(problem, interpretation, source);
25246 find mayExist(problem, interpretation, target);
25247 // Type consistency
25248 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
25249 find mayInstanceOfFunction_class(problem,interpretation,target);
25250 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25251 // the upper bound of the multiplicity should be considered.
25252 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
25253 check(numberOfExistingReferences < 1);
25254 // The eOpposite of the reference is containment, then a referene cannot be created if
25255 // 1. Multiple parents
25256 neg find mustContains4(problem,interpretation,source,_);
25257 // 2. Circle in the containment hierarchy
25258 neg find mustTransitiveContains(source,target);
25259} or {
25260 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
25261}
25262/**
25263 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
25264 */
25265private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
25266 problem:LogicProblem, interpretation:PartialInterpretation,
25267 source: DefinedElement, target:DefinedElement)
25268{
25269 find interpretation(problem,interpretation);
25270 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25271 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
25272 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25273 BinaryElementRelationLink.param1(link,source);
25274 BinaryElementRelationLink.param2(link,target);
25275}
25276/**
25277 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
25278 */
25279private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
25280 problem:LogicProblem, interpretation:PartialInterpretation,
25281 source: DefinedElement, target:DefinedElement)
25282{
25283 find interpretation(problem,interpretation);
25284 // The two endpoint of the link have to exist
25285 find mayExist(problem, interpretation, source);
25286 find mayExist(problem, interpretation, target);
25287 // Type consistency
25288 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
25289 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
25290 // The reference is containment, then a new reference cannot be create if:
25291 // 1. Multiple parents
25292 neg find mustContains4(problem,interpretation,_,target);
25293 // 2. Circle in the containment hierarchy
25294 neg find mustTransitiveContains(source,target);
25295} or {
25296 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
25297}
25298/**
25299 * Matcher for detecting tuples t where []subElements reference Function(source,target)
25300 */
25301private pattern mustInRelationsubElements_reference_Function(
25302 problem:LogicProblem, interpretation:PartialInterpretation,
25303 source: DefinedElement, target:DefinedElement)
25304{
25305 find interpretation(problem,interpretation);
25306 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25307 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
25308 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25309 BinaryElementRelationLink.param1(link,source);
25310 BinaryElementRelationLink.param2(link,target);
25311}
25312/**
25313 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
25314 */
25315private pattern mayInRelationsubElements_reference_Function(
25316 problem:LogicProblem, interpretation:PartialInterpretation,
25317 source: DefinedElement, target:DefinedElement)
25318{
25319 find interpretation(problem,interpretation);
25320 // The two endpoint of the link have to exist
25321 find mayExist(problem, interpretation, source);
25322 find mayExist(problem, interpretation, target);
25323 // Type consistency
25324 find mayInstanceOfFunction_class(problem,interpretation,source);
25325 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
25326 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
25327 // the upper bound of the opposite reference multiplicity should be considered.
25328 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
25329 check(numberOfExistingOppositeReferences < 1);
25330 // The reference is containment, then a new reference cannot be create if:
25331 // 1. Multiple parents
25332 neg find mustContains4(problem,interpretation,_,target);
25333 // 2. Circle in the containment hierarchy
25334 neg find mustTransitiveContains(source,target);
25335} or {
25336 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
25337}
25338/**
25339 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
25340 */
25341private pattern mustInRelationdata_reference_FAMTerminator(
25342 problem:LogicProblem, interpretation:PartialInterpretation,
25343 source: DefinedElement, target:DefinedElement)
25344{
25345 find interpretation(problem,interpretation);
25346 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25347 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
25348 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25349 BinaryElementRelationLink.param1(link,source);
25350 BinaryElementRelationLink.param2(link,target);
25351}
25352/**
25353 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
25354 */
25355private pattern mayInRelationdata_reference_FAMTerminator(
25356 problem:LogicProblem, interpretation:PartialInterpretation,
25357 source: DefinedElement, target:DefinedElement)
25358{
25359 find interpretation(problem,interpretation);
25360 // The two endpoint of the link have to exist
25361 find mayExist(problem, interpretation, source);
25362 find mayExist(problem, interpretation, target);
25363 // Type consistency
25364 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
25365 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
25366 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25367 // the upper bound of the multiplicity should be considered.
25368 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
25369 check(numberOfExistingReferences < 1);
25370 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
25371 // the upper bound of the opposite reference multiplicity should be considered.
25372 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
25373 check(numberOfExistingOppositeReferences < 1);
25374 // The eOpposite of the reference is containment, then a referene cannot be created if
25375 // 1. Multiple parents
25376 neg find mustContains4(problem,interpretation,source,_);
25377 // 2. Circle in the containment hierarchy
25378 neg find mustTransitiveContains(source,target);
25379} or {
25380 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
25381}
25382/**
25383 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
25384 */
25385private pattern mustInRelationfrom_reference_InformationLink(
25386 problem:LogicProblem, interpretation:PartialInterpretation,
25387 source: DefinedElement, target:DefinedElement)
25388{
25389 find interpretation(problem,interpretation);
25390 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25391 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
25392 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25393 BinaryElementRelationLink.param1(link,source);
25394 BinaryElementRelationLink.param2(link,target);
25395}
25396/**
25397 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
25398 */
25399private pattern mayInRelationfrom_reference_InformationLink(
25400 problem:LogicProblem, interpretation:PartialInterpretation,
25401 source: DefinedElement, target:DefinedElement)
25402{
25403 find interpretation(problem,interpretation);
25404 // The two endpoint of the link have to exist
25405 find mayExist(problem, interpretation, source);
25406 find mayExist(problem, interpretation, target);
25407 // Type consistency
25408 find mayInstanceOfInformationLink_class(problem,interpretation,source);
25409 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
25410 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25411 // the upper bound of the multiplicity should be considered.
25412 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
25413 check(numberOfExistingReferences < 1);
25414 // The eOpposite of the reference is containment, then a referene cannot be created if
25415 // 1. Multiple parents
25416 neg find mustContains4(problem,interpretation,source,_);
25417 // 2. Circle in the containment hierarchy
25418 neg find mustTransitiveContains(source,target);
25419} or {
25420 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
25421}
25422/**
25423 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
25424 */
25425private pattern mustInRelationto_reference_InformationLink(
25426 problem:LogicProblem, interpretation:PartialInterpretation,
25427 source: DefinedElement, target:DefinedElement)
25428{
25429 find interpretation(problem,interpretation);
25430 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25431 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
25432 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25433 BinaryElementRelationLink.param1(link,source);
25434 BinaryElementRelationLink.param2(link,target);
25435}
25436/**
25437 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
25438 */
25439private pattern mayInRelationto_reference_InformationLink(
25440 problem:LogicProblem, interpretation:PartialInterpretation,
25441 source: DefinedElement, target:DefinedElement)
25442{
25443 find interpretation(problem,interpretation);
25444 // The two endpoint of the link have to exist
25445 find mayExist(problem, interpretation, source);
25446 find mayExist(problem, interpretation, target);
25447 // Type consistency
25448 find mayInstanceOfInformationLink_class(problem,interpretation,source);
25449 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
25450 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25451 // the upper bound of the multiplicity should be considered.
25452 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
25453 check(numberOfExistingReferences < 1);
25454} or {
25455 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
25456}
25457/**
25458 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
25459 */
25460private pattern mustInRelationdata_reference_FunctionalInterface(
25461 problem:LogicProblem, interpretation:PartialInterpretation,
25462 source: DefinedElement, target:DefinedElement)
25463{
25464 find interpretation(problem,interpretation);
25465 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25466 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
25467 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25468 BinaryElementRelationLink.param1(link,source);
25469 BinaryElementRelationLink.param2(link,target);
25470}
25471/**
25472 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
25473 */
25474private pattern mayInRelationdata_reference_FunctionalInterface(
25475 problem:LogicProblem, interpretation:PartialInterpretation,
25476 source: DefinedElement, target:DefinedElement)
25477{
25478 find interpretation(problem,interpretation);
25479 // The two endpoint of the link have to exist
25480 find mayExist(problem, interpretation, source);
25481 find mayExist(problem, interpretation, target);
25482 // Type consistency
25483 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
25484 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
25485 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
25486 // the upper bound of the opposite reference multiplicity should be considered.
25487 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
25488 check(numberOfExistingOppositeReferences < 1);
25489 // The reference is containment, then a new reference cannot be create if:
25490 // 1. Multiple parents
25491 neg find mustContains4(problem,interpretation,_,target);
25492 // 2. Circle in the containment hierarchy
25493 neg find mustTransitiveContains(source,target);
25494} or {
25495 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
25496}
25497/**
25498 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
25499 */
25500private pattern mustInRelationelement_reference_FunctionalInterface(
25501 problem:LogicProblem, interpretation:PartialInterpretation,
25502 source: DefinedElement, target:DefinedElement)
25503{
25504 find interpretation(problem,interpretation);
25505 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25506 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
25507 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25508 BinaryElementRelationLink.param1(link,source);
25509 BinaryElementRelationLink.param2(link,target);
25510}
25511/**
25512 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
25513 */
25514private pattern mayInRelationelement_reference_FunctionalInterface(
25515 problem:LogicProblem, interpretation:PartialInterpretation,
25516 source: DefinedElement, target:DefinedElement)
25517{
25518 find interpretation(problem,interpretation);
25519 // The two endpoint of the link have to exist
25520 find mayExist(problem, interpretation, source);
25521 find mayExist(problem, interpretation, target);
25522 // Type consistency
25523 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
25524 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
25525 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25526 // the upper bound of the multiplicity should be considered.
25527 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
25528 check(numberOfExistingReferences < 1);
25529 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
25530 // the upper bound of the opposite reference multiplicity should be considered.
25531 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
25532 check(numberOfExistingOppositeReferences < 1);
25533 // The eOpposite of the reference is containment, then a referene cannot be created if
25534 // 1. Multiple parents
25535 neg find mustContains4(problem,interpretation,source,_);
25536 // 2. Circle in the containment hierarchy
25537 neg find mustTransitiveContains(source,target);
25538} or {
25539 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
25540}
25541/**
25542 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
25543 */
25544private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
25545 problem:LogicProblem, interpretation:PartialInterpretation,
25546 source: DefinedElement, target:DefinedElement)
25547{
25548 find interpretation(problem,interpretation);
25549 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25550 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
25551 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25552 BinaryElementRelationLink.param1(link,source);
25553 BinaryElementRelationLink.param2(link,target);
25554}
25555/**
25556 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
25557 */
25558private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
25559 problem:LogicProblem, interpretation:PartialInterpretation,
25560 source: DefinedElement, target:DefinedElement)
25561{
25562 find interpretation(problem,interpretation);
25563 // The two endpoint of the link have to exist
25564 find mayExist(problem, interpretation, source);
25565 find mayExist(problem, interpretation, target);
25566 // Type consistency
25567 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
25568 find mayInstanceOfInformationLink_class(problem,interpretation,target);
25569 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
25570 // the upper bound of the opposite reference multiplicity should be considered.
25571 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
25572 check(numberOfExistingOppositeReferences < 1);
25573} or {
25574 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
25575}
25576/**
25577 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
25578 */
25579private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
25580 problem:LogicProblem, interpretation:PartialInterpretation,
25581 source: DefinedElement, target:DefinedElement)
25582{
25583 find interpretation(problem,interpretation);
25584 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25585 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
25586 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25587 BinaryElementRelationLink.param1(link,source);
25588 BinaryElementRelationLink.param2(link,target);
25589}
25590/**
25591 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
25592 */
25593private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
25594 problem:LogicProblem, interpretation:PartialInterpretation,
25595 source: DefinedElement, target:DefinedElement)
25596{
25597 find interpretation(problem,interpretation);
25598 // The two endpoint of the link have to exist
25599 find mayExist(problem, interpretation, source);
25600 find mayExist(problem, interpretation, target);
25601 // Type consistency
25602 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
25603 find mayInstanceOfInformationLink_class(problem,interpretation,target);
25604 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
25605 // the upper bound of the opposite reference multiplicity should be considered.
25606 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
25607 check(numberOfExistingOppositeReferences < 1);
25608 // The reference is containment, then a new reference cannot be create if:
25609 // 1. Multiple parents
25610 neg find mustContains4(problem,interpretation,_,target);
25611 // 2. Circle in the containment hierarchy
25612 neg find mustTransitiveContains(source,target);
25613} or {
25614 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
25615}
25616/**
25617 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
25618 */
25619private pattern mustInRelationterminator_reference_FunctionalData(
25620 problem:LogicProblem, interpretation:PartialInterpretation,
25621 source: DefinedElement, target:DefinedElement)
25622{
25623 find interpretation(problem,interpretation);
25624 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25625 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
25626 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25627 BinaryElementRelationLink.param1(link,source);
25628 BinaryElementRelationLink.param2(link,target);
25629}
25630/**
25631 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
25632 */
25633private pattern mayInRelationterminator_reference_FunctionalData(
25634 problem:LogicProblem, interpretation:PartialInterpretation,
25635 source: DefinedElement, target:DefinedElement)
25636{
25637 find interpretation(problem,interpretation);
25638 // The two endpoint of the link have to exist
25639 find mayExist(problem, interpretation, source);
25640 find mayExist(problem, interpretation, target);
25641 // Type consistency
25642 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
25643 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
25644 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25645 // the upper bound of the multiplicity should be considered.
25646 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
25647 check(numberOfExistingReferences < 1);
25648 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
25649 // the upper bound of the opposite reference multiplicity should be considered.
25650 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
25651 check(numberOfExistingOppositeReferences < 1);
25652 // The reference is containment, then a new reference cannot be create if:
25653 // 1. Multiple parents
25654 neg find mustContains4(problem,interpretation,_,target);
25655 // 2. Circle in the containment hierarchy
25656 neg find mustTransitiveContains(source,target);
25657} or {
25658 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
25659}
25660/**
25661 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
25662 */
25663private pattern mustInRelationinterface_reference_FunctionalData(
25664 problem:LogicProblem, interpretation:PartialInterpretation,
25665 source: DefinedElement, target:DefinedElement)
25666{
25667 find interpretation(problem,interpretation);
25668 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25669 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
25670 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25671 BinaryElementRelationLink.param1(link,source);
25672 BinaryElementRelationLink.param2(link,target);
25673}
25674/**
25675 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
25676 */
25677private pattern mayInRelationinterface_reference_FunctionalData(
25678 problem:LogicProblem, interpretation:PartialInterpretation,
25679 source: DefinedElement, target:DefinedElement)
25680{
25681 find interpretation(problem,interpretation);
25682 // The two endpoint of the link have to exist
25683 find mayExist(problem, interpretation, source);
25684 find mayExist(problem, interpretation, target);
25685 // Type consistency
25686 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
25687 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
25688 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25689 // the upper bound of the multiplicity should be considered.
25690 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
25691 check(numberOfExistingReferences < 1);
25692 // The eOpposite of the reference is containment, then a referene cannot be created if
25693 // 1. Multiple parents
25694 neg find mustContains4(problem,interpretation,source,_);
25695 // 2. Circle in the containment hierarchy
25696 neg find mustTransitiveContains(source,target);
25697} or {
25698 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
25699}
25700/**
25701 * Matcher for detecting tuples t where []type attribute Function(source,target)
25702 */
25703private pattern mustInRelationtype_attribute_Function(
25704 problem:LogicProblem, interpretation:PartialInterpretation,
25705 source: DefinedElement, target:DefinedElement)
25706{
25707 find interpretation(problem,interpretation);
25708 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25709 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
25710 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
25711 BinaryElementRelationLink.param1(link,source);
25712 BinaryElementRelationLink.param2(link,target);
25713}
25714/**
25715 * Matcher for detecting tuples t where <>type attribute Function(source,target)
25716 */
25717private pattern mayInRelationtype_attribute_Function(
25718 problem:LogicProblem, interpretation:PartialInterpretation,
25719 source: DefinedElement, target:DefinedElement)
25720{
25721 find interpretation(problem,interpretation);
25722 // The two endpoint of the link have to exist
25723 find mayExist(problem, interpretation, source);
25724 find mayExist(problem, interpretation, target);
25725 // Type consistency
25726 find mayInstanceOfFunction_class(problem,interpretation,source);
25727 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
25728 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
25729 // the upper bound of the multiplicity should be considered.
25730 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
25731 check(numberOfExistingReferences < 1);
25732} or {
25733 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
25734}
25735
25736//////////
25737// 1.3 Relation Definition Indexers
25738//////////
25739
25740//////////
25741// 1.4 Containment Indexer
25742//////////
25743private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
25744 find mustContains4(_,_,source,target);
25745}
25746
25747private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
25748 source: DefinedElement, target: DefinedElement)
25749 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
25750
25751 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
25752
25753 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
25754
25755 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
25756
25757 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
25758
25759 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
25760
25761private pattern mustTransitiveContains(source,target) {
25762 find mustContains2+(source,target);
25763}
25764
25765//////////
25766// 2. Invalidation Indexers
25767//////////
25768// 2.1 Invalidated by WF Queries
25769//////////
25770
25771//////////
25772// 3. Unfinishedness Indexers
25773//////////
25774// 3.1 Unfinishedness Measured by Multiplicity
25775//////////
25776pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
25777 find interpretation(problem,interpretation);
25778 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25779 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
25780 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
25781 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
25782 check(numberOfExistingReferences < 1);
25783 missingMultiplicity == eval(1-numberOfExistingReferences);
25784}
25785pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
25786 find interpretation(problem,interpretation);
25787 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25788 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
25789 find mustInstanceOfInformationLink_class(problem,interpretation,object);
25790 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
25791 check(numberOfExistingReferences < 1);
25792 missingMultiplicity == eval(1-numberOfExistingReferences);
25793}
25794pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
25795 find interpretation(problem,interpretation);
25796 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
25797 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
25798 find mustInstanceOfFunction_class(problem,interpretation,object);
25799 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
25800 check(numberOfExistingReferences < 1);
25801 missingMultiplicity == eval(1-numberOfExistingReferences);
25802}
25803
25804//////////
25805// 3.2 Unfinishedness Measured by WF Queries
25806//////////
25807
25808//////////
25809// 4. Refinement Indexers
25810//////////
25811// 4.1 Object constructors
25812//////////
25813private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
25814{
25815 find interpretation(problem,interpretation);
25816 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
25817 find mustExist(problem, interpretation, root);
25818}or{
25819 find interpretation(problem,interpretation);
25820 find mustInstanceOfFunction_class(problem,interpretation,root);
25821 find mustExist(problem, interpretation, root);
25822}or{
25823 find interpretation(problem,interpretation);
25824 find mustInstanceOfInformationLink_class(problem,interpretation,root);
25825 find mustExist(problem, interpretation, root);
25826}or{
25827 find interpretation(problem,interpretation);
25828 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
25829 find mustExist(problem, interpretation, root);
25830}or{
25831 find interpretation(problem,interpretation);
25832 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
25833 find mustExist(problem, interpretation, root);
25834}or{
25835 find interpretation(problem,interpretation);
25836 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
25837 find mustExist(problem, interpretation, root);
25838}or{
25839 find interpretation(problem,interpretation);
25840 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
25841 find mustExist(problem, interpretation, root);
25842}or{
25843 find interpretation(problem,interpretation);
25844 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
25845 find mustExist(problem, interpretation, root);
25846}or{
25847 find interpretation(problem,interpretation);
25848 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
25849 find mustExist(problem, interpretation, root);
25850}or{
25851 find interpretation(problem,interpretation);
25852 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
25853 find mustExist(problem, interpretation, root);
25854}or{
25855 find interpretation(problem,interpretation);
25856 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
25857 find mustExist(problem, interpretation, root);
25858}
25859pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
25860 problem:LogicProblem, interpretation:PartialInterpretation,
25861 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
25862 container:DefinedElement)
25863{
25864 find interpretation(problem,interpretation);
25865 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
25866 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
25867 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
25868 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
25869 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
25870 find mayInstanceOfFunction_class(problem,interpretation,newObject);
25871 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
25872 find mustExist(problem, interpretation, container);
25873 neg find mustExist(problem, interpretation, newObject);
25874}
25875pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
25876 problem:LogicProblem, interpretation:PartialInterpretation,
25877 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
25878 container:DefinedElement)
25879{
25880 find interpretation(problem,interpretation);
25881 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
25882 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
25883 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
25884 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
25885 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
25886 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
25887 find mustInstanceOfFunction_class(problem,interpretation,container);
25888 find mayInstanceOfFunction_class(problem,interpretation,newObject);
25889 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
25890 find mustExist(problem, interpretation, container);
25891 neg find mustExist(problem, interpretation, newObject);
25892}
25893pattern createObject_Function_class(
25894 problem:LogicProblem, interpretation:PartialInterpretation,
25895 typeInterpretation:PartialComplexTypeInterpretation)
25896{
25897 find interpretation(problem,interpretation);
25898 neg find hasElementInContainment(problem,interpretation);
25899 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
25900 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
25901 find mayInstanceOfFunction_class(problem,interpretation,newObject);
25902 find mayExist(problem, interpretation, newObject);
25903 neg find mustExist(problem, interpretation, newObject);
25904}
25905pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
25906 problem:LogicProblem, interpretation:PartialInterpretation,
25907 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
25908 container:DefinedElement)
25909{
25910 find interpretation(problem,interpretation);
25911 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
25912 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
25913 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
25914 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
25915 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
25916 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
25917 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
25918 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
25919 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
25920 find mustExist(problem, interpretation, container);
25921 neg find mustExist(problem, interpretation, newObject);
25922}
25923pattern createObject_FAMTerminator_class(
25924 problem:LogicProblem, interpretation:PartialInterpretation,
25925 typeInterpretation:PartialComplexTypeInterpretation)
25926{
25927 find interpretation(problem,interpretation);
25928 neg find hasElementInContainment(problem,interpretation);
25929 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
25930 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
25931 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
25932 find mayExist(problem, interpretation, newObject);
25933 neg find mustExist(problem, interpretation, newObject);
25934}
25935pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
25936 problem:LogicProblem, interpretation:PartialInterpretation,
25937 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
25938 container:DefinedElement)
25939{
25940 find interpretation(problem,interpretation);
25941 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
25942 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
25943 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
25944 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
25945 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
25946 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
25947 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
25948 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
25949 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
25950 find mustExist(problem, interpretation, container);
25951 neg find mustExist(problem, interpretation, newObject);
25952}
25953pattern createObject_FunctionalOutput_class(
25954 problem:LogicProblem, interpretation:PartialInterpretation,
25955 typeInterpretation:PartialComplexTypeInterpretation)
25956{
25957 find interpretation(problem,interpretation);
25958 neg find hasElementInContainment(problem,interpretation);
25959 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
25960 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
25961 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
25962 find mayExist(problem, interpretation, newObject);
25963 neg find mustExist(problem, interpretation, newObject);
25964}
25965pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
25966 problem:LogicProblem, interpretation:PartialInterpretation,
25967 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
25968 container:DefinedElement)
25969{
25970 find interpretation(problem,interpretation);
25971 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
25972 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
25973 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
25974 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
25975 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
25976 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
25977 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
25978 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
25979 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
25980 find mustExist(problem, interpretation, container);
25981 neg find mustExist(problem, interpretation, newObject);
25982}
25983pattern createObject_FunctionalInterface_class(
25984 problem:LogicProblem, interpretation:PartialInterpretation,
25985 typeInterpretation:PartialComplexTypeInterpretation)
25986{
25987 find interpretation(problem,interpretation);
25988 neg find hasElementInContainment(problem,interpretation);
25989 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
25990 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
25991 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
25992 find mayExist(problem, interpretation, newObject);
25993 neg find mustExist(problem, interpretation, newObject);
25994}
25995pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
25996 problem:LogicProblem, interpretation:PartialInterpretation,
25997 typeInterpretation:PartialComplexTypeInterpretation)
25998{
25999 find interpretation(problem,interpretation);
26000 neg find hasElementInContainment(problem,interpretation);
26001 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26002 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
26003 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
26004 find mayExist(problem, interpretation, newObject);
26005 neg find mustExist(problem, interpretation, newObject);
26006}
26007pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
26008 problem:LogicProblem, interpretation:PartialInterpretation,
26009 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26010 container:DefinedElement)
26011{
26012 find interpretation(problem,interpretation);
26013 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26014 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
26015 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26016 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
26017 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26018 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
26019 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
26020 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
26021 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
26022 find mustExist(problem, interpretation, container);
26023 neg find mustExist(problem, interpretation, newObject);
26024}
26025pattern createObject_FunctionalInput_class(
26026 problem:LogicProblem, interpretation:PartialInterpretation,
26027 typeInterpretation:PartialComplexTypeInterpretation)
26028{
26029 find interpretation(problem,interpretation);
26030 neg find hasElementInContainment(problem,interpretation);
26031 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26032 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
26033 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
26034 find mayExist(problem, interpretation, newObject);
26035 neg find mustExist(problem, interpretation, newObject);
26036}
26037pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
26038 problem:LogicProblem, interpretation:PartialInterpretation,
26039 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
26040 container:DefinedElement)
26041{
26042 find interpretation(problem,interpretation);
26043 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26044 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
26045 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
26046 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
26047 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
26048 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
26049 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
26050 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
26051 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
26052 find mustExist(problem, interpretation, container);
26053 neg find mustExist(problem, interpretation, newObject);
26054}
26055pattern createObject_InformationLink_class(
26056 problem:LogicProblem, interpretation:PartialInterpretation,
26057 typeInterpretation:PartialComplexTypeInterpretation)
26058{
26059 find interpretation(problem,interpretation);
26060 neg find hasElementInContainment(problem,interpretation);
26061 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26062 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
26063 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
26064 find mayExist(problem, interpretation, newObject);
26065 neg find mustExist(problem, interpretation, newObject);
26066}
26067
26068//////////
26069// 4.2 Type refinement
26070//////////
26071pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26072 find interpretation(problem,interpretation);
26073 PartialInterpretation.newElements(interpretation,element);
26074 find mayInstanceOfFunction_class(problem,interpretation,element);
26075 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
26076 neg find mustInstanceOfFunction_class(problem,interpretation,element);
26077 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
26078 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
26079 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
26080 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
26081}
26082pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26083 find interpretation(problem,interpretation);
26084 PartialInterpretation.newElements(interpretation,element);
26085 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
26086 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
26087 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
26088 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
26089 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
26090 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
26091 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
26092}
26093pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26094 find interpretation(problem,interpretation);
26095 PartialInterpretation.newElements(interpretation,element);
26096 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
26097 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
26098 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
26099 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
26100 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
26101 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
26102 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
26103 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
26104}
26105pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26106 find interpretation(problem,interpretation);
26107 PartialInterpretation.newElements(interpretation,element);
26108 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
26109 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
26110 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
26111 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
26112 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
26113 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
26114 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
26115}
26116pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26117 find interpretation(problem,interpretation);
26118 PartialInterpretation.newElements(interpretation,element);
26119 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
26120 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
26121 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
26122 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
26123 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
26124 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
26125 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
26126}
26127pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26128 find interpretation(problem,interpretation);
26129 PartialInterpretation.newElements(interpretation,element);
26130 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
26131 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
26132 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
26133 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
26134 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
26135 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
26136 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
26137 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
26138}
26139pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
26140 find interpretation(problem,interpretation);
26141 PartialInterpretation.newElements(interpretation,element);
26142 find mayInstanceOfInformationLink_class(problem,interpretation,element);
26143 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
26144 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
26145 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
26146 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
26147 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
26148 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
26149}
26150
26151//////////
26152// 4.3 Relation refinement
26153//////////
26154pattern refineRelation_model_reference_FunctionalElement(
26155 problem:LogicProblem, interpretation:PartialInterpretation,
26156 relationIterpretation:PartialRelationInterpretation,
26157 from: DefinedElement, to: DefinedElement)
26158{
26159 find interpretation(problem,interpretation);
26160 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26161 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
26162 find mustExist(problem, interpretation, from);
26163 find mustExist(problem, interpretation, to);
26164 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
26165 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
26166 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
26167 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
26168}
26169pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
26170 problem:LogicProblem, interpretation:PartialInterpretation,
26171 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
26172 from: DefinedElement, to: DefinedElement)
26173{
26174 find interpretation(problem,interpretation);
26175 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26176 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
26177 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
26178 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
26179 find mustExist(problem, interpretation, from);
26180 find mustExist(problem, interpretation, to);
26181 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
26182 find mustInstanceOfInformationLink_class(problem,interpretation,to);
26183 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
26184 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
26185}
26186pattern refineRelation_type_attribute_Function(
26187 problem:LogicProblem, interpretation:PartialInterpretation,
26188 relationIterpretation:PartialRelationInterpretation,
26189 from: DefinedElement, to: DefinedElement)
26190{
26191 find interpretation(problem,interpretation);
26192 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26193 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
26194 find mustExist(problem, interpretation, from);
26195 find mustExist(problem, interpretation, to);
26196 find mustInstanceOfFunction_class(problem,interpretation,from);
26197 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
26198 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
26199 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
26200}
26201import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
26202import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
26203import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
26204
26205//////////
26206// 0. Util
26207//////////
26208private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
26209 PartialInterpretation.problem(interpretation,problem);
26210}
26211
26212/////////////////////////
26213// 0.1 Existence
26214/////////////////////////
26215private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26216 find interpretation(problem,interpretation);
26217 LogicProblem.elements(problem,element);
26218} or {
26219 find interpretation(problem,interpretation);
26220 PartialInterpretation.newElements(interpretation,element);
26221}
26222
26223private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26224 find mustExist(problem,interpretation,element);
26225} or {
26226 find interpretation(problem,interpretation);
26227 neg find elementCloseWorld(element);
26228 PartialInterpretation.openWorldElements(interpretation,element);
26229}
26230
26231private pattern elementCloseWorld(element:DefinedElement) {
26232 PartialInterpretation.openWorldElements(i,element);
26233 PartialInterpretation.maxNewElements(i,0);
26234} or {
26235 Scope.targetTypeInterpretation(scope,interpretation);
26236 PartialTypeInterpratation.elements(interpretation,element);
26237 Scope.maxNewElements(scope,0);
26238}
26239
26240////////////////////////
26241// 0.2 Equivalence
26242////////////////////////
26243pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
26244 find mayExist(problem,interpretation,a);
26245 find mayExist(problem,interpretation,b);
26246 a == b;
26247}
26248
26249////////////////////////
26250// 0.3 Required Patterns by TypeIndexer
26251////////////////////////
26252private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
26253 find interpretation(problem,interpretation);
26254 LogicProblem.types(problem,type);
26255 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
26256 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26257}
26258
26259private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
26260 find interpretation(problem,interpretation);
26261 LogicProblem.types(problem,type);
26262 TypeDefinition.elements(type,element);
26263} or {
26264 find interpretation(problem,interpretation);
26265 find typeInterpretation(problem,interpretation,type,typeInterpretation);
26266 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
26267}
26268
26269private pattern isPrimitive(element: PrimitiveElement) {
26270 PrimitiveElement(element);
26271}
26272
26273//////////
26274// 1. Problem-Specific Base Indexers
26275//////////
26276// 1.1 Type Indexers
26277//////////
26278// 1.1.1 primitive Type Indexers
26279//////////
26280
26281//////////
26282// 1.1.2 domain-specific Type Indexers
26283//////////
26284/**
26285 * An element must be an instance of type "EAttribute class".
26286 */
26287private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26288 Type.name(type,"EAttribute class");
26289 find directInstanceOf(problem,interpretation,element,type);
26290}
26291private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26292 find interpretation(problem,interpretation);
26293 PartialInterpretation.scopes(interpretation,scope);
26294 Scope.targetTypeInterpretation(scope,typeInterpretation);
26295 Scope.maxNewElements(scope,0);
26296 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26297 Type.name(type,"EAttribute class");
26298}
26299
26300/**
26301 * An element may be an instance of type "EAttribute class".
26302 */
26303private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26304{
26305 find interpretation(problem,interpretation);
26306 PartialInterpretation.newElements(interpretation,element);
26307 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26308 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26309 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26310 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26311 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26312 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26313 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26314 neg find mustInstanceOfEReference_class(problem,interpretation,element);
26315 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26316 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26317 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26318 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
26319 neg find isPrimitive(element);
26320} or {
26321 find interpretation(problem,interpretation);
26322 PartialInterpretation.openWorldElements(interpretation,element);
26323 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26324 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26325 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26326 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26327 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26328 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26329 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26330 neg find mustInstanceOfEReference_class(problem,interpretation,element);
26331 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26332 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26333 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26334 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
26335 neg find isPrimitive(element);
26336} or
26337{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
26338/**
26339 * An element must be an instance of type "EAnnotation class".
26340 */
26341private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26342 Type.name(type,"EAnnotation class");
26343 find directInstanceOf(problem,interpretation,element,type);
26344}
26345private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26346 find interpretation(problem,interpretation);
26347 PartialInterpretation.scopes(interpretation,scope);
26348 Scope.targetTypeInterpretation(scope,typeInterpretation);
26349 Scope.maxNewElements(scope,0);
26350 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26351 Type.name(type,"EAnnotation class");
26352}
26353
26354/**
26355 * An element may be an instance of type "EAnnotation class".
26356 */
26357private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26358{
26359 find interpretation(problem,interpretation);
26360 PartialInterpretation.newElements(interpretation,element);
26361 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26362 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26363 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26364 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
26365 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
26366 neg find isPrimitive(element);
26367} or {
26368 find interpretation(problem,interpretation);
26369 PartialInterpretation.openWorldElements(interpretation,element);
26370 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26371 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26372 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26373 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
26374 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
26375 neg find isPrimitive(element);
26376} or
26377{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
26378/**
26379 * An element must be an instance of type "EClass class".
26380 */
26381private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26382 Type.name(type,"EClass class");
26383 find directInstanceOf(problem,interpretation,element,type);
26384}
26385private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26386 find interpretation(problem,interpretation);
26387 PartialInterpretation.scopes(interpretation,scope);
26388 Scope.targetTypeInterpretation(scope,typeInterpretation);
26389 Scope.maxNewElements(scope,0);
26390 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26391 Type.name(type,"EClass class");
26392}
26393
26394/**
26395 * An element may be an instance of type "EClass class".
26396 */
26397private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26398{
26399 find interpretation(problem,interpretation);
26400 PartialInterpretation.newElements(interpretation,element);
26401 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26402 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26403 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26404 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26405 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
26406 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26407 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26408 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26409 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26410 neg find scopeDisallowsNewEClass_class(problem, interpretation);
26411 neg find isPrimitive(element);
26412} or {
26413 find interpretation(problem,interpretation);
26414 PartialInterpretation.openWorldElements(interpretation,element);
26415 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26416 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26417 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26418 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26419 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
26420 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26421 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26422 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26423 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26424 neg find scopeDisallowsNewEClass_class(problem, interpretation);
26425 neg find isPrimitive(element);
26426} or
26427{ find mustInstanceOfEClass_class(problem,interpretation,element); }
26428/**
26429 * An element must be an instance of type "EClassifier class".
26430 */
26431private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26432 Type.name(type,"EClassifier class");
26433 find directInstanceOf(problem,interpretation,element,type);
26434}
26435private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26436 find interpretation(problem,interpretation);
26437 PartialInterpretation.scopes(interpretation,scope);
26438 Scope.targetTypeInterpretation(scope,typeInterpretation);
26439 Scope.maxNewElements(scope,0);
26440 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26441 Type.name(type,"EClassifier class");
26442}
26443
26444/**
26445 * An element may be an instance of type "EClassifier class".
26446 */
26447private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26448{
26449 find interpretation(problem,interpretation);
26450 PartialInterpretation.newElements(interpretation,element);
26451 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26452 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26453 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26454 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26455 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
26456 neg find mustInstanceOfEClass_class(problem,interpretation,element);
26457 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26458 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26459 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26460 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26461 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
26462 neg find isPrimitive(element);
26463} or {
26464 find interpretation(problem,interpretation);
26465 PartialInterpretation.openWorldElements(interpretation,element);
26466 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26467 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26468 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26469 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26470 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
26471 neg find mustInstanceOfEClass_class(problem,interpretation,element);
26472 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26473 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26474 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26475 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26476 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
26477 neg find isPrimitive(element);
26478} or
26479{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
26480/**
26481 * An element must be an instance of type "EDataType class".
26482 */
26483private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26484 Type.name(type,"EDataType class");
26485 find directInstanceOf(problem,interpretation,element,type);
26486}
26487private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26488 find interpretation(problem,interpretation);
26489 PartialInterpretation.scopes(interpretation,scope);
26490 Scope.targetTypeInterpretation(scope,typeInterpretation);
26491 Scope.maxNewElements(scope,0);
26492 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26493 Type.name(type,"EDataType class");
26494}
26495
26496/**
26497 * An element may be an instance of type "EDataType class".
26498 */
26499private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26500{
26501 find interpretation(problem,interpretation);
26502 PartialInterpretation.newElements(interpretation,element);
26503 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26504 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
26505 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26506 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26507 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26508 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26509 neg find mustInstanceOfEClass_class(problem,interpretation,element);
26510 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26511 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26512 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26513 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
26514 neg find isPrimitive(element);
26515} or {
26516 find interpretation(problem,interpretation);
26517 PartialInterpretation.openWorldElements(interpretation,element);
26518 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26519 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
26520 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26521 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26522 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26523 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26524 neg find mustInstanceOfEClass_class(problem,interpretation,element);
26525 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26526 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26527 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26528 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
26529 neg find isPrimitive(element);
26530} or
26531{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
26532/**
26533 * An element must be an instance of type "EEnum class".
26534 */
26535private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26536 Type.name(type,"EEnum class");
26537 find directInstanceOf(problem,interpretation,element,type);
26538}
26539private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26540 find interpretation(problem,interpretation);
26541 PartialInterpretation.scopes(interpretation,scope);
26542 Scope.targetTypeInterpretation(scope,typeInterpretation);
26543 Scope.maxNewElements(scope,0);
26544 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26545 Type.name(type,"EEnum class");
26546}
26547
26548/**
26549 * An element may be an instance of type "EEnum class".
26550 */
26551private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26552{
26553 find interpretation(problem,interpretation);
26554 PartialInterpretation.newElements(interpretation,element);
26555 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26556 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26557 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26558 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26559 neg find mustInstanceOfEClass_class(problem,interpretation,element);
26560 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26561 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26562 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26563 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26564 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
26565 neg find isPrimitive(element);
26566} or {
26567 find interpretation(problem,interpretation);
26568 PartialInterpretation.openWorldElements(interpretation,element);
26569 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26570 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26571 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26572 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26573 neg find mustInstanceOfEClass_class(problem,interpretation,element);
26574 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26575 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26576 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26577 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26578 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
26579 neg find isPrimitive(element);
26580} or
26581{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
26582/**
26583 * An element must be an instance of type "EEnumLiteral class".
26584 */
26585private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26586 Type.name(type,"EEnumLiteral class");
26587 find directInstanceOf(problem,interpretation,element,type);
26588}
26589private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26590 find interpretation(problem,interpretation);
26591 PartialInterpretation.scopes(interpretation,scope);
26592 Scope.targetTypeInterpretation(scope,typeInterpretation);
26593 Scope.maxNewElements(scope,0);
26594 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26595 Type.name(type,"EEnumLiteral class");
26596}
26597
26598/**
26599 * An element may be an instance of type "EEnumLiteral class".
26600 */
26601private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26602{
26603 find interpretation(problem,interpretation);
26604 PartialInterpretation.newElements(interpretation,element);
26605 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26606 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26607 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26608 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26609 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26610 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26611 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26612 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26613 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
26614 neg find isPrimitive(element);
26615} or {
26616 find interpretation(problem,interpretation);
26617 PartialInterpretation.openWorldElements(interpretation,element);
26618 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26619 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26620 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26621 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26622 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26623 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26624 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
26625 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26626 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
26627 neg find isPrimitive(element);
26628} or
26629{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
26630/**
26631 * An element must be an instance of type "EModelElement class".
26632 */
26633private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26634 Type.name(type,"EModelElement class");
26635 find directInstanceOf(problem,interpretation,element,type);
26636}
26637private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26638 find interpretation(problem,interpretation);
26639 PartialInterpretation.scopes(interpretation,scope);
26640 Scope.targetTypeInterpretation(scope,typeInterpretation);
26641 Scope.maxNewElements(scope,0);
26642 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26643 Type.name(type,"EModelElement class");
26644}
26645
26646/**
26647 * An element may be an instance of type "EModelElement class".
26648 */
26649private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26650{
26651 find interpretation(problem,interpretation);
26652 PartialInterpretation.newElements(interpretation,element);
26653 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26654 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26655 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
26656 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26657 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
26658 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
26659 neg find isPrimitive(element);
26660} or {
26661 find interpretation(problem,interpretation);
26662 PartialInterpretation.openWorldElements(interpretation,element);
26663 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26664 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26665 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
26666 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26667 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
26668 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
26669 neg find isPrimitive(element);
26670} or
26671{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
26672/**
26673 * An element must be an instance of type "ENamedElement class".
26674 */
26675private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26676 Type.name(type,"ENamedElement class");
26677 find directInstanceOf(problem,interpretation,element,type);
26678}
26679private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26680 find interpretation(problem,interpretation);
26681 PartialInterpretation.scopes(interpretation,scope);
26682 Scope.targetTypeInterpretation(scope,typeInterpretation);
26683 Scope.maxNewElements(scope,0);
26684 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26685 Type.name(type,"ENamedElement class");
26686}
26687
26688/**
26689 * An element may be an instance of type "ENamedElement class".
26690 */
26691private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26692{
26693 find interpretation(problem,interpretation);
26694 PartialInterpretation.newElements(interpretation,element);
26695 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26696 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26697 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26698 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
26699 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26700 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
26701 neg find isPrimitive(element);
26702} or {
26703 find interpretation(problem,interpretation);
26704 PartialInterpretation.openWorldElements(interpretation,element);
26705 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26706 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26707 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26708 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
26709 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26710 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
26711 neg find isPrimitive(element);
26712} or
26713{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
26714/**
26715 * An element must be an instance of type "EObject class".
26716 */
26717private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26718 Type.name(type,"EObject class");
26719 find directInstanceOf(problem,interpretation,element,type);
26720}
26721private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26722 find interpretation(problem,interpretation);
26723 PartialInterpretation.scopes(interpretation,scope);
26724 Scope.targetTypeInterpretation(scope,typeInterpretation);
26725 Scope.maxNewElements(scope,0);
26726 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26727 Type.name(type,"EObject class");
26728}
26729
26730/**
26731 * An element may be an instance of type "EObject class".
26732 */
26733private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26734{
26735 find interpretation(problem,interpretation);
26736 PartialInterpretation.newElements(interpretation,element);
26737 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
26738 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26739 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26740 neg find scopeDisallowsNewEObject_class(problem, interpretation);
26741 neg find isPrimitive(element);
26742} or {
26743 find interpretation(problem,interpretation);
26744 PartialInterpretation.openWorldElements(interpretation,element);
26745 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
26746 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26747 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26748 neg find scopeDisallowsNewEObject_class(problem, interpretation);
26749 neg find isPrimitive(element);
26750} or
26751{ find mustInstanceOfEObject_class(problem,interpretation,element); }
26752/**
26753 * An element must be an instance of type "EOperation class".
26754 */
26755private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26756 Type.name(type,"EOperation class");
26757 find directInstanceOf(problem,interpretation,element,type);
26758}
26759private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26760 find interpretation(problem,interpretation);
26761 PartialInterpretation.scopes(interpretation,scope);
26762 Scope.targetTypeInterpretation(scope,typeInterpretation);
26763 Scope.maxNewElements(scope,0);
26764 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26765 Type.name(type,"EOperation class");
26766}
26767
26768/**
26769 * An element may be an instance of type "EOperation class".
26770 */
26771private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26772{
26773 find interpretation(problem,interpretation);
26774 PartialInterpretation.newElements(interpretation,element);
26775 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26776 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26777 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26778 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26779 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
26780 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26781 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26782 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26783 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26784 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26785 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
26786 neg find isPrimitive(element);
26787} or {
26788 find interpretation(problem,interpretation);
26789 PartialInterpretation.openWorldElements(interpretation,element);
26790 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26791 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26792 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26793 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26794 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
26795 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26796 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26797 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26798 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26799 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26800 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
26801 neg find isPrimitive(element);
26802} or
26803{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
26804/**
26805 * An element must be an instance of type "EPackage class".
26806 */
26807private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26808 Type.name(type,"EPackage class");
26809 find directInstanceOf(problem,interpretation,element,type);
26810}
26811private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26812 find interpretation(problem,interpretation);
26813 PartialInterpretation.scopes(interpretation,scope);
26814 Scope.targetTypeInterpretation(scope,typeInterpretation);
26815 Scope.maxNewElements(scope,0);
26816 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26817 Type.name(type,"EPackage class");
26818}
26819
26820/**
26821 * An element may be an instance of type "EPackage class".
26822 */
26823private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26824{
26825 find interpretation(problem,interpretation);
26826 PartialInterpretation.newElements(interpretation,element);
26827 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26828 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26829 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
26830 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26831 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
26832 neg find isPrimitive(element);
26833} or {
26834 find interpretation(problem,interpretation);
26835 PartialInterpretation.openWorldElements(interpretation,element);
26836 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26837 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26838 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
26839 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26840 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
26841 neg find isPrimitive(element);
26842} or
26843{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
26844/**
26845 * An element must be an instance of type "EParameter class".
26846 */
26847private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26848 Type.name(type,"EParameter class");
26849 find directInstanceOf(problem,interpretation,element,type);
26850}
26851private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26852 find interpretation(problem,interpretation);
26853 PartialInterpretation.scopes(interpretation,scope);
26854 Scope.targetTypeInterpretation(scope,typeInterpretation);
26855 Scope.maxNewElements(scope,0);
26856 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26857 Type.name(type,"EParameter class");
26858}
26859
26860/**
26861 * An element may be an instance of type "EParameter class".
26862 */
26863private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26864{
26865 find interpretation(problem,interpretation);
26866 PartialInterpretation.newElements(interpretation,element);
26867 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26868 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26869 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26870 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26871 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26872 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
26873 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26874 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26875 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26876 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26877 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
26878 neg find isPrimitive(element);
26879} or {
26880 find interpretation(problem,interpretation);
26881 PartialInterpretation.openWorldElements(interpretation,element);
26882 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26883 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26884 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26885 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26886 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26887 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
26888 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26889 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26890 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26891 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26892 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
26893 neg find isPrimitive(element);
26894} or
26895{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
26896/**
26897 * An element must be an instance of type "EReference class".
26898 */
26899private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26900 Type.name(type,"EReference class");
26901 find directInstanceOf(problem,interpretation,element,type);
26902}
26903private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26904 find interpretation(problem,interpretation);
26905 PartialInterpretation.scopes(interpretation,scope);
26906 Scope.targetTypeInterpretation(scope,typeInterpretation);
26907 Scope.maxNewElements(scope,0);
26908 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26909 Type.name(type,"EReference class");
26910}
26911
26912/**
26913 * An element may be an instance of type "EReference class".
26914 */
26915private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26916{
26917 find interpretation(problem,interpretation);
26918 PartialInterpretation.newElements(interpretation,element);
26919 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
26920 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26921 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26922 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26923 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26924 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26925 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26926 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26927 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26928 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26929 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26930 neg find scopeDisallowsNewEReference_class(problem, interpretation);
26931 neg find isPrimitive(element);
26932} or {
26933 find interpretation(problem,interpretation);
26934 PartialInterpretation.openWorldElements(interpretation,element);
26935 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
26936 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26937 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26938 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26939 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26940 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26941 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26942 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26943 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26944 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26945 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26946 neg find scopeDisallowsNewEReference_class(problem, interpretation);
26947 neg find isPrimitive(element);
26948} or
26949{ find mustInstanceOfEReference_class(problem,interpretation,element); }
26950/**
26951 * An element must be an instance of type "EStructuralFeature class".
26952 */
26953private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26954 Type.name(type,"EStructuralFeature class");
26955 find directInstanceOf(problem,interpretation,element,type);
26956}
26957private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
26958 find interpretation(problem,interpretation);
26959 PartialInterpretation.scopes(interpretation,scope);
26960 Scope.targetTypeInterpretation(scope,typeInterpretation);
26961 Scope.maxNewElements(scope,0);
26962 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
26963 Type.name(type,"EStructuralFeature class");
26964}
26965
26966/**
26967 * An element may be an instance of type "EStructuralFeature class".
26968 */
26969private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
26970{
26971 find interpretation(problem,interpretation);
26972 PartialInterpretation.newElements(interpretation,element);
26973 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
26974 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26975 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26976 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26977 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26978 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26979 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26980 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26981 neg find mustInstanceOfEReference_class(problem,interpretation,element);
26982 neg find mustInstanceOfEObject_class(problem,interpretation,element);
26983 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
26984 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
26985 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
26986 neg find isPrimitive(element);
26987} or {
26988 find interpretation(problem,interpretation);
26989 PartialInterpretation.openWorldElements(interpretation,element);
26990 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
26991 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
26992 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
26993 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
26994 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
26995 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
26996 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
26997 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
26998 neg find mustInstanceOfEReference_class(problem,interpretation,element);
26999 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27000 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
27001 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
27002 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
27003 neg find isPrimitive(element);
27004} or
27005{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
27006/**
27007 * An element must be an instance of type "ETypedElement class".
27008 */
27009private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27010 Type.name(type,"ETypedElement class");
27011 find directInstanceOf(problem,interpretation,element,type);
27012}
27013private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
27014 find interpretation(problem,interpretation);
27015 PartialInterpretation.scopes(interpretation,scope);
27016 Scope.targetTypeInterpretation(scope,typeInterpretation);
27017 Scope.maxNewElements(scope,0);
27018 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27019 Type.name(type,"ETypedElement class");
27020}
27021
27022/**
27023 * An element may be an instance of type "ETypedElement class".
27024 */
27025private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27026{
27027 find interpretation(problem,interpretation);
27028 PartialInterpretation.newElements(interpretation,element);
27029 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27030 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
27031 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27032 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
27033 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27034 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
27035 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
27036 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
27037 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27038 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
27039 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
27040 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
27041 neg find isPrimitive(element);
27042} or {
27043 find interpretation(problem,interpretation);
27044 PartialInterpretation.openWorldElements(interpretation,element);
27045 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27046 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
27047 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27048 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
27049 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27050 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
27051 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
27052 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
27053 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27054 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
27055 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
27056 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
27057 neg find isPrimitive(element);
27058} or
27059{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
27060/**
27061 * An element must be an instance of type "EStringToStringMapEntry class".
27062 */
27063private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27064 Type.name(type,"EStringToStringMapEntry class");
27065 find directInstanceOf(problem,interpretation,element,type);
27066}
27067private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
27068 find interpretation(problem,interpretation);
27069 PartialInterpretation.scopes(interpretation,scope);
27070 Scope.targetTypeInterpretation(scope,typeInterpretation);
27071 Scope.maxNewElements(scope,0);
27072 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27073 Type.name(type,"EStringToStringMapEntry class");
27074}
27075
27076/**
27077 * An element may be an instance of type "EStringToStringMapEntry class".
27078 */
27079private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27080{
27081 find interpretation(problem,interpretation);
27082 PartialInterpretation.newElements(interpretation,element);
27083 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
27084 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27085 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27086 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
27087 neg find isPrimitive(element);
27088} or {
27089 find interpretation(problem,interpretation);
27090 PartialInterpretation.openWorldElements(interpretation,element);
27091 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
27092 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27093 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27094 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
27095 neg find isPrimitive(element);
27096} or
27097{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
27098/**
27099 * An element must be an instance of type "EGenericType class".
27100 */
27101private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27102 Type.name(type,"EGenericType class");
27103 find directInstanceOf(problem,interpretation,element,type);
27104}
27105private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
27106 find interpretation(problem,interpretation);
27107 PartialInterpretation.scopes(interpretation,scope);
27108 Scope.targetTypeInterpretation(scope,typeInterpretation);
27109 Scope.maxNewElements(scope,0);
27110 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27111 Type.name(type,"EGenericType class");
27112}
27113
27114/**
27115 * An element may be an instance of type "EGenericType class".
27116 */
27117private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27118{
27119 find interpretation(problem,interpretation);
27120 PartialInterpretation.newElements(interpretation,element);
27121 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
27122 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27123 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27124 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
27125 neg find isPrimitive(element);
27126} or {
27127 find interpretation(problem,interpretation);
27128 PartialInterpretation.openWorldElements(interpretation,element);
27129 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
27130 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27131 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27132 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
27133 neg find isPrimitive(element);
27134} or
27135{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
27136/**
27137 * An element must be an instance of type "ETypeParameter class".
27138 */
27139private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27140 Type.name(type,"ETypeParameter class");
27141 find directInstanceOf(problem,interpretation,element,type);
27142}
27143private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
27144 find interpretation(problem,interpretation);
27145 PartialInterpretation.scopes(interpretation,scope);
27146 Scope.targetTypeInterpretation(scope,typeInterpretation);
27147 Scope.maxNewElements(scope,0);
27148 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27149 Type.name(type,"ETypeParameter class");
27150}
27151
27152/**
27153 * An element may be an instance of type "ETypeParameter class".
27154 */
27155private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27156{
27157 find interpretation(problem,interpretation);
27158 PartialInterpretation.newElements(interpretation,element);
27159 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27160 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27161 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
27162 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27163 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
27164 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27165 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
27166 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
27167 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
27168 neg find isPrimitive(element);
27169} or {
27170 find interpretation(problem,interpretation);
27171 PartialInterpretation.openWorldElements(interpretation,element);
27172 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27173 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27174 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
27175 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27176 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
27177 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27178 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
27179 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
27180 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
27181 neg find isPrimitive(element);
27182} or
27183{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
27184/**
27185 * An element must be an instance of type "EModelElement class DefinedPart".
27186 */
27187private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27188 Type.name(type,"EModelElement class DefinedPart");
27189 find directInstanceOf(problem,interpretation,element,type);
27190}
27191private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
27192 find interpretation(problem,interpretation);
27193 PartialInterpretation.scopes(interpretation,scope);
27194 Scope.targetTypeInterpretation(scope,typeInterpretation);
27195 Scope.maxNewElements(scope,0);
27196 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27197 Type.name(type,"EModelElement class DefinedPart");
27198}
27199
27200/**
27201 * An element may be an instance of type "EModelElement class DefinedPart".
27202 */
27203private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27204{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
27205/**
27206 * An element must be an instance of type "EModelElement class UndefinedPart".
27207 */
27208private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27209 Type.name(type,"EModelElement class UndefinedPart");
27210 find directInstanceOf(problem,interpretation,element,type);
27211}
27212private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
27213 find interpretation(problem,interpretation);
27214 PartialInterpretation.scopes(interpretation,scope);
27215 Scope.targetTypeInterpretation(scope,typeInterpretation);
27216 Scope.maxNewElements(scope,0);
27217 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27218 Type.name(type,"EModelElement class UndefinedPart");
27219}
27220
27221/**
27222 * An element may be an instance of type "EModelElement class UndefinedPart".
27223 */
27224private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27225{
27226 find interpretation(problem,interpretation);
27227 PartialInterpretation.newElements(interpretation,element);
27228 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27229 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27230 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27231 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27232 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
27233 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
27234 neg find isPrimitive(element);
27235} or {
27236 find interpretation(problem,interpretation);
27237 PartialInterpretation.openWorldElements(interpretation,element);
27238 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27239 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27240 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27241 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27242 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
27243 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
27244 neg find isPrimitive(element);
27245} or
27246{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
27247/**
27248 * An element must be an instance of type "ENamedElement class DefinedPart".
27249 */
27250private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27251 Type.name(type,"ENamedElement class DefinedPart");
27252 find directInstanceOf(problem,interpretation,element,type);
27253}
27254private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
27255 find interpretation(problem,interpretation);
27256 PartialInterpretation.scopes(interpretation,scope);
27257 Scope.targetTypeInterpretation(scope,typeInterpretation);
27258 Scope.maxNewElements(scope,0);
27259 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27260 Type.name(type,"ENamedElement class DefinedPart");
27261}
27262
27263/**
27264 * An element may be an instance of type "ENamedElement class DefinedPart".
27265 */
27266private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27267{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
27268/**
27269 * An element must be an instance of type "ENamedElement class UndefinedPart".
27270 */
27271private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27272 Type.name(type,"ENamedElement class UndefinedPart");
27273 find directInstanceOf(problem,interpretation,element,type);
27274}
27275private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
27276 find interpretation(problem,interpretation);
27277 PartialInterpretation.scopes(interpretation,scope);
27278 Scope.targetTypeInterpretation(scope,typeInterpretation);
27279 Scope.maxNewElements(scope,0);
27280 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27281 Type.name(type,"ENamedElement class UndefinedPart");
27282}
27283
27284/**
27285 * An element may be an instance of type "ENamedElement class UndefinedPart".
27286 */
27287private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27288{
27289 find interpretation(problem,interpretation);
27290 PartialInterpretation.newElements(interpretation,element);
27291 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27292 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
27293 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27294 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27295 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
27296 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
27297 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27298 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
27299 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
27300 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
27301 neg find isPrimitive(element);
27302} or {
27303 find interpretation(problem,interpretation);
27304 PartialInterpretation.openWorldElements(interpretation,element);
27305 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27306 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
27307 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27308 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27309 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
27310 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
27311 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27312 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
27313 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
27314 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
27315 neg find isPrimitive(element);
27316} or
27317{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
27318/**
27319 * An element must be an instance of type "EPackage class DefinedPart".
27320 */
27321private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27322 Type.name(type,"EPackage class DefinedPart");
27323 find directInstanceOf(problem,interpretation,element,type);
27324}
27325private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
27326 find interpretation(problem,interpretation);
27327 PartialInterpretation.scopes(interpretation,scope);
27328 Scope.targetTypeInterpretation(scope,typeInterpretation);
27329 Scope.maxNewElements(scope,0);
27330 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27331 Type.name(type,"EPackage class DefinedPart");
27332}
27333
27334/**
27335 * An element may be an instance of type "EPackage class DefinedPart".
27336 */
27337private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27338{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
27339/**
27340 * An element must be an instance of type "EPackage class UndefinedPart".
27341 */
27342private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
27343 Type.name(type,"EPackage class UndefinedPart");
27344 find directInstanceOf(problem,interpretation,element,type);
27345}
27346private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
27347 find interpretation(problem,interpretation);
27348 PartialInterpretation.scopes(interpretation,scope);
27349 Scope.targetTypeInterpretation(scope,typeInterpretation);
27350 Scope.maxNewElements(scope,0);
27351 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
27352 Type.name(type,"EPackage class UndefinedPart");
27353}
27354
27355/**
27356 * An element may be an instance of type "EPackage class UndefinedPart".
27357 */
27358private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
27359{
27360 find interpretation(problem,interpretation);
27361 PartialInterpretation.newElements(interpretation,element);
27362 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27363 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27364 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
27365 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27366 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
27367 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27368 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
27369 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
27370 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
27371 neg find isPrimitive(element);
27372} or {
27373 find interpretation(problem,interpretation);
27374 PartialInterpretation.openWorldElements(interpretation,element);
27375 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
27376 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
27377 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
27378 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
27379 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
27380 neg find mustInstanceOfEObject_class(problem,interpretation,element);
27381 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
27382 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
27383 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
27384 neg find isPrimitive(element);
27385} or
27386{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
27387
27388//////////
27389// 1.2 Relation Declaration Indexers
27390//////////
27391/**
27392 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
27393 */
27394private pattern mustInRelationeAttributeType_reference_EAttribute(
27395 problem:LogicProblem, interpretation:PartialInterpretation,
27396 source: DefinedElement, target:DefinedElement)
27397{
27398 find interpretation(problem,interpretation);
27399 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27400 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
27401 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27402 BinaryElementRelationLink.param1(link,source);
27403 BinaryElementRelationLink.param2(link,target);
27404}
27405/**
27406 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
27407 */
27408private pattern mayInRelationeAttributeType_reference_EAttribute(
27409 problem:LogicProblem, interpretation:PartialInterpretation,
27410 source: DefinedElement, target:DefinedElement)
27411{
27412 find interpretation(problem,interpretation);
27413 // The two endpoint of the link have to exist
27414 find mayExist(problem, interpretation, source);
27415 find mayExist(problem, interpretation, target);
27416 // Type consistency
27417 find mayInstanceOfEAttribute_class(problem,interpretation,source);
27418 find mayInstanceOfEDataType_class(problem,interpretation,target);
27419 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
27420 // the upper bound of the multiplicity should be considered.
27421 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
27422 check(numberOfExistingReferences < 1);
27423} or {
27424 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
27425}
27426/**
27427 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
27428 */
27429private pattern mustInRelationdetails_reference_EAnnotation(
27430 problem:LogicProblem, interpretation:PartialInterpretation,
27431 source: DefinedElement, target:DefinedElement)
27432{
27433 find interpretation(problem,interpretation);
27434 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27435 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
27436 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27437 BinaryElementRelationLink.param1(link,source);
27438 BinaryElementRelationLink.param2(link,target);
27439}
27440/**
27441 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
27442 */
27443private pattern mayInRelationdetails_reference_EAnnotation(
27444 problem:LogicProblem, interpretation:PartialInterpretation,
27445 source: DefinedElement, target:DefinedElement)
27446{
27447 find interpretation(problem,interpretation);
27448 // The two endpoint of the link have to exist
27449 find mayExist(problem, interpretation, source);
27450 find mayExist(problem, interpretation, target);
27451 // Type consistency
27452 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
27453 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
27454 // The reference is containment, then a new reference cannot be create if:
27455 // 1. Multiple parents
27456 neg find mustContains4(problem,interpretation,_,target);
27457 // 2. Circle in the containment hierarchy
27458 neg find mustTransitiveContains(source,target);
27459} or {
27460 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
27461}
27462/**
27463 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
27464 */
27465private pattern mustInRelationeModelElement_reference_EAnnotation(
27466 problem:LogicProblem, interpretation:PartialInterpretation,
27467 source: DefinedElement, target:DefinedElement)
27468{
27469 find interpretation(problem,interpretation);
27470 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27471 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
27472 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27473 BinaryElementRelationLink.param1(link,source);
27474 BinaryElementRelationLink.param2(link,target);
27475}
27476/**
27477 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
27478 */
27479private pattern mayInRelationeModelElement_reference_EAnnotation(
27480 problem:LogicProblem, interpretation:PartialInterpretation,
27481 source: DefinedElement, target:DefinedElement)
27482{
27483 find interpretation(problem,interpretation);
27484 // The two endpoint of the link have to exist
27485 find mayExist(problem, interpretation, source);
27486 find mayExist(problem, interpretation, target);
27487 // Type consistency
27488 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
27489 find mayInstanceOfEModelElement_class(problem,interpretation,target);
27490 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
27491 // the upper bound of the multiplicity should be considered.
27492 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
27493 check(numberOfExistingReferences < 1);
27494 // The eOpposite of the reference is containment, then a referene cannot be created if
27495 // 1. Multiple parents
27496 neg find mustContains4(problem,interpretation,source,_);
27497 // 2. Circle in the containment hierarchy
27498 neg find mustTransitiveContains(source,target);
27499} or {
27500 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
27501}
27502/**
27503 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
27504 */
27505private pattern mustInRelationcontents_reference_EAnnotation(
27506 problem:LogicProblem, interpretation:PartialInterpretation,
27507 source: DefinedElement, target:DefinedElement)
27508{
27509 find interpretation(problem,interpretation);
27510 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27511 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
27512 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27513 BinaryElementRelationLink.param1(link,source);
27514 BinaryElementRelationLink.param2(link,target);
27515}
27516/**
27517 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
27518 */
27519private pattern mayInRelationcontents_reference_EAnnotation(
27520 problem:LogicProblem, interpretation:PartialInterpretation,
27521 source: DefinedElement, target:DefinedElement)
27522{
27523 find interpretation(problem,interpretation);
27524 // The two endpoint of the link have to exist
27525 find mayExist(problem, interpretation, source);
27526 find mayExist(problem, interpretation, target);
27527 // Type consistency
27528 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
27529 find mayInstanceOfEObject_class(problem,interpretation,target);
27530 // The reference is containment, then a new reference cannot be create if:
27531 // 1. Multiple parents
27532 neg find mustContains4(problem,interpretation,_,target);
27533 // 2. Circle in the containment hierarchy
27534 neg find mustTransitiveContains(source,target);
27535} or {
27536 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
27537}
27538/**
27539 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
27540 */
27541private pattern mustInRelationreferences_reference_EAnnotation(
27542 problem:LogicProblem, interpretation:PartialInterpretation,
27543 source: DefinedElement, target:DefinedElement)
27544{
27545 find interpretation(problem,interpretation);
27546 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27547 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
27548 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27549 BinaryElementRelationLink.param1(link,source);
27550 BinaryElementRelationLink.param2(link,target);
27551}
27552/**
27553 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
27554 */
27555private pattern mayInRelationreferences_reference_EAnnotation(
27556 problem:LogicProblem, interpretation:PartialInterpretation,
27557 source: DefinedElement, target:DefinedElement)
27558{
27559 find interpretation(problem,interpretation);
27560 // The two endpoint of the link have to exist
27561 find mayExist(problem, interpretation, source);
27562 find mayExist(problem, interpretation, target);
27563 // Type consistency
27564 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
27565 find mayInstanceOfEObject_class(problem,interpretation,target);
27566} or {
27567 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
27568}
27569/**
27570 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
27571 */
27572private pattern mustInRelationeSuperTypes_reference_EClass(
27573 problem:LogicProblem, interpretation:PartialInterpretation,
27574 source: DefinedElement, target:DefinedElement)
27575{
27576 find interpretation(problem,interpretation);
27577 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27578 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
27579 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27580 BinaryElementRelationLink.param1(link,source);
27581 BinaryElementRelationLink.param2(link,target);
27582}
27583/**
27584 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
27585 */
27586private pattern mayInRelationeSuperTypes_reference_EClass(
27587 problem:LogicProblem, interpretation:PartialInterpretation,
27588 source: DefinedElement, target:DefinedElement)
27589{
27590 find interpretation(problem,interpretation);
27591 // The two endpoint of the link have to exist
27592 find mayExist(problem, interpretation, source);
27593 find mayExist(problem, interpretation, target);
27594 // Type consistency
27595 find mayInstanceOfEClass_class(problem,interpretation,source);
27596 find mayInstanceOfEClass_class(problem,interpretation,target);
27597} or {
27598 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
27599}
27600/**
27601 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
27602 */
27603private pattern mustInRelationeOperations_reference_EClass(
27604 problem:LogicProblem, interpretation:PartialInterpretation,
27605 source: DefinedElement, target:DefinedElement)
27606{
27607 find interpretation(problem,interpretation);
27608 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27609 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
27610 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27611 BinaryElementRelationLink.param1(link,source);
27612 BinaryElementRelationLink.param2(link,target);
27613}
27614/**
27615 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
27616 */
27617private pattern mayInRelationeOperations_reference_EClass(
27618 problem:LogicProblem, interpretation:PartialInterpretation,
27619 source: DefinedElement, target:DefinedElement)
27620{
27621 find interpretation(problem,interpretation);
27622 // The two endpoint of the link have to exist
27623 find mayExist(problem, interpretation, source);
27624 find mayExist(problem, interpretation, target);
27625 // Type consistency
27626 find mayInstanceOfEClass_class(problem,interpretation,source);
27627 find mayInstanceOfEOperation_class(problem,interpretation,target);
27628 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
27629 // the upper bound of the opposite reference multiplicity should be considered.
27630 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
27631 check(numberOfExistingOppositeReferences < 1);
27632 // The reference is containment, then a new reference cannot be create if:
27633 // 1. Multiple parents
27634 neg find mustContains4(problem,interpretation,_,target);
27635 // 2. Circle in the containment hierarchy
27636 neg find mustTransitiveContains(source,target);
27637} or {
27638 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
27639}
27640/**
27641 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
27642 */
27643private pattern mustInRelationeAllAttributes_reference_EClass(
27644 problem:LogicProblem, interpretation:PartialInterpretation,
27645 source: DefinedElement, target:DefinedElement)
27646{
27647 find interpretation(problem,interpretation);
27648 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27649 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
27650 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27651 BinaryElementRelationLink.param1(link,source);
27652 BinaryElementRelationLink.param2(link,target);
27653}
27654/**
27655 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
27656 */
27657private pattern mayInRelationeAllAttributes_reference_EClass(
27658 problem:LogicProblem, interpretation:PartialInterpretation,
27659 source: DefinedElement, target:DefinedElement)
27660{
27661 find interpretation(problem,interpretation);
27662 // The two endpoint of the link have to exist
27663 find mayExist(problem, interpretation, source);
27664 find mayExist(problem, interpretation, target);
27665 // Type consistency
27666 find mayInstanceOfEClass_class(problem,interpretation,source);
27667 find mayInstanceOfEAttribute_class(problem,interpretation,target);
27668} or {
27669 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
27670}
27671/**
27672 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
27673 */
27674private pattern mustInRelationeAllReferences_reference_EClass(
27675 problem:LogicProblem, interpretation:PartialInterpretation,
27676 source: DefinedElement, target:DefinedElement)
27677{
27678 find interpretation(problem,interpretation);
27679 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27680 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
27681 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27682 BinaryElementRelationLink.param1(link,source);
27683 BinaryElementRelationLink.param2(link,target);
27684}
27685/**
27686 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
27687 */
27688private pattern mayInRelationeAllReferences_reference_EClass(
27689 problem:LogicProblem, interpretation:PartialInterpretation,
27690 source: DefinedElement, target:DefinedElement)
27691{
27692 find interpretation(problem,interpretation);
27693 // The two endpoint of the link have to exist
27694 find mayExist(problem, interpretation, source);
27695 find mayExist(problem, interpretation, target);
27696 // Type consistency
27697 find mayInstanceOfEClass_class(problem,interpretation,source);
27698 find mayInstanceOfEReference_class(problem,interpretation,target);
27699} or {
27700 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
27701}
27702/**
27703 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
27704 */
27705private pattern mustInRelationeReferences_reference_EClass(
27706 problem:LogicProblem, interpretation:PartialInterpretation,
27707 source: DefinedElement, target:DefinedElement)
27708{
27709 find interpretation(problem,interpretation);
27710 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27711 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
27712 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27713 BinaryElementRelationLink.param1(link,source);
27714 BinaryElementRelationLink.param2(link,target);
27715}
27716/**
27717 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
27718 */
27719private pattern mayInRelationeReferences_reference_EClass(
27720 problem:LogicProblem, interpretation:PartialInterpretation,
27721 source: DefinedElement, target:DefinedElement)
27722{
27723 find interpretation(problem,interpretation);
27724 // The two endpoint of the link have to exist
27725 find mayExist(problem, interpretation, source);
27726 find mayExist(problem, interpretation, target);
27727 // Type consistency
27728 find mayInstanceOfEClass_class(problem,interpretation,source);
27729 find mayInstanceOfEReference_class(problem,interpretation,target);
27730} or {
27731 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
27732}
27733/**
27734 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
27735 */
27736private pattern mustInRelationeAttributes_reference_EClass(
27737 problem:LogicProblem, interpretation:PartialInterpretation,
27738 source: DefinedElement, target:DefinedElement)
27739{
27740 find interpretation(problem,interpretation);
27741 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27742 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
27743 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27744 BinaryElementRelationLink.param1(link,source);
27745 BinaryElementRelationLink.param2(link,target);
27746}
27747/**
27748 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
27749 */
27750private pattern mayInRelationeAttributes_reference_EClass(
27751 problem:LogicProblem, interpretation:PartialInterpretation,
27752 source: DefinedElement, target:DefinedElement)
27753{
27754 find interpretation(problem,interpretation);
27755 // The two endpoint of the link have to exist
27756 find mayExist(problem, interpretation, source);
27757 find mayExist(problem, interpretation, target);
27758 // Type consistency
27759 find mayInstanceOfEClass_class(problem,interpretation,source);
27760 find mayInstanceOfEAttribute_class(problem,interpretation,target);
27761} or {
27762 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
27763}
27764/**
27765 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
27766 */
27767private pattern mustInRelationeAllContainments_reference_EClass(
27768 problem:LogicProblem, interpretation:PartialInterpretation,
27769 source: DefinedElement, target:DefinedElement)
27770{
27771 find interpretation(problem,interpretation);
27772 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27773 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
27774 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27775 BinaryElementRelationLink.param1(link,source);
27776 BinaryElementRelationLink.param2(link,target);
27777}
27778/**
27779 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
27780 */
27781private pattern mayInRelationeAllContainments_reference_EClass(
27782 problem:LogicProblem, interpretation:PartialInterpretation,
27783 source: DefinedElement, target:DefinedElement)
27784{
27785 find interpretation(problem,interpretation);
27786 // The two endpoint of the link have to exist
27787 find mayExist(problem, interpretation, source);
27788 find mayExist(problem, interpretation, target);
27789 // Type consistency
27790 find mayInstanceOfEClass_class(problem,interpretation,source);
27791 find mayInstanceOfEReference_class(problem,interpretation,target);
27792} or {
27793 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
27794}
27795/**
27796 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
27797 */
27798private pattern mustInRelationeAllOperations_reference_EClass(
27799 problem:LogicProblem, interpretation:PartialInterpretation,
27800 source: DefinedElement, target:DefinedElement)
27801{
27802 find interpretation(problem,interpretation);
27803 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27804 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
27805 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27806 BinaryElementRelationLink.param1(link,source);
27807 BinaryElementRelationLink.param2(link,target);
27808}
27809/**
27810 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
27811 */
27812private pattern mayInRelationeAllOperations_reference_EClass(
27813 problem:LogicProblem, interpretation:PartialInterpretation,
27814 source: DefinedElement, target:DefinedElement)
27815{
27816 find interpretation(problem,interpretation);
27817 // The two endpoint of the link have to exist
27818 find mayExist(problem, interpretation, source);
27819 find mayExist(problem, interpretation, target);
27820 // Type consistency
27821 find mayInstanceOfEClass_class(problem,interpretation,source);
27822 find mayInstanceOfEOperation_class(problem,interpretation,target);
27823} or {
27824 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
27825}
27826/**
27827 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
27828 */
27829private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
27830 problem:LogicProblem, interpretation:PartialInterpretation,
27831 source: DefinedElement, target:DefinedElement)
27832{
27833 find interpretation(problem,interpretation);
27834 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27835 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
27836 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27837 BinaryElementRelationLink.param1(link,source);
27838 BinaryElementRelationLink.param2(link,target);
27839}
27840/**
27841 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
27842 */
27843private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
27844 problem:LogicProblem, interpretation:PartialInterpretation,
27845 source: DefinedElement, target:DefinedElement)
27846{
27847 find interpretation(problem,interpretation);
27848 // The two endpoint of the link have to exist
27849 find mayExist(problem, interpretation, source);
27850 find mayExist(problem, interpretation, target);
27851 // Type consistency
27852 find mayInstanceOfEClass_class(problem,interpretation,source);
27853 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
27854} or {
27855 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
27856}
27857/**
27858 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
27859 */
27860private pattern mustInRelationeAllSuperTypes_reference_EClass(
27861 problem:LogicProblem, interpretation:PartialInterpretation,
27862 source: DefinedElement, target:DefinedElement)
27863{
27864 find interpretation(problem,interpretation);
27865 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27866 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
27867 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27868 BinaryElementRelationLink.param1(link,source);
27869 BinaryElementRelationLink.param2(link,target);
27870}
27871/**
27872 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
27873 */
27874private pattern mayInRelationeAllSuperTypes_reference_EClass(
27875 problem:LogicProblem, interpretation:PartialInterpretation,
27876 source: DefinedElement, target:DefinedElement)
27877{
27878 find interpretation(problem,interpretation);
27879 // The two endpoint of the link have to exist
27880 find mayExist(problem, interpretation, source);
27881 find mayExist(problem, interpretation, target);
27882 // Type consistency
27883 find mayInstanceOfEClass_class(problem,interpretation,source);
27884 find mayInstanceOfEClass_class(problem,interpretation,target);
27885} or {
27886 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
27887}
27888/**
27889 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
27890 */
27891private pattern mustInRelationeIDAttribute_reference_EClass(
27892 problem:LogicProblem, interpretation:PartialInterpretation,
27893 source: DefinedElement, target:DefinedElement)
27894{
27895 find interpretation(problem,interpretation);
27896 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27897 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
27898 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27899 BinaryElementRelationLink.param1(link,source);
27900 BinaryElementRelationLink.param2(link,target);
27901}
27902/**
27903 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
27904 */
27905private pattern mayInRelationeIDAttribute_reference_EClass(
27906 problem:LogicProblem, interpretation:PartialInterpretation,
27907 source: DefinedElement, target:DefinedElement)
27908{
27909 find interpretation(problem,interpretation);
27910 // The two endpoint of the link have to exist
27911 find mayExist(problem, interpretation, source);
27912 find mayExist(problem, interpretation, target);
27913 // Type consistency
27914 find mayInstanceOfEClass_class(problem,interpretation,source);
27915 find mayInstanceOfEAttribute_class(problem,interpretation,target);
27916 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
27917 // the upper bound of the multiplicity should be considered.
27918 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
27919 check(numberOfExistingReferences < 1);
27920} or {
27921 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
27922}
27923/**
27924 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
27925 */
27926private pattern mustInRelationeStructuralFeatures_reference_EClass(
27927 problem:LogicProblem, interpretation:PartialInterpretation,
27928 source: DefinedElement, target:DefinedElement)
27929{
27930 find interpretation(problem,interpretation);
27931 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27932 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
27933 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27934 BinaryElementRelationLink.param1(link,source);
27935 BinaryElementRelationLink.param2(link,target);
27936}
27937/**
27938 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
27939 */
27940private pattern mayInRelationeStructuralFeatures_reference_EClass(
27941 problem:LogicProblem, interpretation:PartialInterpretation,
27942 source: DefinedElement, target:DefinedElement)
27943{
27944 find interpretation(problem,interpretation);
27945 // The two endpoint of the link have to exist
27946 find mayExist(problem, interpretation, source);
27947 find mayExist(problem, interpretation, target);
27948 // Type consistency
27949 find mayInstanceOfEClass_class(problem,interpretation,source);
27950 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
27951 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
27952 // the upper bound of the opposite reference multiplicity should be considered.
27953 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
27954 check(numberOfExistingOppositeReferences < 1);
27955 // The reference is containment, then a new reference cannot be create if:
27956 // 1. Multiple parents
27957 neg find mustContains4(problem,interpretation,_,target);
27958 // 2. Circle in the containment hierarchy
27959 neg find mustTransitiveContains(source,target);
27960} or {
27961 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
27962}
27963/**
27964 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
27965 */
27966private pattern mustInRelationeGenericSuperTypes_reference_EClass(
27967 problem:LogicProblem, interpretation:PartialInterpretation,
27968 source: DefinedElement, target:DefinedElement)
27969{
27970 find interpretation(problem,interpretation);
27971 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
27972 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
27973 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
27974 BinaryElementRelationLink.param1(link,source);
27975 BinaryElementRelationLink.param2(link,target);
27976}
27977/**
27978 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
27979 */
27980private pattern mayInRelationeGenericSuperTypes_reference_EClass(
27981 problem:LogicProblem, interpretation:PartialInterpretation,
27982 source: DefinedElement, target:DefinedElement)
27983{
27984 find interpretation(problem,interpretation);
27985 // The two endpoint of the link have to exist
27986 find mayExist(problem, interpretation, source);
27987 find mayExist(problem, interpretation, target);
27988 // Type consistency
27989 find mayInstanceOfEClass_class(problem,interpretation,source);
27990 find mayInstanceOfEGenericType_class(problem,interpretation,target);
27991 // The reference is containment, then a new reference cannot be create if:
27992 // 1. Multiple parents
27993 neg find mustContains4(problem,interpretation,_,target);
27994 // 2. Circle in the containment hierarchy
27995 neg find mustTransitiveContains(source,target);
27996} or {
27997 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
27998}
27999/**
28000 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
28001 */
28002private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
28003 problem:LogicProblem, interpretation:PartialInterpretation,
28004 source: DefinedElement, target:DefinedElement)
28005{
28006 find interpretation(problem,interpretation);
28007 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28008 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
28009 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28010 BinaryElementRelationLink.param1(link,source);
28011 BinaryElementRelationLink.param2(link,target);
28012}
28013/**
28014 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
28015 */
28016private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
28017 problem:LogicProblem, interpretation:PartialInterpretation,
28018 source: DefinedElement, target:DefinedElement)
28019{
28020 find interpretation(problem,interpretation);
28021 // The two endpoint of the link have to exist
28022 find mayExist(problem, interpretation, source);
28023 find mayExist(problem, interpretation, target);
28024 // Type consistency
28025 find mayInstanceOfEClass_class(problem,interpretation,source);
28026 find mayInstanceOfEGenericType_class(problem,interpretation,target);
28027} or {
28028 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
28029}
28030/**
28031 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
28032 */
28033private pattern mustInRelationePackage_reference_EClassifier(
28034 problem:LogicProblem, interpretation:PartialInterpretation,
28035 source: DefinedElement, target:DefinedElement)
28036{
28037 find interpretation(problem,interpretation);
28038 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28039 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
28040 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28041 BinaryElementRelationLink.param1(link,source);
28042 BinaryElementRelationLink.param2(link,target);
28043}
28044/**
28045 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
28046 */
28047private pattern mayInRelationePackage_reference_EClassifier(
28048 problem:LogicProblem, interpretation:PartialInterpretation,
28049 source: DefinedElement, target:DefinedElement)
28050{
28051 find interpretation(problem,interpretation);
28052 // The two endpoint of the link have to exist
28053 find mayExist(problem, interpretation, source);
28054 find mayExist(problem, interpretation, target);
28055 // Type consistency
28056 find mayInstanceOfEClassifier_class(problem,interpretation,source);
28057 find mayInstanceOfEPackage_class(problem,interpretation,target);
28058 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28059 // the upper bound of the multiplicity should be considered.
28060 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
28061 check(numberOfExistingReferences < 1);
28062 // The eOpposite of the reference is containment, then a referene cannot be created if
28063 // 1. Multiple parents
28064 neg find mustContains4(problem,interpretation,source,_);
28065 // 2. Circle in the containment hierarchy
28066 neg find mustTransitiveContains(source,target);
28067} or {
28068 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
28069}
28070/**
28071 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
28072 */
28073private pattern mustInRelationeTypeParameters_reference_EClassifier(
28074 problem:LogicProblem, interpretation:PartialInterpretation,
28075 source: DefinedElement, target:DefinedElement)
28076{
28077 find interpretation(problem,interpretation);
28078 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28079 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
28080 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28081 BinaryElementRelationLink.param1(link,source);
28082 BinaryElementRelationLink.param2(link,target);
28083}
28084/**
28085 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
28086 */
28087private pattern mayInRelationeTypeParameters_reference_EClassifier(
28088 problem:LogicProblem, interpretation:PartialInterpretation,
28089 source: DefinedElement, target:DefinedElement)
28090{
28091 find interpretation(problem,interpretation);
28092 // The two endpoint of the link have to exist
28093 find mayExist(problem, interpretation, source);
28094 find mayExist(problem, interpretation, target);
28095 // Type consistency
28096 find mayInstanceOfEClassifier_class(problem,interpretation,source);
28097 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
28098 // The reference is containment, then a new reference cannot be create if:
28099 // 1. Multiple parents
28100 neg find mustContains4(problem,interpretation,_,target);
28101 // 2. Circle in the containment hierarchy
28102 neg find mustTransitiveContains(source,target);
28103} or {
28104 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
28105}
28106/**
28107 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
28108 */
28109private pattern mustInRelationeLiterals_reference_EEnum(
28110 problem:LogicProblem, interpretation:PartialInterpretation,
28111 source: DefinedElement, target:DefinedElement)
28112{
28113 find interpretation(problem,interpretation);
28114 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28115 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
28116 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28117 BinaryElementRelationLink.param1(link,source);
28118 BinaryElementRelationLink.param2(link,target);
28119}
28120/**
28121 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
28122 */
28123private pattern mayInRelationeLiterals_reference_EEnum(
28124 problem:LogicProblem, interpretation:PartialInterpretation,
28125 source: DefinedElement, target:DefinedElement)
28126{
28127 find interpretation(problem,interpretation);
28128 // The two endpoint of the link have to exist
28129 find mayExist(problem, interpretation, source);
28130 find mayExist(problem, interpretation, target);
28131 // Type consistency
28132 find mayInstanceOfEEnum_class(problem,interpretation,source);
28133 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
28134 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
28135 // the upper bound of the opposite reference multiplicity should be considered.
28136 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
28137 check(numberOfExistingOppositeReferences < 1);
28138 // The reference is containment, then a new reference cannot be create if:
28139 // 1. Multiple parents
28140 neg find mustContains4(problem,interpretation,_,target);
28141 // 2. Circle in the containment hierarchy
28142 neg find mustTransitiveContains(source,target);
28143} or {
28144 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
28145}
28146/**
28147 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
28148 */
28149private pattern mustInRelationeEnum_reference_EEnumLiteral(
28150 problem:LogicProblem, interpretation:PartialInterpretation,
28151 source: DefinedElement, target:DefinedElement)
28152{
28153 find interpretation(problem,interpretation);
28154 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28155 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
28156 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28157 BinaryElementRelationLink.param1(link,source);
28158 BinaryElementRelationLink.param2(link,target);
28159}
28160/**
28161 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
28162 */
28163private pattern mayInRelationeEnum_reference_EEnumLiteral(
28164 problem:LogicProblem, interpretation:PartialInterpretation,
28165 source: DefinedElement, target:DefinedElement)
28166{
28167 find interpretation(problem,interpretation);
28168 // The two endpoint of the link have to exist
28169 find mayExist(problem, interpretation, source);
28170 find mayExist(problem, interpretation, target);
28171 // Type consistency
28172 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
28173 find mayInstanceOfEEnum_class(problem,interpretation,target);
28174 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28175 // the upper bound of the multiplicity should be considered.
28176 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
28177 check(numberOfExistingReferences < 1);
28178 // The eOpposite of the reference is containment, then a referene cannot be created if
28179 // 1. Multiple parents
28180 neg find mustContains4(problem,interpretation,source,_);
28181 // 2. Circle in the containment hierarchy
28182 neg find mustTransitiveContains(source,target);
28183} or {
28184 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
28185}
28186/**
28187 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
28188 */
28189private pattern mustInRelationeAnnotations_reference_EModelElement(
28190 problem:LogicProblem, interpretation:PartialInterpretation,
28191 source: DefinedElement, target:DefinedElement)
28192{
28193 find interpretation(problem,interpretation);
28194 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28195 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
28196 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28197 BinaryElementRelationLink.param1(link,source);
28198 BinaryElementRelationLink.param2(link,target);
28199}
28200/**
28201 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
28202 */
28203private pattern mayInRelationeAnnotations_reference_EModelElement(
28204 problem:LogicProblem, interpretation:PartialInterpretation,
28205 source: DefinedElement, target:DefinedElement)
28206{
28207 find interpretation(problem,interpretation);
28208 // The two endpoint of the link have to exist
28209 find mayExist(problem, interpretation, source);
28210 find mayExist(problem, interpretation, target);
28211 // Type consistency
28212 find mayInstanceOfEModelElement_class(problem,interpretation,source);
28213 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
28214 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
28215 // the upper bound of the opposite reference multiplicity should be considered.
28216 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
28217 check(numberOfExistingOppositeReferences < 1);
28218 // The reference is containment, then a new reference cannot be create if:
28219 // 1. Multiple parents
28220 neg find mustContains4(problem,interpretation,_,target);
28221 // 2. Circle in the containment hierarchy
28222 neg find mustTransitiveContains(source,target);
28223} or {
28224 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
28225}
28226/**
28227 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
28228 */
28229private pattern mustInRelationeContainingClass_reference_EOperation(
28230 problem:LogicProblem, interpretation:PartialInterpretation,
28231 source: DefinedElement, target:DefinedElement)
28232{
28233 find interpretation(problem,interpretation);
28234 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28235 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
28236 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28237 BinaryElementRelationLink.param1(link,source);
28238 BinaryElementRelationLink.param2(link,target);
28239}
28240/**
28241 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
28242 */
28243private pattern mayInRelationeContainingClass_reference_EOperation(
28244 problem:LogicProblem, interpretation:PartialInterpretation,
28245 source: DefinedElement, target:DefinedElement)
28246{
28247 find interpretation(problem,interpretation);
28248 // The two endpoint of the link have to exist
28249 find mayExist(problem, interpretation, source);
28250 find mayExist(problem, interpretation, target);
28251 // Type consistency
28252 find mayInstanceOfEOperation_class(problem,interpretation,source);
28253 find mayInstanceOfEClass_class(problem,interpretation,target);
28254 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28255 // the upper bound of the multiplicity should be considered.
28256 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
28257 check(numberOfExistingReferences < 1);
28258 // The eOpposite of the reference is containment, then a referene cannot be created if
28259 // 1. Multiple parents
28260 neg find mustContains4(problem,interpretation,source,_);
28261 // 2. Circle in the containment hierarchy
28262 neg find mustTransitiveContains(source,target);
28263} or {
28264 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
28265}
28266/**
28267 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
28268 */
28269private pattern mustInRelationeTypeParameters_reference_EOperation(
28270 problem:LogicProblem, interpretation:PartialInterpretation,
28271 source: DefinedElement, target:DefinedElement)
28272{
28273 find interpretation(problem,interpretation);
28274 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28275 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
28276 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28277 BinaryElementRelationLink.param1(link,source);
28278 BinaryElementRelationLink.param2(link,target);
28279}
28280/**
28281 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
28282 */
28283private pattern mayInRelationeTypeParameters_reference_EOperation(
28284 problem:LogicProblem, interpretation:PartialInterpretation,
28285 source: DefinedElement, target:DefinedElement)
28286{
28287 find interpretation(problem,interpretation);
28288 // The two endpoint of the link have to exist
28289 find mayExist(problem, interpretation, source);
28290 find mayExist(problem, interpretation, target);
28291 // Type consistency
28292 find mayInstanceOfEOperation_class(problem,interpretation,source);
28293 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
28294 // The reference is containment, then a new reference cannot be create if:
28295 // 1. Multiple parents
28296 neg find mustContains4(problem,interpretation,_,target);
28297 // 2. Circle in the containment hierarchy
28298 neg find mustTransitiveContains(source,target);
28299} or {
28300 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
28301}
28302/**
28303 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
28304 */
28305private pattern mustInRelationeParameters_reference_EOperation(
28306 problem:LogicProblem, interpretation:PartialInterpretation,
28307 source: DefinedElement, target:DefinedElement)
28308{
28309 find interpretation(problem,interpretation);
28310 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28311 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
28312 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28313 BinaryElementRelationLink.param1(link,source);
28314 BinaryElementRelationLink.param2(link,target);
28315}
28316/**
28317 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
28318 */
28319private pattern mayInRelationeParameters_reference_EOperation(
28320 problem:LogicProblem, interpretation:PartialInterpretation,
28321 source: DefinedElement, target:DefinedElement)
28322{
28323 find interpretation(problem,interpretation);
28324 // The two endpoint of the link have to exist
28325 find mayExist(problem, interpretation, source);
28326 find mayExist(problem, interpretation, target);
28327 // Type consistency
28328 find mayInstanceOfEOperation_class(problem,interpretation,source);
28329 find mayInstanceOfEParameter_class(problem,interpretation,target);
28330 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
28331 // the upper bound of the opposite reference multiplicity should be considered.
28332 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
28333 check(numberOfExistingOppositeReferences < 1);
28334 // The reference is containment, then a new reference cannot be create if:
28335 // 1. Multiple parents
28336 neg find mustContains4(problem,interpretation,_,target);
28337 // 2. Circle in the containment hierarchy
28338 neg find mustTransitiveContains(source,target);
28339} or {
28340 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
28341}
28342/**
28343 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
28344 */
28345private pattern mustInRelationeExceptions_reference_EOperation(
28346 problem:LogicProblem, interpretation:PartialInterpretation,
28347 source: DefinedElement, target:DefinedElement)
28348{
28349 find interpretation(problem,interpretation);
28350 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28351 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
28352 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28353 BinaryElementRelationLink.param1(link,source);
28354 BinaryElementRelationLink.param2(link,target);
28355}
28356/**
28357 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
28358 */
28359private pattern mayInRelationeExceptions_reference_EOperation(
28360 problem:LogicProblem, interpretation:PartialInterpretation,
28361 source: DefinedElement, target:DefinedElement)
28362{
28363 find interpretation(problem,interpretation);
28364 // The two endpoint of the link have to exist
28365 find mayExist(problem, interpretation, source);
28366 find mayExist(problem, interpretation, target);
28367 // Type consistency
28368 find mayInstanceOfEOperation_class(problem,interpretation,source);
28369 find mayInstanceOfEClassifier_class(problem,interpretation,target);
28370} or {
28371 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
28372}
28373/**
28374 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
28375 */
28376private pattern mustInRelationeGenericExceptions_reference_EOperation(
28377 problem:LogicProblem, interpretation:PartialInterpretation,
28378 source: DefinedElement, target:DefinedElement)
28379{
28380 find interpretation(problem,interpretation);
28381 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28382 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
28383 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28384 BinaryElementRelationLink.param1(link,source);
28385 BinaryElementRelationLink.param2(link,target);
28386}
28387/**
28388 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
28389 */
28390private pattern mayInRelationeGenericExceptions_reference_EOperation(
28391 problem:LogicProblem, interpretation:PartialInterpretation,
28392 source: DefinedElement, target:DefinedElement)
28393{
28394 find interpretation(problem,interpretation);
28395 // The two endpoint of the link have to exist
28396 find mayExist(problem, interpretation, source);
28397 find mayExist(problem, interpretation, target);
28398 // Type consistency
28399 find mayInstanceOfEOperation_class(problem,interpretation,source);
28400 find mayInstanceOfEGenericType_class(problem,interpretation,target);
28401 // The reference is containment, then a new reference cannot be create if:
28402 // 1. Multiple parents
28403 neg find mustContains4(problem,interpretation,_,target);
28404 // 2. Circle in the containment hierarchy
28405 neg find mustTransitiveContains(source,target);
28406} or {
28407 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
28408}
28409/**
28410 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
28411 */
28412private pattern mustInRelationeClassifiers_reference_EPackage(
28413 problem:LogicProblem, interpretation:PartialInterpretation,
28414 source: DefinedElement, target:DefinedElement)
28415{
28416 find interpretation(problem,interpretation);
28417 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28418 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
28419 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28420 BinaryElementRelationLink.param1(link,source);
28421 BinaryElementRelationLink.param2(link,target);
28422}
28423/**
28424 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
28425 */
28426private pattern mayInRelationeClassifiers_reference_EPackage(
28427 problem:LogicProblem, interpretation:PartialInterpretation,
28428 source: DefinedElement, target:DefinedElement)
28429{
28430 find interpretation(problem,interpretation);
28431 // The two endpoint of the link have to exist
28432 find mayExist(problem, interpretation, source);
28433 find mayExist(problem, interpretation, target);
28434 // Type consistency
28435 find mayInstanceOfEPackage_class(problem,interpretation,source);
28436 find mayInstanceOfEClassifier_class(problem,interpretation,target);
28437 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
28438 // the upper bound of the opposite reference multiplicity should be considered.
28439 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
28440 check(numberOfExistingOppositeReferences < 1);
28441 // The reference is containment, then a new reference cannot be create if:
28442 // 1. Multiple parents
28443 neg find mustContains4(problem,interpretation,_,target);
28444 // 2. Circle in the containment hierarchy
28445 neg find mustTransitiveContains(source,target);
28446} or {
28447 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
28448}
28449/**
28450 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
28451 */
28452private pattern mustInRelationeSubpackages_reference_EPackage(
28453 problem:LogicProblem, interpretation:PartialInterpretation,
28454 source: DefinedElement, target:DefinedElement)
28455{
28456 find interpretation(problem,interpretation);
28457 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28458 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
28459 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28460 BinaryElementRelationLink.param1(link,source);
28461 BinaryElementRelationLink.param2(link,target);
28462}
28463/**
28464 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
28465 */
28466private pattern mayInRelationeSubpackages_reference_EPackage(
28467 problem:LogicProblem, interpretation:PartialInterpretation,
28468 source: DefinedElement, target:DefinedElement)
28469{
28470 find interpretation(problem,interpretation);
28471 // The two endpoint of the link have to exist
28472 find mayExist(problem, interpretation, source);
28473 find mayExist(problem, interpretation, target);
28474 // Type consistency
28475 find mayInstanceOfEPackage_class(problem,interpretation,source);
28476 find mayInstanceOfEPackage_class(problem,interpretation,target);
28477 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
28478 // the upper bound of the opposite reference multiplicity should be considered.
28479 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
28480 check(numberOfExistingOppositeReferences < 1);
28481 // The reference is containment, then a new reference cannot be create if:
28482 // 1. Multiple parents
28483 neg find mustContains4(problem,interpretation,_,target);
28484 // 2. Circle in the containment hierarchy
28485 neg find mustTransitiveContains(source,target);
28486} or {
28487 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
28488}
28489/**
28490 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
28491 */
28492private pattern mustInRelationeSuperPackage_reference_EPackage(
28493 problem:LogicProblem, interpretation:PartialInterpretation,
28494 source: DefinedElement, target:DefinedElement)
28495{
28496 find interpretation(problem,interpretation);
28497 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28498 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
28499 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28500 BinaryElementRelationLink.param1(link,source);
28501 BinaryElementRelationLink.param2(link,target);
28502}
28503/**
28504 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
28505 */
28506private pattern mayInRelationeSuperPackage_reference_EPackage(
28507 problem:LogicProblem, interpretation:PartialInterpretation,
28508 source: DefinedElement, target:DefinedElement)
28509{
28510 find interpretation(problem,interpretation);
28511 // The two endpoint of the link have to exist
28512 find mayExist(problem, interpretation, source);
28513 find mayExist(problem, interpretation, target);
28514 // Type consistency
28515 find mayInstanceOfEPackage_class(problem,interpretation,source);
28516 find mayInstanceOfEPackage_class(problem,interpretation,target);
28517 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28518 // the upper bound of the multiplicity should be considered.
28519 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
28520 check(numberOfExistingReferences < 1);
28521 // The eOpposite of the reference is containment, then a referene cannot be created if
28522 // 1. Multiple parents
28523 neg find mustContains4(problem,interpretation,source,_);
28524 // 2. Circle in the containment hierarchy
28525 neg find mustTransitiveContains(source,target);
28526} or {
28527 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
28528}
28529/**
28530 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
28531 */
28532private pattern mustInRelationeOperation_reference_EParameter(
28533 problem:LogicProblem, interpretation:PartialInterpretation,
28534 source: DefinedElement, target:DefinedElement)
28535{
28536 find interpretation(problem,interpretation);
28537 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28538 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
28539 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28540 BinaryElementRelationLink.param1(link,source);
28541 BinaryElementRelationLink.param2(link,target);
28542}
28543/**
28544 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
28545 */
28546private pattern mayInRelationeOperation_reference_EParameter(
28547 problem:LogicProblem, interpretation:PartialInterpretation,
28548 source: DefinedElement, target:DefinedElement)
28549{
28550 find interpretation(problem,interpretation);
28551 // The two endpoint of the link have to exist
28552 find mayExist(problem, interpretation, source);
28553 find mayExist(problem, interpretation, target);
28554 // Type consistency
28555 find mayInstanceOfEParameter_class(problem,interpretation,source);
28556 find mayInstanceOfEOperation_class(problem,interpretation,target);
28557 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28558 // the upper bound of the multiplicity should be considered.
28559 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
28560 check(numberOfExistingReferences < 1);
28561 // The eOpposite of the reference is containment, then a referene cannot be created if
28562 // 1. Multiple parents
28563 neg find mustContains4(problem,interpretation,source,_);
28564 // 2. Circle in the containment hierarchy
28565 neg find mustTransitiveContains(source,target);
28566} or {
28567 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
28568}
28569/**
28570 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
28571 */
28572private pattern mustInRelationeOpposite_reference_EReference(
28573 problem:LogicProblem, interpretation:PartialInterpretation,
28574 source: DefinedElement, target:DefinedElement)
28575{
28576 find interpretation(problem,interpretation);
28577 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28578 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
28579 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28580 BinaryElementRelationLink.param1(link,source);
28581 BinaryElementRelationLink.param2(link,target);
28582}
28583/**
28584 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
28585 */
28586private pattern mayInRelationeOpposite_reference_EReference(
28587 problem:LogicProblem, interpretation:PartialInterpretation,
28588 source: DefinedElement, target:DefinedElement)
28589{
28590 find interpretation(problem,interpretation);
28591 // The two endpoint of the link have to exist
28592 find mayExist(problem, interpretation, source);
28593 find mayExist(problem, interpretation, target);
28594 // Type consistency
28595 find mayInstanceOfEReference_class(problem,interpretation,source);
28596 find mayInstanceOfEReference_class(problem,interpretation,target);
28597 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28598 // the upper bound of the multiplicity should be considered.
28599 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
28600 check(numberOfExistingReferences < 1);
28601} or {
28602 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
28603}
28604/**
28605 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
28606 */
28607private pattern mustInRelationeReferenceType_reference_EReference(
28608 problem:LogicProblem, interpretation:PartialInterpretation,
28609 source: DefinedElement, target:DefinedElement)
28610{
28611 find interpretation(problem,interpretation);
28612 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28613 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
28614 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28615 BinaryElementRelationLink.param1(link,source);
28616 BinaryElementRelationLink.param2(link,target);
28617}
28618/**
28619 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
28620 */
28621private pattern mayInRelationeReferenceType_reference_EReference(
28622 problem:LogicProblem, interpretation:PartialInterpretation,
28623 source: DefinedElement, target:DefinedElement)
28624{
28625 find interpretation(problem,interpretation);
28626 // The two endpoint of the link have to exist
28627 find mayExist(problem, interpretation, source);
28628 find mayExist(problem, interpretation, target);
28629 // Type consistency
28630 find mayInstanceOfEReference_class(problem,interpretation,source);
28631 find mayInstanceOfEClass_class(problem,interpretation,target);
28632 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28633 // the upper bound of the multiplicity should be considered.
28634 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
28635 check(numberOfExistingReferences < 1);
28636} or {
28637 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
28638}
28639/**
28640 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
28641 */
28642private pattern mustInRelationeKeys_reference_EReference(
28643 problem:LogicProblem, interpretation:PartialInterpretation,
28644 source: DefinedElement, target:DefinedElement)
28645{
28646 find interpretation(problem,interpretation);
28647 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28648 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
28649 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28650 BinaryElementRelationLink.param1(link,source);
28651 BinaryElementRelationLink.param2(link,target);
28652}
28653/**
28654 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
28655 */
28656private pattern mayInRelationeKeys_reference_EReference(
28657 problem:LogicProblem, interpretation:PartialInterpretation,
28658 source: DefinedElement, target:DefinedElement)
28659{
28660 find interpretation(problem,interpretation);
28661 // The two endpoint of the link have to exist
28662 find mayExist(problem, interpretation, source);
28663 find mayExist(problem, interpretation, target);
28664 // Type consistency
28665 find mayInstanceOfEReference_class(problem,interpretation,source);
28666 find mayInstanceOfEAttribute_class(problem,interpretation,target);
28667} or {
28668 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
28669}
28670/**
28671 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
28672 */
28673private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
28674 problem:LogicProblem, interpretation:PartialInterpretation,
28675 source: DefinedElement, target:DefinedElement)
28676{
28677 find interpretation(problem,interpretation);
28678 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28679 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
28680 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28681 BinaryElementRelationLink.param1(link,source);
28682 BinaryElementRelationLink.param2(link,target);
28683}
28684/**
28685 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
28686 */
28687private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
28688 problem:LogicProblem, interpretation:PartialInterpretation,
28689 source: DefinedElement, target:DefinedElement)
28690{
28691 find interpretation(problem,interpretation);
28692 // The two endpoint of the link have to exist
28693 find mayExist(problem, interpretation, source);
28694 find mayExist(problem, interpretation, target);
28695 // Type consistency
28696 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
28697 find mayInstanceOfEClass_class(problem,interpretation,target);
28698 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28699 // the upper bound of the multiplicity should be considered.
28700 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
28701 check(numberOfExistingReferences < 1);
28702 // The eOpposite of the reference is containment, then a referene cannot be created if
28703 // 1. Multiple parents
28704 neg find mustContains4(problem,interpretation,source,_);
28705 // 2. Circle in the containment hierarchy
28706 neg find mustTransitiveContains(source,target);
28707} or {
28708 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
28709}
28710/**
28711 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
28712 */
28713private pattern mustInRelationeType_reference_ETypedElement(
28714 problem:LogicProblem, interpretation:PartialInterpretation,
28715 source: DefinedElement, target:DefinedElement)
28716{
28717 find interpretation(problem,interpretation);
28718 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28719 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
28720 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28721 BinaryElementRelationLink.param1(link,source);
28722 BinaryElementRelationLink.param2(link,target);
28723}
28724/**
28725 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
28726 */
28727private pattern mayInRelationeType_reference_ETypedElement(
28728 problem:LogicProblem, interpretation:PartialInterpretation,
28729 source: DefinedElement, target:DefinedElement)
28730{
28731 find interpretation(problem,interpretation);
28732 // The two endpoint of the link have to exist
28733 find mayExist(problem, interpretation, source);
28734 find mayExist(problem, interpretation, target);
28735 // Type consistency
28736 find mayInstanceOfETypedElement_class(problem,interpretation,source);
28737 find mayInstanceOfEClassifier_class(problem,interpretation,target);
28738 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28739 // the upper bound of the multiplicity should be considered.
28740 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
28741 check(numberOfExistingReferences < 1);
28742} or {
28743 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
28744}
28745/**
28746 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
28747 */
28748private pattern mustInRelationeGenericType_reference_ETypedElement(
28749 problem:LogicProblem, interpretation:PartialInterpretation,
28750 source: DefinedElement, target:DefinedElement)
28751{
28752 find interpretation(problem,interpretation);
28753 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28754 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
28755 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28756 BinaryElementRelationLink.param1(link,source);
28757 BinaryElementRelationLink.param2(link,target);
28758}
28759/**
28760 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
28761 */
28762private pattern mayInRelationeGenericType_reference_ETypedElement(
28763 problem:LogicProblem, interpretation:PartialInterpretation,
28764 source: DefinedElement, target:DefinedElement)
28765{
28766 find interpretation(problem,interpretation);
28767 // The two endpoint of the link have to exist
28768 find mayExist(problem, interpretation, source);
28769 find mayExist(problem, interpretation, target);
28770 // Type consistency
28771 find mayInstanceOfETypedElement_class(problem,interpretation,source);
28772 find mayInstanceOfEGenericType_class(problem,interpretation,target);
28773 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28774 // the upper bound of the multiplicity should be considered.
28775 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
28776 check(numberOfExistingReferences < 1);
28777 // The reference is containment, then a new reference cannot be create if:
28778 // 1. Multiple parents
28779 neg find mustContains4(problem,interpretation,_,target);
28780 // 2. Circle in the containment hierarchy
28781 neg find mustTransitiveContains(source,target);
28782} or {
28783 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
28784}
28785/**
28786 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
28787 */
28788private pattern mustInRelationeUpperBound_reference_EGenericType(
28789 problem:LogicProblem, interpretation:PartialInterpretation,
28790 source: DefinedElement, target:DefinedElement)
28791{
28792 find interpretation(problem,interpretation);
28793 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28794 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
28795 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28796 BinaryElementRelationLink.param1(link,source);
28797 BinaryElementRelationLink.param2(link,target);
28798}
28799/**
28800 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
28801 */
28802private pattern mayInRelationeUpperBound_reference_EGenericType(
28803 problem:LogicProblem, interpretation:PartialInterpretation,
28804 source: DefinedElement, target:DefinedElement)
28805{
28806 find interpretation(problem,interpretation);
28807 // The two endpoint of the link have to exist
28808 find mayExist(problem, interpretation, source);
28809 find mayExist(problem, interpretation, target);
28810 // Type consistency
28811 find mayInstanceOfEGenericType_class(problem,interpretation,source);
28812 find mayInstanceOfEGenericType_class(problem,interpretation,target);
28813 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28814 // the upper bound of the multiplicity should be considered.
28815 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
28816 check(numberOfExistingReferences < 1);
28817 // The reference is containment, then a new reference cannot be create if:
28818 // 1. Multiple parents
28819 neg find mustContains4(problem,interpretation,_,target);
28820 // 2. Circle in the containment hierarchy
28821 neg find mustTransitiveContains(source,target);
28822} or {
28823 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
28824}
28825/**
28826 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
28827 */
28828private pattern mustInRelationeTypeArguments_reference_EGenericType(
28829 problem:LogicProblem, interpretation:PartialInterpretation,
28830 source: DefinedElement, target:DefinedElement)
28831{
28832 find interpretation(problem,interpretation);
28833 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28834 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
28835 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28836 BinaryElementRelationLink.param1(link,source);
28837 BinaryElementRelationLink.param2(link,target);
28838}
28839/**
28840 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
28841 */
28842private pattern mayInRelationeTypeArguments_reference_EGenericType(
28843 problem:LogicProblem, interpretation:PartialInterpretation,
28844 source: DefinedElement, target:DefinedElement)
28845{
28846 find interpretation(problem,interpretation);
28847 // The two endpoint of the link have to exist
28848 find mayExist(problem, interpretation, source);
28849 find mayExist(problem, interpretation, target);
28850 // Type consistency
28851 find mayInstanceOfEGenericType_class(problem,interpretation,source);
28852 find mayInstanceOfEGenericType_class(problem,interpretation,target);
28853 // The reference is containment, then a new reference cannot be create if:
28854 // 1. Multiple parents
28855 neg find mustContains4(problem,interpretation,_,target);
28856 // 2. Circle in the containment hierarchy
28857 neg find mustTransitiveContains(source,target);
28858} or {
28859 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
28860}
28861/**
28862 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
28863 */
28864private pattern mustInRelationeRawType_reference_EGenericType(
28865 problem:LogicProblem, interpretation:PartialInterpretation,
28866 source: DefinedElement, target:DefinedElement)
28867{
28868 find interpretation(problem,interpretation);
28869 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28870 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
28871 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28872 BinaryElementRelationLink.param1(link,source);
28873 BinaryElementRelationLink.param2(link,target);
28874}
28875/**
28876 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
28877 */
28878private pattern mayInRelationeRawType_reference_EGenericType(
28879 problem:LogicProblem, interpretation:PartialInterpretation,
28880 source: DefinedElement, target:DefinedElement)
28881{
28882 find interpretation(problem,interpretation);
28883 // The two endpoint of the link have to exist
28884 find mayExist(problem, interpretation, source);
28885 find mayExist(problem, interpretation, target);
28886 // Type consistency
28887 find mayInstanceOfEGenericType_class(problem,interpretation,source);
28888 find mayInstanceOfEClassifier_class(problem,interpretation,target);
28889 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28890 // the upper bound of the multiplicity should be considered.
28891 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
28892 check(numberOfExistingReferences < 1);
28893} or {
28894 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
28895}
28896/**
28897 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
28898 */
28899private pattern mustInRelationeLowerBound_reference_EGenericType(
28900 problem:LogicProblem, interpretation:PartialInterpretation,
28901 source: DefinedElement, target:DefinedElement)
28902{
28903 find interpretation(problem,interpretation);
28904 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28905 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
28906 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28907 BinaryElementRelationLink.param1(link,source);
28908 BinaryElementRelationLink.param2(link,target);
28909}
28910/**
28911 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
28912 */
28913private pattern mayInRelationeLowerBound_reference_EGenericType(
28914 problem:LogicProblem, interpretation:PartialInterpretation,
28915 source: DefinedElement, target:DefinedElement)
28916{
28917 find interpretation(problem,interpretation);
28918 // The two endpoint of the link have to exist
28919 find mayExist(problem, interpretation, source);
28920 find mayExist(problem, interpretation, target);
28921 // Type consistency
28922 find mayInstanceOfEGenericType_class(problem,interpretation,source);
28923 find mayInstanceOfEGenericType_class(problem,interpretation,target);
28924 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28925 // the upper bound of the multiplicity should be considered.
28926 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
28927 check(numberOfExistingReferences < 1);
28928 // The reference is containment, then a new reference cannot be create if:
28929 // 1. Multiple parents
28930 neg find mustContains4(problem,interpretation,_,target);
28931 // 2. Circle in the containment hierarchy
28932 neg find mustTransitiveContains(source,target);
28933} or {
28934 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
28935}
28936/**
28937 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
28938 */
28939private pattern mustInRelationeTypeParameter_reference_EGenericType(
28940 problem:LogicProblem, interpretation:PartialInterpretation,
28941 source: DefinedElement, target:DefinedElement)
28942{
28943 find interpretation(problem,interpretation);
28944 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28945 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
28946 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28947 BinaryElementRelationLink.param1(link,source);
28948 BinaryElementRelationLink.param2(link,target);
28949}
28950/**
28951 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
28952 */
28953private pattern mayInRelationeTypeParameter_reference_EGenericType(
28954 problem:LogicProblem, interpretation:PartialInterpretation,
28955 source: DefinedElement, target:DefinedElement)
28956{
28957 find interpretation(problem,interpretation);
28958 // The two endpoint of the link have to exist
28959 find mayExist(problem, interpretation, source);
28960 find mayExist(problem, interpretation, target);
28961 // Type consistency
28962 find mayInstanceOfEGenericType_class(problem,interpretation,source);
28963 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
28964 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
28965 // the upper bound of the multiplicity should be considered.
28966 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
28967 check(numberOfExistingReferences < 1);
28968} or {
28969 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
28970}
28971/**
28972 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
28973 */
28974private pattern mustInRelationeClassifier_reference_EGenericType(
28975 problem:LogicProblem, interpretation:PartialInterpretation,
28976 source: DefinedElement, target:DefinedElement)
28977{
28978 find interpretation(problem,interpretation);
28979 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
28980 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
28981 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
28982 BinaryElementRelationLink.param1(link,source);
28983 BinaryElementRelationLink.param2(link,target);
28984}
28985/**
28986 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
28987 */
28988private pattern mayInRelationeClassifier_reference_EGenericType(
28989 problem:LogicProblem, interpretation:PartialInterpretation,
28990 source: DefinedElement, target:DefinedElement)
28991{
28992 find interpretation(problem,interpretation);
28993 // The two endpoint of the link have to exist
28994 find mayExist(problem, interpretation, source);
28995 find mayExist(problem, interpretation, target);
28996 // Type consistency
28997 find mayInstanceOfEGenericType_class(problem,interpretation,source);
28998 find mayInstanceOfEClassifier_class(problem,interpretation,target);
28999 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29000 // the upper bound of the multiplicity should be considered.
29001 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
29002 check(numberOfExistingReferences < 1);
29003} or {
29004 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
29005}
29006/**
29007 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
29008 */
29009private pattern mustInRelationeBounds_reference_ETypeParameter(
29010 problem:LogicProblem, interpretation:PartialInterpretation,
29011 source: DefinedElement, target:DefinedElement)
29012{
29013 find interpretation(problem,interpretation);
29014 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29015 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
29016 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29017 BinaryElementRelationLink.param1(link,source);
29018 BinaryElementRelationLink.param2(link,target);
29019}
29020/**
29021 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
29022 */
29023private pattern mayInRelationeBounds_reference_ETypeParameter(
29024 problem:LogicProblem, interpretation:PartialInterpretation,
29025 source: DefinedElement, target:DefinedElement)
29026{
29027 find interpretation(problem,interpretation);
29028 // The two endpoint of the link have to exist
29029 find mayExist(problem, interpretation, source);
29030 find mayExist(problem, interpretation, target);
29031 // Type consistency
29032 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
29033 find mayInstanceOfEGenericType_class(problem,interpretation,target);
29034 // The reference is containment, then a new reference cannot be create if:
29035 // 1. Multiple parents
29036 neg find mustContains4(problem,interpretation,_,target);
29037 // 2. Circle in the containment hierarchy
29038 neg find mustTransitiveContains(source,target);
29039} or {
29040 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
29041}
29042/**
29043 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
29044 */
29045private pattern mustInRelationiD_attribute_EAttribute(
29046 problem:LogicProblem, interpretation:PartialInterpretation,
29047 source: DefinedElement, target:DefinedElement)
29048{
29049 find interpretation(problem,interpretation);
29050 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29051 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
29052 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29053 BinaryElementRelationLink.param1(link,source);
29054 BinaryElementRelationLink.param2(link,target);
29055}
29056/**
29057 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
29058 */
29059private pattern mayInRelationiD_attribute_EAttribute(
29060 problem:LogicProblem, interpretation:PartialInterpretation,
29061 source: DefinedElement, target:DefinedElement)
29062{
29063 find interpretation(problem,interpretation);
29064 // The two endpoint of the link have to exist
29065 find mayExist(problem, interpretation, source);
29066 find mayExist(problem, interpretation, target);
29067 // Type consistency
29068 find mayInstanceOfEAttribute_class(problem,interpretation,source);
29069 BooleanElement(target);
29070 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29071 // the upper bound of the multiplicity should be considered.
29072 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
29073 check(numberOfExistingReferences < 1);
29074} or {
29075 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
29076}
29077/**
29078 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
29079 */
29080private pattern mustInRelationsource_attribute_EAnnotation(
29081 problem:LogicProblem, interpretation:PartialInterpretation,
29082 source: DefinedElement, target:DefinedElement)
29083{
29084 find interpretation(problem,interpretation);
29085 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29086 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
29087 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29088 BinaryElementRelationLink.param1(link,source);
29089 BinaryElementRelationLink.param2(link,target);
29090}
29091/**
29092 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
29093 */
29094private pattern mayInRelationsource_attribute_EAnnotation(
29095 problem:LogicProblem, interpretation:PartialInterpretation,
29096 source: DefinedElement, target:DefinedElement)
29097{
29098 find interpretation(problem,interpretation);
29099 // The two endpoint of the link have to exist
29100 find mayExist(problem, interpretation, source);
29101 find mayExist(problem, interpretation, target);
29102 // Type consistency
29103 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
29104 StringElement(target);
29105 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29106 // the upper bound of the multiplicity should be considered.
29107 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
29108 check(numberOfExistingReferences < 1);
29109} or {
29110 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
29111}
29112/**
29113 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
29114 */
29115private pattern mustInRelationabstract_attribute_EClass(
29116 problem:LogicProblem, interpretation:PartialInterpretation,
29117 source: DefinedElement, target:DefinedElement)
29118{
29119 find interpretation(problem,interpretation);
29120 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29121 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
29122 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29123 BinaryElementRelationLink.param1(link,source);
29124 BinaryElementRelationLink.param2(link,target);
29125}
29126/**
29127 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
29128 */
29129private pattern mayInRelationabstract_attribute_EClass(
29130 problem:LogicProblem, interpretation:PartialInterpretation,
29131 source: DefinedElement, target:DefinedElement)
29132{
29133 find interpretation(problem,interpretation);
29134 // The two endpoint of the link have to exist
29135 find mayExist(problem, interpretation, source);
29136 find mayExist(problem, interpretation, target);
29137 // Type consistency
29138 find mayInstanceOfEClass_class(problem,interpretation,source);
29139 BooleanElement(target);
29140 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29141 // the upper bound of the multiplicity should be considered.
29142 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
29143 check(numberOfExistingReferences < 1);
29144} or {
29145 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
29146}
29147/**
29148 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
29149 */
29150private pattern mustInRelationinterface_attribute_EClass(
29151 problem:LogicProblem, interpretation:PartialInterpretation,
29152 source: DefinedElement, target:DefinedElement)
29153{
29154 find interpretation(problem,interpretation);
29155 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29156 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
29157 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29158 BinaryElementRelationLink.param1(link,source);
29159 BinaryElementRelationLink.param2(link,target);
29160}
29161/**
29162 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
29163 */
29164private pattern mayInRelationinterface_attribute_EClass(
29165 problem:LogicProblem, interpretation:PartialInterpretation,
29166 source: DefinedElement, target:DefinedElement)
29167{
29168 find interpretation(problem,interpretation);
29169 // The two endpoint of the link have to exist
29170 find mayExist(problem, interpretation, source);
29171 find mayExist(problem, interpretation, target);
29172 // Type consistency
29173 find mayInstanceOfEClass_class(problem,interpretation,source);
29174 BooleanElement(target);
29175 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29176 // the upper bound of the multiplicity should be considered.
29177 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
29178 check(numberOfExistingReferences < 1);
29179} or {
29180 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
29181}
29182/**
29183 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
29184 */
29185private pattern mustInRelationinstanceClassName_attribute_EClassifier(
29186 problem:LogicProblem, interpretation:PartialInterpretation,
29187 source: DefinedElement, target:DefinedElement)
29188{
29189 find interpretation(problem,interpretation);
29190 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29191 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
29192 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29193 BinaryElementRelationLink.param1(link,source);
29194 BinaryElementRelationLink.param2(link,target);
29195}
29196/**
29197 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
29198 */
29199private pattern mayInRelationinstanceClassName_attribute_EClassifier(
29200 problem:LogicProblem, interpretation:PartialInterpretation,
29201 source: DefinedElement, target:DefinedElement)
29202{
29203 find interpretation(problem,interpretation);
29204 // The two endpoint of the link have to exist
29205 find mayExist(problem, interpretation, source);
29206 find mayExist(problem, interpretation, target);
29207 // Type consistency
29208 find mayInstanceOfEClassifier_class(problem,interpretation,source);
29209 StringElement(target);
29210 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29211 // the upper bound of the multiplicity should be considered.
29212 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
29213 check(numberOfExistingReferences < 1);
29214} or {
29215 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
29216}
29217/**
29218 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
29219 */
29220private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
29221 problem:LogicProblem, interpretation:PartialInterpretation,
29222 source: DefinedElement, target:DefinedElement)
29223{
29224 find interpretation(problem,interpretation);
29225 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29226 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
29227 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29228 BinaryElementRelationLink.param1(link,source);
29229 BinaryElementRelationLink.param2(link,target);
29230}
29231/**
29232 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
29233 */
29234private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
29235 problem:LogicProblem, interpretation:PartialInterpretation,
29236 source: DefinedElement, target:DefinedElement)
29237{
29238 find interpretation(problem,interpretation);
29239 // The two endpoint of the link have to exist
29240 find mayExist(problem, interpretation, source);
29241 find mayExist(problem, interpretation, target);
29242 // Type consistency
29243 find mayInstanceOfEClassifier_class(problem,interpretation,source);
29244 StringElement(target);
29245 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29246 // the upper bound of the multiplicity should be considered.
29247 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
29248 check(numberOfExistingReferences < 1);
29249} or {
29250 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
29251}
29252/**
29253 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
29254 */
29255private pattern mustInRelationserializable_attribute_EDataType(
29256 problem:LogicProblem, interpretation:PartialInterpretation,
29257 source: DefinedElement, target:DefinedElement)
29258{
29259 find interpretation(problem,interpretation);
29260 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29261 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
29262 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29263 BinaryElementRelationLink.param1(link,source);
29264 BinaryElementRelationLink.param2(link,target);
29265}
29266/**
29267 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
29268 */
29269private pattern mayInRelationserializable_attribute_EDataType(
29270 problem:LogicProblem, interpretation:PartialInterpretation,
29271 source: DefinedElement, target:DefinedElement)
29272{
29273 find interpretation(problem,interpretation);
29274 // The two endpoint of the link have to exist
29275 find mayExist(problem, interpretation, source);
29276 find mayExist(problem, interpretation, target);
29277 // Type consistency
29278 find mayInstanceOfEDataType_class(problem,interpretation,source);
29279 BooleanElement(target);
29280 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29281 // the upper bound of the multiplicity should be considered.
29282 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
29283 check(numberOfExistingReferences < 1);
29284} or {
29285 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
29286}
29287/**
29288 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
29289 */
29290private pattern mustInRelationvalue_attribute_EEnumLiteral(
29291 problem:LogicProblem, interpretation:PartialInterpretation,
29292 source: DefinedElement, target:DefinedElement)
29293{
29294 find interpretation(problem,interpretation);
29295 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29296 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
29297 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29298 BinaryElementRelationLink.param1(link,source);
29299 BinaryElementRelationLink.param2(link,target);
29300}
29301/**
29302 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
29303 */
29304private pattern mayInRelationvalue_attribute_EEnumLiteral(
29305 problem:LogicProblem, interpretation:PartialInterpretation,
29306 source: DefinedElement, target:DefinedElement)
29307{
29308 find interpretation(problem,interpretation);
29309 // The two endpoint of the link have to exist
29310 find mayExist(problem, interpretation, source);
29311 find mayExist(problem, interpretation, target);
29312 // Type consistency
29313 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
29314 IntegerElement(target);
29315 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29316 // the upper bound of the multiplicity should be considered.
29317 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
29318 check(numberOfExistingReferences < 1);
29319} or {
29320 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
29321}
29322/**
29323 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
29324 */
29325private pattern mustInRelationliteral_attribute_EEnumLiteral(
29326 problem:LogicProblem, interpretation:PartialInterpretation,
29327 source: DefinedElement, target:DefinedElement)
29328{
29329 find interpretation(problem,interpretation);
29330 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29331 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
29332 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29333 BinaryElementRelationLink.param1(link,source);
29334 BinaryElementRelationLink.param2(link,target);
29335}
29336/**
29337 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
29338 */
29339private pattern mayInRelationliteral_attribute_EEnumLiteral(
29340 problem:LogicProblem, interpretation:PartialInterpretation,
29341 source: DefinedElement, target:DefinedElement)
29342{
29343 find interpretation(problem,interpretation);
29344 // The two endpoint of the link have to exist
29345 find mayExist(problem, interpretation, source);
29346 find mayExist(problem, interpretation, target);
29347 // Type consistency
29348 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
29349 StringElement(target);
29350 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29351 // the upper bound of the multiplicity should be considered.
29352 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
29353 check(numberOfExistingReferences < 1);
29354} or {
29355 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
29356}
29357/**
29358 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
29359 */
29360private pattern mustInRelationname_attribute_ENamedElement(
29361 problem:LogicProblem, interpretation:PartialInterpretation,
29362 source: DefinedElement, target:DefinedElement)
29363{
29364 find interpretation(problem,interpretation);
29365 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29366 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
29367 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29368 BinaryElementRelationLink.param1(link,source);
29369 BinaryElementRelationLink.param2(link,target);
29370}
29371/**
29372 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
29373 */
29374private pattern mayInRelationname_attribute_ENamedElement(
29375 problem:LogicProblem, interpretation:PartialInterpretation,
29376 source: DefinedElement, target:DefinedElement)
29377{
29378 find interpretation(problem,interpretation);
29379 // The two endpoint of the link have to exist
29380 find mayExist(problem, interpretation, source);
29381 find mayExist(problem, interpretation, target);
29382 // Type consistency
29383 find mayInstanceOfENamedElement_class(problem,interpretation,source);
29384 StringElement(target);
29385 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29386 // the upper bound of the multiplicity should be considered.
29387 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
29388 check(numberOfExistingReferences < 1);
29389} or {
29390 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
29391}
29392/**
29393 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
29394 */
29395private pattern mustInRelationnsURI_attribute_EPackage(
29396 problem:LogicProblem, interpretation:PartialInterpretation,
29397 source: DefinedElement, target:DefinedElement)
29398{
29399 find interpretation(problem,interpretation);
29400 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29401 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
29402 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29403 BinaryElementRelationLink.param1(link,source);
29404 BinaryElementRelationLink.param2(link,target);
29405}
29406/**
29407 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
29408 */
29409private pattern mayInRelationnsURI_attribute_EPackage(
29410 problem:LogicProblem, interpretation:PartialInterpretation,
29411 source: DefinedElement, target:DefinedElement)
29412{
29413 find interpretation(problem,interpretation);
29414 // The two endpoint of the link have to exist
29415 find mayExist(problem, interpretation, source);
29416 find mayExist(problem, interpretation, target);
29417 // Type consistency
29418 find mayInstanceOfEPackage_class(problem,interpretation,source);
29419 StringElement(target);
29420 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29421 // the upper bound of the multiplicity should be considered.
29422 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
29423 check(numberOfExistingReferences < 1);
29424} or {
29425 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
29426}
29427/**
29428 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
29429 */
29430private pattern mustInRelationnsPrefix_attribute_EPackage(
29431 problem:LogicProblem, interpretation:PartialInterpretation,
29432 source: DefinedElement, target:DefinedElement)
29433{
29434 find interpretation(problem,interpretation);
29435 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29436 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
29437 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29438 BinaryElementRelationLink.param1(link,source);
29439 BinaryElementRelationLink.param2(link,target);
29440}
29441/**
29442 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
29443 */
29444private pattern mayInRelationnsPrefix_attribute_EPackage(
29445 problem:LogicProblem, interpretation:PartialInterpretation,
29446 source: DefinedElement, target:DefinedElement)
29447{
29448 find interpretation(problem,interpretation);
29449 // The two endpoint of the link have to exist
29450 find mayExist(problem, interpretation, source);
29451 find mayExist(problem, interpretation, target);
29452 // Type consistency
29453 find mayInstanceOfEPackage_class(problem,interpretation,source);
29454 StringElement(target);
29455 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29456 // the upper bound of the multiplicity should be considered.
29457 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
29458 check(numberOfExistingReferences < 1);
29459} or {
29460 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
29461}
29462/**
29463 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
29464 */
29465private pattern mustInRelationcontainment_attribute_EReference(
29466 problem:LogicProblem, interpretation:PartialInterpretation,
29467 source: DefinedElement, target:DefinedElement)
29468{
29469 find interpretation(problem,interpretation);
29470 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29471 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
29472 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29473 BinaryElementRelationLink.param1(link,source);
29474 BinaryElementRelationLink.param2(link,target);
29475}
29476/**
29477 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
29478 */
29479private pattern mayInRelationcontainment_attribute_EReference(
29480 problem:LogicProblem, interpretation:PartialInterpretation,
29481 source: DefinedElement, target:DefinedElement)
29482{
29483 find interpretation(problem,interpretation);
29484 // The two endpoint of the link have to exist
29485 find mayExist(problem, interpretation, source);
29486 find mayExist(problem, interpretation, target);
29487 // Type consistency
29488 find mayInstanceOfEReference_class(problem,interpretation,source);
29489 BooleanElement(target);
29490 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29491 // the upper bound of the multiplicity should be considered.
29492 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
29493 check(numberOfExistingReferences < 1);
29494} or {
29495 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
29496}
29497/**
29498 * Matcher for detecting tuples t where []container attribute EReference(source,target)
29499 */
29500private pattern mustInRelationcontainer_attribute_EReference(
29501 problem:LogicProblem, interpretation:PartialInterpretation,
29502 source: DefinedElement, target:DefinedElement)
29503{
29504 find interpretation(problem,interpretation);
29505 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29506 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
29507 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29508 BinaryElementRelationLink.param1(link,source);
29509 BinaryElementRelationLink.param2(link,target);
29510}
29511/**
29512 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
29513 */
29514private pattern mayInRelationcontainer_attribute_EReference(
29515 problem:LogicProblem, interpretation:PartialInterpretation,
29516 source: DefinedElement, target:DefinedElement)
29517{
29518 find interpretation(problem,interpretation);
29519 // The two endpoint of the link have to exist
29520 find mayExist(problem, interpretation, source);
29521 find mayExist(problem, interpretation, target);
29522 // Type consistency
29523 find mayInstanceOfEReference_class(problem,interpretation,source);
29524 BooleanElement(target);
29525 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29526 // the upper bound of the multiplicity should be considered.
29527 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
29528 check(numberOfExistingReferences < 1);
29529} or {
29530 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
29531}
29532/**
29533 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
29534 */
29535private pattern mustInRelationresolveProxies_attribute_EReference(
29536 problem:LogicProblem, interpretation:PartialInterpretation,
29537 source: DefinedElement, target:DefinedElement)
29538{
29539 find interpretation(problem,interpretation);
29540 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29541 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
29542 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29543 BinaryElementRelationLink.param1(link,source);
29544 BinaryElementRelationLink.param2(link,target);
29545}
29546/**
29547 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
29548 */
29549private pattern mayInRelationresolveProxies_attribute_EReference(
29550 problem:LogicProblem, interpretation:PartialInterpretation,
29551 source: DefinedElement, target:DefinedElement)
29552{
29553 find interpretation(problem,interpretation);
29554 // The two endpoint of the link have to exist
29555 find mayExist(problem, interpretation, source);
29556 find mayExist(problem, interpretation, target);
29557 // Type consistency
29558 find mayInstanceOfEReference_class(problem,interpretation,source);
29559 BooleanElement(target);
29560 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29561 // the upper bound of the multiplicity should be considered.
29562 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
29563 check(numberOfExistingReferences < 1);
29564} or {
29565 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
29566}
29567/**
29568 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
29569 */
29570private pattern mustInRelationchangeable_attribute_EStructuralFeature(
29571 problem:LogicProblem, interpretation:PartialInterpretation,
29572 source: DefinedElement, target:DefinedElement)
29573{
29574 find interpretation(problem,interpretation);
29575 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29576 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
29577 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29578 BinaryElementRelationLink.param1(link,source);
29579 BinaryElementRelationLink.param2(link,target);
29580}
29581/**
29582 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
29583 */
29584private pattern mayInRelationchangeable_attribute_EStructuralFeature(
29585 problem:LogicProblem, interpretation:PartialInterpretation,
29586 source: DefinedElement, target:DefinedElement)
29587{
29588 find interpretation(problem,interpretation);
29589 // The two endpoint of the link have to exist
29590 find mayExist(problem, interpretation, source);
29591 find mayExist(problem, interpretation, target);
29592 // Type consistency
29593 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
29594 BooleanElement(target);
29595 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29596 // the upper bound of the multiplicity should be considered.
29597 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
29598 check(numberOfExistingReferences < 1);
29599} or {
29600 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
29601}
29602/**
29603 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
29604 */
29605private pattern mustInRelationvolatile_attribute_EStructuralFeature(
29606 problem:LogicProblem, interpretation:PartialInterpretation,
29607 source: DefinedElement, target:DefinedElement)
29608{
29609 find interpretation(problem,interpretation);
29610 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29611 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
29612 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29613 BinaryElementRelationLink.param1(link,source);
29614 BinaryElementRelationLink.param2(link,target);
29615}
29616/**
29617 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
29618 */
29619private pattern mayInRelationvolatile_attribute_EStructuralFeature(
29620 problem:LogicProblem, interpretation:PartialInterpretation,
29621 source: DefinedElement, target:DefinedElement)
29622{
29623 find interpretation(problem,interpretation);
29624 // The two endpoint of the link have to exist
29625 find mayExist(problem, interpretation, source);
29626 find mayExist(problem, interpretation, target);
29627 // Type consistency
29628 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
29629 BooleanElement(target);
29630 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29631 // the upper bound of the multiplicity should be considered.
29632 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
29633 check(numberOfExistingReferences < 1);
29634} or {
29635 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
29636}
29637/**
29638 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
29639 */
29640private pattern mustInRelationtransient_attribute_EStructuralFeature(
29641 problem:LogicProblem, interpretation:PartialInterpretation,
29642 source: DefinedElement, target:DefinedElement)
29643{
29644 find interpretation(problem,interpretation);
29645 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29646 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
29647 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29648 BinaryElementRelationLink.param1(link,source);
29649 BinaryElementRelationLink.param2(link,target);
29650}
29651/**
29652 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
29653 */
29654private pattern mayInRelationtransient_attribute_EStructuralFeature(
29655 problem:LogicProblem, interpretation:PartialInterpretation,
29656 source: DefinedElement, target:DefinedElement)
29657{
29658 find interpretation(problem,interpretation);
29659 // The two endpoint of the link have to exist
29660 find mayExist(problem, interpretation, source);
29661 find mayExist(problem, interpretation, target);
29662 // Type consistency
29663 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
29664 BooleanElement(target);
29665 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29666 // the upper bound of the multiplicity should be considered.
29667 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
29668 check(numberOfExistingReferences < 1);
29669} or {
29670 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
29671}
29672/**
29673 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
29674 */
29675private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
29676 problem:LogicProblem, interpretation:PartialInterpretation,
29677 source: DefinedElement, target:DefinedElement)
29678{
29679 find interpretation(problem,interpretation);
29680 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29681 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
29682 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29683 BinaryElementRelationLink.param1(link,source);
29684 BinaryElementRelationLink.param2(link,target);
29685}
29686/**
29687 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
29688 */
29689private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
29690 problem:LogicProblem, interpretation:PartialInterpretation,
29691 source: DefinedElement, target:DefinedElement)
29692{
29693 find interpretation(problem,interpretation);
29694 // The two endpoint of the link have to exist
29695 find mayExist(problem, interpretation, source);
29696 find mayExist(problem, interpretation, target);
29697 // Type consistency
29698 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
29699 StringElement(target);
29700 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29701 // the upper bound of the multiplicity should be considered.
29702 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
29703 check(numberOfExistingReferences < 1);
29704} or {
29705 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
29706}
29707/**
29708 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
29709 */
29710private pattern mustInRelationunsettable_attribute_EStructuralFeature(
29711 problem:LogicProblem, interpretation:PartialInterpretation,
29712 source: DefinedElement, target:DefinedElement)
29713{
29714 find interpretation(problem,interpretation);
29715 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29716 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
29717 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29718 BinaryElementRelationLink.param1(link,source);
29719 BinaryElementRelationLink.param2(link,target);
29720}
29721/**
29722 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
29723 */
29724private pattern mayInRelationunsettable_attribute_EStructuralFeature(
29725 problem:LogicProblem, interpretation:PartialInterpretation,
29726 source: DefinedElement, target:DefinedElement)
29727{
29728 find interpretation(problem,interpretation);
29729 // The two endpoint of the link have to exist
29730 find mayExist(problem, interpretation, source);
29731 find mayExist(problem, interpretation, target);
29732 // Type consistency
29733 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
29734 BooleanElement(target);
29735 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29736 // the upper bound of the multiplicity should be considered.
29737 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
29738 check(numberOfExistingReferences < 1);
29739} or {
29740 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
29741}
29742/**
29743 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
29744 */
29745private pattern mustInRelationderived_attribute_EStructuralFeature(
29746 problem:LogicProblem, interpretation:PartialInterpretation,
29747 source: DefinedElement, target:DefinedElement)
29748{
29749 find interpretation(problem,interpretation);
29750 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29751 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
29752 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29753 BinaryElementRelationLink.param1(link,source);
29754 BinaryElementRelationLink.param2(link,target);
29755}
29756/**
29757 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
29758 */
29759private pattern mayInRelationderived_attribute_EStructuralFeature(
29760 problem:LogicProblem, interpretation:PartialInterpretation,
29761 source: DefinedElement, target:DefinedElement)
29762{
29763 find interpretation(problem,interpretation);
29764 // The two endpoint of the link have to exist
29765 find mayExist(problem, interpretation, source);
29766 find mayExist(problem, interpretation, target);
29767 // Type consistency
29768 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
29769 BooleanElement(target);
29770 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29771 // the upper bound of the multiplicity should be considered.
29772 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
29773 check(numberOfExistingReferences < 1);
29774} or {
29775 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
29776}
29777/**
29778 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
29779 */
29780private pattern mustInRelationordered_attribute_ETypedElement(
29781 problem:LogicProblem, interpretation:PartialInterpretation,
29782 source: DefinedElement, target:DefinedElement)
29783{
29784 find interpretation(problem,interpretation);
29785 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29786 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
29787 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29788 BinaryElementRelationLink.param1(link,source);
29789 BinaryElementRelationLink.param2(link,target);
29790}
29791/**
29792 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
29793 */
29794private pattern mayInRelationordered_attribute_ETypedElement(
29795 problem:LogicProblem, interpretation:PartialInterpretation,
29796 source: DefinedElement, target:DefinedElement)
29797{
29798 find interpretation(problem,interpretation);
29799 // The two endpoint of the link have to exist
29800 find mayExist(problem, interpretation, source);
29801 find mayExist(problem, interpretation, target);
29802 // Type consistency
29803 find mayInstanceOfETypedElement_class(problem,interpretation,source);
29804 BooleanElement(target);
29805 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29806 // the upper bound of the multiplicity should be considered.
29807 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
29808 check(numberOfExistingReferences < 1);
29809} or {
29810 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
29811}
29812/**
29813 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
29814 */
29815private pattern mustInRelationunique_attribute_ETypedElement(
29816 problem:LogicProblem, interpretation:PartialInterpretation,
29817 source: DefinedElement, target:DefinedElement)
29818{
29819 find interpretation(problem,interpretation);
29820 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29821 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
29822 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29823 BinaryElementRelationLink.param1(link,source);
29824 BinaryElementRelationLink.param2(link,target);
29825}
29826/**
29827 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
29828 */
29829private pattern mayInRelationunique_attribute_ETypedElement(
29830 problem:LogicProblem, interpretation:PartialInterpretation,
29831 source: DefinedElement, target:DefinedElement)
29832{
29833 find interpretation(problem,interpretation);
29834 // The two endpoint of the link have to exist
29835 find mayExist(problem, interpretation, source);
29836 find mayExist(problem, interpretation, target);
29837 // Type consistency
29838 find mayInstanceOfETypedElement_class(problem,interpretation,source);
29839 BooleanElement(target);
29840 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29841 // the upper bound of the multiplicity should be considered.
29842 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
29843 check(numberOfExistingReferences < 1);
29844} or {
29845 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
29846}
29847/**
29848 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
29849 */
29850private pattern mustInRelationlowerBound_attribute_ETypedElement(
29851 problem:LogicProblem, interpretation:PartialInterpretation,
29852 source: DefinedElement, target:DefinedElement)
29853{
29854 find interpretation(problem,interpretation);
29855 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29856 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
29857 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29858 BinaryElementRelationLink.param1(link,source);
29859 BinaryElementRelationLink.param2(link,target);
29860}
29861/**
29862 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
29863 */
29864private pattern mayInRelationlowerBound_attribute_ETypedElement(
29865 problem:LogicProblem, interpretation:PartialInterpretation,
29866 source: DefinedElement, target:DefinedElement)
29867{
29868 find interpretation(problem,interpretation);
29869 // The two endpoint of the link have to exist
29870 find mayExist(problem, interpretation, source);
29871 find mayExist(problem, interpretation, target);
29872 // Type consistency
29873 find mayInstanceOfETypedElement_class(problem,interpretation,source);
29874 IntegerElement(target);
29875 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29876 // the upper bound of the multiplicity should be considered.
29877 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
29878 check(numberOfExistingReferences < 1);
29879} or {
29880 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
29881}
29882/**
29883 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
29884 */
29885private pattern mustInRelationupperBound_attribute_ETypedElement(
29886 problem:LogicProblem, interpretation:PartialInterpretation,
29887 source: DefinedElement, target:DefinedElement)
29888{
29889 find interpretation(problem,interpretation);
29890 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29891 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
29892 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29893 BinaryElementRelationLink.param1(link,source);
29894 BinaryElementRelationLink.param2(link,target);
29895}
29896/**
29897 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
29898 */
29899private pattern mayInRelationupperBound_attribute_ETypedElement(
29900 problem:LogicProblem, interpretation:PartialInterpretation,
29901 source: DefinedElement, target:DefinedElement)
29902{
29903 find interpretation(problem,interpretation);
29904 // The two endpoint of the link have to exist
29905 find mayExist(problem, interpretation, source);
29906 find mayExist(problem, interpretation, target);
29907 // Type consistency
29908 find mayInstanceOfETypedElement_class(problem,interpretation,source);
29909 IntegerElement(target);
29910 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29911 // the upper bound of the multiplicity should be considered.
29912 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
29913 check(numberOfExistingReferences < 1);
29914} or {
29915 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
29916}
29917/**
29918 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
29919 */
29920private pattern mustInRelationmany_attribute_ETypedElement(
29921 problem:LogicProblem, interpretation:PartialInterpretation,
29922 source: DefinedElement, target:DefinedElement)
29923{
29924 find interpretation(problem,interpretation);
29925 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29926 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
29927 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29928 BinaryElementRelationLink.param1(link,source);
29929 BinaryElementRelationLink.param2(link,target);
29930}
29931/**
29932 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
29933 */
29934private pattern mayInRelationmany_attribute_ETypedElement(
29935 problem:LogicProblem, interpretation:PartialInterpretation,
29936 source: DefinedElement, target:DefinedElement)
29937{
29938 find interpretation(problem,interpretation);
29939 // The two endpoint of the link have to exist
29940 find mayExist(problem, interpretation, source);
29941 find mayExist(problem, interpretation, target);
29942 // Type consistency
29943 find mayInstanceOfETypedElement_class(problem,interpretation,source);
29944 BooleanElement(target);
29945 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29946 // the upper bound of the multiplicity should be considered.
29947 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
29948 check(numberOfExistingReferences < 1);
29949} or {
29950 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
29951}
29952/**
29953 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
29954 */
29955private pattern mustInRelationrequired_attribute_ETypedElement(
29956 problem:LogicProblem, interpretation:PartialInterpretation,
29957 source: DefinedElement, target:DefinedElement)
29958{
29959 find interpretation(problem,interpretation);
29960 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29961 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
29962 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29963 BinaryElementRelationLink.param1(link,source);
29964 BinaryElementRelationLink.param2(link,target);
29965}
29966/**
29967 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
29968 */
29969private pattern mayInRelationrequired_attribute_ETypedElement(
29970 problem:LogicProblem, interpretation:PartialInterpretation,
29971 source: DefinedElement, target:DefinedElement)
29972{
29973 find interpretation(problem,interpretation);
29974 // The two endpoint of the link have to exist
29975 find mayExist(problem, interpretation, source);
29976 find mayExist(problem, interpretation, target);
29977 // Type consistency
29978 find mayInstanceOfETypedElement_class(problem,interpretation,source);
29979 BooleanElement(target);
29980 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
29981 // the upper bound of the multiplicity should be considered.
29982 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
29983 check(numberOfExistingReferences < 1);
29984} or {
29985 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
29986}
29987/**
29988 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
29989 */
29990private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
29991 problem:LogicProblem, interpretation:PartialInterpretation,
29992 source: DefinedElement, target:DefinedElement)
29993{
29994 find interpretation(problem,interpretation);
29995 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
29996 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
29997 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
29998 BinaryElementRelationLink.param1(link,source);
29999 BinaryElementRelationLink.param2(link,target);
30000}
30001/**
30002 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
30003 */
30004private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
30005 problem:LogicProblem, interpretation:PartialInterpretation,
30006 source: DefinedElement, target:DefinedElement)
30007{
30008 find interpretation(problem,interpretation);
30009 // The two endpoint of the link have to exist
30010 find mayExist(problem, interpretation, source);
30011 find mayExist(problem, interpretation, target);
30012 // Type consistency
30013 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
30014 StringElement(target);
30015 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
30016 // the upper bound of the multiplicity should be considered.
30017 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
30018 check(numberOfExistingReferences < 1);
30019} or {
30020 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
30021}
30022/**
30023 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
30024 */
30025private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
30026 problem:LogicProblem, interpretation:PartialInterpretation,
30027 source: DefinedElement, target:DefinedElement)
30028{
30029 find interpretation(problem,interpretation);
30030 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
30031 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
30032 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
30033 BinaryElementRelationLink.param1(link,source);
30034 BinaryElementRelationLink.param2(link,target);
30035}
30036/**
30037 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
30038 */
30039private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
30040 problem:LogicProblem, interpretation:PartialInterpretation,
30041 source: DefinedElement, target:DefinedElement)
30042{
30043 find interpretation(problem,interpretation);
30044 // The two endpoint of the link have to exist
30045 find mayExist(problem, interpretation, source);
30046 find mayExist(problem, interpretation, target);
30047 // Type consistency
30048 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
30049 StringElement(target);
30050 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
30051 // the upper bound of the multiplicity should be considered.
30052 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
30053 check(numberOfExistingReferences < 1);
30054} or {
30055 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
30056}
30057
30058//////////
30059// 1.3 Relation Definition Indexers
30060//////////
30061
30062//////////
30063// 1.4 Containment Indexer
30064//////////
30065private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
30066 find mustContains4(_,_,source,target);
30067}
30068
30069private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
30070 source: DefinedElement, target: DefinedElement)
30071 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
30072
30073 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
30074
30075 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
30076
30077 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
30078
30079 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
30080
30081 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
30082
30083 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
30084
30085 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
30086
30087 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
30088
30089 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
30090
30091 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
30092
30093 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
30094
30095 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
30096
30097 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
30098
30099 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
30100
30101 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
30102
30103 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
30104
30105 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
30106
30107private pattern mustTransitiveContains(source,target) {
30108 find mustContains2+(source,target);
30109}
30110
30111//////////
30112// 2. Invalidation Indexers
30113//////////
30114// 2.1 Invalidated by WF Queries
30115//////////
30116
30117//////////
30118// 3. Unfinishedness Indexers
30119//////////
30120// 3.1 Unfinishedness Measured by Multiplicity
30121//////////
30122pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
30123 find interpretation(problem,interpretation);
30124 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
30125 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
30126 find mustInstanceOfEAttribute_class(problem,interpretation,object);
30127 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
30128 check(numberOfExistingReferences < 1);
30129 missingMultiplicity == eval(1-numberOfExistingReferences);
30130}
30131pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
30132 find interpretation(problem,interpretation);
30133 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
30134 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
30135 find mustInstanceOfEReference_class(problem,interpretation,object);
30136 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
30137 check(numberOfExistingReferences < 1);
30138 missingMultiplicity == eval(1-numberOfExistingReferences);
30139}
30140pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
30141 find interpretation(problem,interpretation);
30142 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
30143 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
30144 find mustInstanceOfEGenericType_class(problem,interpretation,object);
30145 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
30146 check(numberOfExistingReferences < 1);
30147 missingMultiplicity == eval(1-numberOfExistingReferences);
30148}
30149
30150//////////
30151// 3.2 Unfinishedness Measured by WF Queries
30152//////////
30153
30154//////////
30155// 4. Refinement Indexers
30156//////////
30157// 4.1 Object constructors
30158//////////
30159private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
30160{
30161 find interpretation(problem,interpretation);
30162 find mustInstanceOfEModelElement_class(problem,interpretation,root);
30163 find mustExist(problem, interpretation, root);
30164}or{
30165 find interpretation(problem,interpretation);
30166 find mustInstanceOfEEnum_class(problem,interpretation,root);
30167 find mustExist(problem, interpretation, root);
30168}or{
30169 find interpretation(problem,interpretation);
30170 find mustInstanceOfEAttribute_class(problem,interpretation,root);
30171 find mustExist(problem, interpretation, root);
30172}or{
30173 find interpretation(problem,interpretation);
30174 find mustInstanceOfEObject_class(problem,interpretation,root);
30175 find mustExist(problem, interpretation, root);
30176}or{
30177 find interpretation(problem,interpretation);
30178 find mustInstanceOfEClass_class(problem,interpretation,root);
30179 find mustExist(problem, interpretation, root);
30180}or{
30181 find interpretation(problem,interpretation);
30182 find mustInstanceOfEClassifier_class(problem,interpretation,root);
30183 find mustExist(problem, interpretation, root);
30184}or{
30185 find interpretation(problem,interpretation);
30186 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
30187 find mustExist(problem, interpretation, root);
30188}or{
30189 find interpretation(problem,interpretation);
30190 find mustInstanceOfEPackage_class(problem,interpretation,root);
30191 find mustExist(problem, interpretation, root);
30192}or{
30193 find interpretation(problem,interpretation);
30194 find mustInstanceOfEOperation_class(problem,interpretation,root);
30195 find mustExist(problem, interpretation, root);
30196}or{
30197 find interpretation(problem,interpretation);
30198 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
30199 find mustExist(problem, interpretation, root);
30200}or{
30201 find interpretation(problem,interpretation);
30202 find mustInstanceOfEReference_class(problem,interpretation,root);
30203 find mustExist(problem, interpretation, root);
30204}or{
30205 find interpretation(problem,interpretation);
30206 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
30207 find mustExist(problem, interpretation, root);
30208}or{
30209 find interpretation(problem,interpretation);
30210 find mustInstanceOfETypedElement_class(problem,interpretation,root);
30211 find mustExist(problem, interpretation, root);
30212}or{
30213 find interpretation(problem,interpretation);
30214 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
30215 find mustExist(problem, interpretation, root);
30216}or{
30217 find interpretation(problem,interpretation);
30218 find mustInstanceOfEDataType_class(problem,interpretation,root);
30219 find mustExist(problem, interpretation, root);
30220}or{
30221 find interpretation(problem,interpretation);
30222 find mustInstanceOfEParameter_class(problem,interpretation,root);
30223 find mustExist(problem, interpretation, root);
30224}or{
30225 find interpretation(problem,interpretation);
30226 find mustInstanceOfENamedElement_class(problem,interpretation,root);
30227 find mustExist(problem, interpretation, root);
30228}or{
30229 find interpretation(problem,interpretation);
30230 find mustInstanceOfEGenericType_class(problem,interpretation,root);
30231 find mustExist(problem, interpretation, root);
30232}or{
30233 find interpretation(problem,interpretation);
30234 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
30235 find mustExist(problem, interpretation, root);
30236}or{
30237 find interpretation(problem,interpretation);
30238 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
30239 find mustExist(problem, interpretation, root);
30240}or{
30241 find interpretation(problem,interpretation);
30242 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
30243 find mustExist(problem, interpretation, root);
30244}or{
30245 find interpretation(problem,interpretation);
30246 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
30247 find mustExist(problem, interpretation, root);
30248}or{
30249 find interpretation(problem,interpretation);
30250 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
30251 find mustExist(problem, interpretation, root);
30252}or{
30253 find interpretation(problem,interpretation);
30254 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
30255 find mustExist(problem, interpretation, root);
30256}or{
30257 find interpretation(problem,interpretation);
30258 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
30259 find mustExist(problem, interpretation, root);
30260}
30261pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
30262 problem:LogicProblem, interpretation:PartialInterpretation,
30263 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30264 container:DefinedElement)
30265{
30266 find interpretation(problem,interpretation);
30267 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30268 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
30269 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30270 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
30271 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30272 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
30273 find mustInstanceOfEClass_class(problem,interpretation,container);
30274 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
30275 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
30276 find mustExist(problem, interpretation, container);
30277 neg find mustExist(problem, interpretation, newObject);
30278}
30279pattern createObject_EAttribute_class(
30280 problem:LogicProblem, interpretation:PartialInterpretation,
30281 typeInterpretation:PartialComplexTypeInterpretation)
30282{
30283 find interpretation(problem,interpretation);
30284 neg find hasElementInContainment(problem,interpretation);
30285 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30286 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
30287 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
30288 find mayExist(problem, interpretation, newObject);
30289 neg find mustExist(problem, interpretation, newObject);
30290}
30291pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
30292 problem:LogicProblem, interpretation:PartialInterpretation,
30293 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30294 container:DefinedElement)
30295{
30296 find interpretation(problem,interpretation);
30297 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30298 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
30299 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30300 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
30301 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30302 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
30303 find mustInstanceOfEModelElement_class(problem,interpretation,container);
30304 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
30305 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
30306 find mustExist(problem, interpretation, container);
30307 neg find mustExist(problem, interpretation, newObject);
30308}
30309pattern createObject_EAnnotation_class(
30310 problem:LogicProblem, interpretation:PartialInterpretation,
30311 typeInterpretation:PartialComplexTypeInterpretation)
30312{
30313 find interpretation(problem,interpretation);
30314 neg find hasElementInContainment(problem,interpretation);
30315 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30316 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
30317 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
30318 find mayExist(problem, interpretation, newObject);
30319 neg find mustExist(problem, interpretation, newObject);
30320}
30321pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
30322 problem:LogicProblem, interpretation:PartialInterpretation,
30323 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30324 container:DefinedElement)
30325{
30326 find interpretation(problem,interpretation);
30327 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30328 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
30329 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30330 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
30331 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30332 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
30333 find mustInstanceOfEClass_class(problem,interpretation,container);
30334 find mayInstanceOfEReference_class(problem,interpretation,newObject);
30335 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
30336 find mustExist(problem, interpretation, container);
30337 neg find mustExist(problem, interpretation, newObject);
30338}
30339pattern createObject_EReference_class(
30340 problem:LogicProblem, interpretation:PartialInterpretation,
30341 typeInterpretation:PartialComplexTypeInterpretation)
30342{
30343 find interpretation(problem,interpretation);
30344 neg find hasElementInContainment(problem,interpretation);
30345 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30346 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
30347 find mayInstanceOfEReference_class(problem,interpretation,newObject);
30348 find mayExist(problem, interpretation, newObject);
30349 neg find mustExist(problem, interpretation, newObject);
30350}
30351pattern createObject_EObject_class_by_contents_reference_EAnnotation(
30352 problem:LogicProblem, interpretation:PartialInterpretation,
30353 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30354 container:DefinedElement)
30355{
30356 find interpretation(problem,interpretation);
30357 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30358 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
30359 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30360 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
30361 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
30362 find mayInstanceOfEObject_class(problem,interpretation,newObject);
30363 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
30364 find mustExist(problem, interpretation, container);
30365 neg find mustExist(problem, interpretation, newObject);
30366}
30367pattern createObject_EObject_class(
30368 problem:LogicProblem, interpretation:PartialInterpretation,
30369 typeInterpretation:PartialComplexTypeInterpretation)
30370{
30371 find interpretation(problem,interpretation);
30372 neg find hasElementInContainment(problem,interpretation);
30373 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30374 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
30375 find mayInstanceOfEObject_class(problem,interpretation,newObject);
30376 find mayExist(problem, interpretation, newObject);
30377 neg find mustExist(problem, interpretation, newObject);
30378}
30379pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
30380 problem:LogicProblem, interpretation:PartialInterpretation,
30381 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30382 container:DefinedElement)
30383{
30384 find interpretation(problem,interpretation);
30385 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30386 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
30387 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30388 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
30389 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30390 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
30391 find mustInstanceOfEOperation_class(problem,interpretation,container);
30392 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
30393 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
30394 find mustExist(problem, interpretation, container);
30395 neg find mustExist(problem, interpretation, newObject);
30396}
30397pattern createObject_EParameter_class(
30398 problem:LogicProblem, interpretation:PartialInterpretation,
30399 typeInterpretation:PartialComplexTypeInterpretation)
30400{
30401 find interpretation(problem,interpretation);
30402 neg find hasElementInContainment(problem,interpretation);
30403 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30404 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
30405 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
30406 find mayExist(problem, interpretation, newObject);
30407 neg find mustExist(problem, interpretation, newObject);
30408}
30409pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
30410 problem:LogicProblem, interpretation:PartialInterpretation,
30411 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30412 container:DefinedElement)
30413{
30414 find interpretation(problem,interpretation);
30415 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30416 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
30417 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30418 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
30419 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30420 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
30421 find mustInstanceOfEPackage_class(problem,interpretation,container);
30422 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
30423 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
30424 find mustExist(problem, interpretation, container);
30425 neg find mustExist(problem, interpretation, newObject);
30426}
30427pattern createObject_EPackage_class_UndefinedPart(
30428 problem:LogicProblem, interpretation:PartialInterpretation,
30429 typeInterpretation:PartialComplexTypeInterpretation)
30430{
30431 find interpretation(problem,interpretation);
30432 neg find hasElementInContainment(problem,interpretation);
30433 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30434 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
30435 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
30436 find mayExist(problem, interpretation, newObject);
30437 neg find mustExist(problem, interpretation, newObject);
30438}
30439pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
30440 problem:LogicProblem, interpretation:PartialInterpretation,
30441 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30442 container:DefinedElement)
30443{
30444 find interpretation(problem,interpretation);
30445 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30446 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
30447 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30448 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
30449 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
30450 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
30451 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
30452 find mustExist(problem, interpretation, container);
30453 neg find mustExist(problem, interpretation, newObject);
30454}
30455pattern createObject_EStringToStringMapEntry_class(
30456 problem:LogicProblem, interpretation:PartialInterpretation,
30457 typeInterpretation:PartialComplexTypeInterpretation)
30458{
30459 find interpretation(problem,interpretation);
30460 neg find hasElementInContainment(problem,interpretation);
30461 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30462 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
30463 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
30464 find mayExist(problem, interpretation, newObject);
30465 neg find mustExist(problem, interpretation, newObject);
30466}
30467pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
30468 problem:LogicProblem, interpretation:PartialInterpretation,
30469 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30470 container:DefinedElement)
30471{
30472 find interpretation(problem,interpretation);
30473 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30474 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
30475 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30476 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
30477 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30478 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
30479 find mustInstanceOfEPackage_class(problem,interpretation,container);
30480 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
30481 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
30482 find mustExist(problem, interpretation, container);
30483 neg find mustExist(problem, interpretation, newObject);
30484}
30485pattern createObject_EEnum_class(
30486 problem:LogicProblem, interpretation:PartialInterpretation,
30487 typeInterpretation:PartialComplexTypeInterpretation)
30488{
30489 find interpretation(problem,interpretation);
30490 neg find hasElementInContainment(problem,interpretation);
30491 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30492 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
30493 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
30494 find mayExist(problem, interpretation, newObject);
30495 neg find mustExist(problem, interpretation, newObject);
30496}
30497pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
30498 problem:LogicProblem, interpretation:PartialInterpretation,
30499 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30500 container:DefinedElement)
30501{
30502 find interpretation(problem,interpretation);
30503 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30504 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
30505 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30506 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
30507 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30508 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
30509 find mustInstanceOfEEnum_class(problem,interpretation,container);
30510 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
30511 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
30512 find mustExist(problem, interpretation, container);
30513 neg find mustExist(problem, interpretation, newObject);
30514}
30515pattern createObject_EEnumLiteral_class(
30516 problem:LogicProblem, interpretation:PartialInterpretation,
30517 typeInterpretation:PartialComplexTypeInterpretation)
30518{
30519 find interpretation(problem,interpretation);
30520 neg find hasElementInContainment(problem,interpretation);
30521 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30522 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
30523 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
30524 find mayExist(problem, interpretation, newObject);
30525 neg find mustExist(problem, interpretation, newObject);
30526}
30527pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
30528 problem:LogicProblem, interpretation:PartialInterpretation,
30529 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30530 container:DefinedElement)
30531{
30532 find interpretation(problem,interpretation);
30533 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30534 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
30535 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30536 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
30537 find mustInstanceOfEClass_class(problem,interpretation,container);
30538 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
30539 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
30540 find mustExist(problem, interpretation, container);
30541 neg find mustExist(problem, interpretation, newObject);
30542}
30543pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
30544 problem:LogicProblem, interpretation:PartialInterpretation,
30545 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30546 container:DefinedElement)
30547{
30548 find interpretation(problem,interpretation);
30549 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30550 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
30551 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30552 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
30553 find mustInstanceOfEOperation_class(problem,interpretation,container);
30554 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
30555 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
30556 find mustExist(problem, interpretation, container);
30557 neg find mustExist(problem, interpretation, newObject);
30558}
30559pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
30560 problem:LogicProblem, interpretation:PartialInterpretation,
30561 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30562 container:DefinedElement)
30563{
30564 find interpretation(problem,interpretation);
30565 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30566 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
30567 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30568 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
30569 find mustInstanceOfETypedElement_class(problem,interpretation,container);
30570 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
30571 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
30572 find mustExist(problem, interpretation, container);
30573 neg find mustExist(problem, interpretation, newObject);
30574}
30575pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
30576 problem:LogicProblem, interpretation:PartialInterpretation,
30577 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30578 container:DefinedElement)
30579{
30580 find interpretation(problem,interpretation);
30581 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30582 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
30583 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30584 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
30585 find mustInstanceOfEGenericType_class(problem,interpretation,container);
30586 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
30587 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
30588 find mustExist(problem, interpretation, container);
30589 neg find mustExist(problem, interpretation, newObject);
30590}
30591pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
30592 problem:LogicProblem, interpretation:PartialInterpretation,
30593 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30594 container:DefinedElement)
30595{
30596 find interpretation(problem,interpretation);
30597 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30598 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
30599 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30600 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
30601 find mustInstanceOfEGenericType_class(problem,interpretation,container);
30602 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
30603 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
30604 find mustExist(problem, interpretation, container);
30605 neg find mustExist(problem, interpretation, newObject);
30606}
30607pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
30608 problem:LogicProblem, interpretation:PartialInterpretation,
30609 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30610 container:DefinedElement)
30611{
30612 find interpretation(problem,interpretation);
30613 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30614 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
30615 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30616 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
30617 find mustInstanceOfEGenericType_class(problem,interpretation,container);
30618 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
30619 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
30620 find mustExist(problem, interpretation, container);
30621 neg find mustExist(problem, interpretation, newObject);
30622}
30623pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
30624 problem:LogicProblem, interpretation:PartialInterpretation,
30625 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30626 container:DefinedElement)
30627{
30628 find interpretation(problem,interpretation);
30629 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30630 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
30631 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30632 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
30633 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
30634 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
30635 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
30636 find mustExist(problem, interpretation, container);
30637 neg find mustExist(problem, interpretation, newObject);
30638}
30639pattern createObject_EGenericType_class(
30640 problem:LogicProblem, interpretation:PartialInterpretation,
30641 typeInterpretation:PartialComplexTypeInterpretation)
30642{
30643 find interpretation(problem,interpretation);
30644 neg find hasElementInContainment(problem,interpretation);
30645 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30646 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
30647 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
30648 find mayExist(problem, interpretation, newObject);
30649 neg find mustExist(problem, interpretation, newObject);
30650}
30651pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
30652 problem:LogicProblem, interpretation:PartialInterpretation,
30653 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30654 container:DefinedElement)
30655{
30656 find interpretation(problem,interpretation);
30657 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30658 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
30659 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30660 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
30661 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30662 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
30663 find mustInstanceOfEClass_class(problem,interpretation,container);
30664 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
30665 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
30666 find mustExist(problem, interpretation, container);
30667 neg find mustExist(problem, interpretation, newObject);
30668}
30669pattern createObject_EOperation_class(
30670 problem:LogicProblem, interpretation:PartialInterpretation,
30671 typeInterpretation:PartialComplexTypeInterpretation)
30672{
30673 find interpretation(problem,interpretation);
30674 neg find hasElementInContainment(problem,interpretation);
30675 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30676 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
30677 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
30678 find mayExist(problem, interpretation, newObject);
30679 neg find mustExist(problem, interpretation, newObject);
30680}
30681pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
30682 problem:LogicProblem, interpretation:PartialInterpretation,
30683 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30684 container:DefinedElement)
30685{
30686 find interpretation(problem,interpretation);
30687 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30688 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
30689 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30690 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
30691 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30692 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
30693 find mustInstanceOfEPackage_class(problem,interpretation,container);
30694 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
30695 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
30696 find mustExist(problem, interpretation, container);
30697 neg find mustExist(problem, interpretation, newObject);
30698}
30699pattern createObject_EDataType_class(
30700 problem:LogicProblem, interpretation:PartialInterpretation,
30701 typeInterpretation:PartialComplexTypeInterpretation)
30702{
30703 find interpretation(problem,interpretation);
30704 neg find hasElementInContainment(problem,interpretation);
30705 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30706 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
30707 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
30708 find mayExist(problem, interpretation, newObject);
30709 neg find mustExist(problem, interpretation, newObject);
30710}
30711pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
30712 problem:LogicProblem, interpretation:PartialInterpretation,
30713 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30714 container:DefinedElement)
30715{
30716 find interpretation(problem,interpretation);
30717 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30718 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
30719 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30720 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
30721 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
30722 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
30723 find mustInstanceOfEPackage_class(problem,interpretation,container);
30724 find mayInstanceOfEClass_class(problem,interpretation,newObject);
30725 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
30726 find mustExist(problem, interpretation, container);
30727 neg find mustExist(problem, interpretation, newObject);
30728}
30729pattern createObject_EClass_class(
30730 problem:LogicProblem, interpretation:PartialInterpretation,
30731 typeInterpretation:PartialComplexTypeInterpretation)
30732{
30733 find interpretation(problem,interpretation);
30734 neg find hasElementInContainment(problem,interpretation);
30735 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30736 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
30737 find mayInstanceOfEClass_class(problem,interpretation,newObject);
30738 find mayExist(problem, interpretation, newObject);
30739 neg find mustExist(problem, interpretation, newObject);
30740}
30741pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
30742 problem:LogicProblem, interpretation:PartialInterpretation,
30743 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30744 container:DefinedElement)
30745{
30746 find interpretation(problem,interpretation);
30747 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30748 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
30749 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30750 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
30751 find mustInstanceOfEClassifier_class(problem,interpretation,container);
30752 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
30753 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
30754 find mustExist(problem, interpretation, container);
30755 neg find mustExist(problem, interpretation, newObject);
30756}
30757pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
30758 problem:LogicProblem, interpretation:PartialInterpretation,
30759 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
30760 container:DefinedElement)
30761{
30762 find interpretation(problem,interpretation);
30763 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30764 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
30765 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
30766 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
30767 find mustInstanceOfEOperation_class(problem,interpretation,container);
30768 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
30769 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
30770 find mustExist(problem, interpretation, container);
30771 neg find mustExist(problem, interpretation, newObject);
30772}
30773pattern createObject_ETypeParameter_class(
30774 problem:LogicProblem, interpretation:PartialInterpretation,
30775 typeInterpretation:PartialComplexTypeInterpretation)
30776{
30777 find interpretation(problem,interpretation);
30778 neg find hasElementInContainment(problem,interpretation);
30779 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
30780 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
30781 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
30782 find mayExist(problem, interpretation, newObject);
30783 neg find mustExist(problem, interpretation, newObject);
30784}
30785
30786//////////
30787// 4.2 Type refinement
30788//////////
30789pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30790 find interpretation(problem,interpretation);
30791 PartialInterpretation.newElements(interpretation,element);
30792 find mayInstanceOfEAttribute_class(problem,interpretation,element);
30793 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
30794 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30795 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30796 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30797 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30798 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
30799 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
30800 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30801 neg find mustInstanceOfEReference_class(problem,interpretation,element);
30802 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30803 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
30804 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
30805}
30806pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30807 find interpretation(problem,interpretation);
30808 PartialInterpretation.newElements(interpretation,element);
30809 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
30810 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30811 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30812 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30813 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30814 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
30815}
30816pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30817 find interpretation(problem,interpretation);
30818 PartialInterpretation.newElements(interpretation,element);
30819 find mayInstanceOfEReference_class(problem,interpretation,element);
30820 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
30821 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30822 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30823 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30824 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30825 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
30826 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
30827 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30828 neg find mustInstanceOfEReference_class(problem,interpretation,element);
30829 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30830 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
30831 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
30832}
30833pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30834 find interpretation(problem,interpretation);
30835 PartialInterpretation.newElements(interpretation,element);
30836 find mayInstanceOfEObject_class(problem,interpretation,element);
30837 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
30838 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30839 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30840 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30841}
30842pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30843 find interpretation(problem,interpretation);
30844 PartialInterpretation.newElements(interpretation,element);
30845 find mayInstanceOfEParameter_class(problem,interpretation,element);
30846 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30847 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30848 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30849 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
30850 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30851 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
30852 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
30853 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30854 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30855 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
30856 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
30857}
30858pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30859 find interpretation(problem,interpretation);
30860 PartialInterpretation.newElements(interpretation,element);
30861 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
30862 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
30863 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30864 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30865 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30866 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30867 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30868 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30869 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
30870 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
30871}
30872pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30873 find interpretation(problem,interpretation);
30874 PartialInterpretation.newElements(interpretation,element);
30875 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30876 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
30877 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30878 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30879 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30880}
30881pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30882 find interpretation(problem,interpretation);
30883 PartialInterpretation.newElements(interpretation,element);
30884 find mayInstanceOfEEnum_class(problem,interpretation,element);
30885 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30886 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30887 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30888 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
30889 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30890 neg find mustInstanceOfEClass_class(problem,interpretation,element);
30891 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
30892 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30893 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30894 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
30895}
30896pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30897 find interpretation(problem,interpretation);
30898 PartialInterpretation.newElements(interpretation,element);
30899 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
30900 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30901 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30902 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30903 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30904 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
30905 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30906 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30907 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
30908 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
30909}
30910pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30911 find interpretation(problem,interpretation);
30912 PartialInterpretation.newElements(interpretation,element);
30913 find mayInstanceOfEGenericType_class(problem,interpretation,element);
30914 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
30915 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30916 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30917 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30918}
30919pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30920 find interpretation(problem,interpretation);
30921 PartialInterpretation.newElements(interpretation,element);
30922 find mayInstanceOfEOperation_class(problem,interpretation,element);
30923 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30924 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30925 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30926 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30927 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
30928 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
30929 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
30930 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30931 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30932 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
30933 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
30934}
30935pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30936 find interpretation(problem,interpretation);
30937 PartialInterpretation.newElements(interpretation,element);
30938 find mayInstanceOfEDataType_class(problem,interpretation,element);
30939 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30940 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
30941 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30942 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30943 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30944 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
30945 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
30946 neg find mustInstanceOfEClass_class(problem,interpretation,element);
30947 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30948 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30949 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
30950}
30951pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30952 find interpretation(problem,interpretation);
30953 PartialInterpretation.newElements(interpretation,element);
30954 find mayInstanceOfEClass_class(problem,interpretation,element);
30955 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30956 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30957 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30958 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30959 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
30960 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
30961 neg find mustInstanceOfEClass_class(problem,interpretation,element);
30962 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30963 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30964 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
30965}
30966pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
30967 find interpretation(problem,interpretation);
30968 PartialInterpretation.newElements(interpretation,element);
30969 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
30970 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
30971 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
30972 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
30973 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
30974 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
30975 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
30976 neg find mustInstanceOfEObject_class(problem,interpretation,element);
30977 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
30978 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
30979}
30980
30981//////////
30982// 4.3 Relation refinement
30983//////////
30984pattern refineRelation_eAttributeType_reference_EAttribute(
30985 problem:LogicProblem, interpretation:PartialInterpretation,
30986 relationIterpretation:PartialRelationInterpretation,
30987 from: DefinedElement, to: DefinedElement)
30988{
30989 find interpretation(problem,interpretation);
30990 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
30991 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
30992 find mustExist(problem, interpretation, from);
30993 find mustExist(problem, interpretation, to);
30994 find mustInstanceOfEAttribute_class(problem,interpretation,from);
30995 find mustInstanceOfEDataType_class(problem,interpretation,to);
30996 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
30997 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
30998}
30999pattern refineRelation_references_reference_EAnnotation(
31000 problem:LogicProblem, interpretation:PartialInterpretation,
31001 relationIterpretation:PartialRelationInterpretation,
31002 from: DefinedElement, to: DefinedElement)
31003{
31004 find interpretation(problem,interpretation);
31005 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31006 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
31007 find mustExist(problem, interpretation, from);
31008 find mustExist(problem, interpretation, to);
31009 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
31010 find mustInstanceOfEObject_class(problem,interpretation,to);
31011 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
31012 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
31013}
31014pattern refineRelation_eSuperTypes_reference_EClass(
31015 problem:LogicProblem, interpretation:PartialInterpretation,
31016 relationIterpretation:PartialRelationInterpretation,
31017 from: DefinedElement, to: DefinedElement)
31018{
31019 find interpretation(problem,interpretation);
31020 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31021 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
31022 find mustExist(problem, interpretation, from);
31023 find mustExist(problem, interpretation, to);
31024 find mustInstanceOfEClass_class(problem,interpretation,from);
31025 find mustInstanceOfEClass_class(problem,interpretation,to);
31026 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
31027 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
31028}
31029pattern refineRelation_eAllAttributes_reference_EClass(
31030 problem:LogicProblem, interpretation:PartialInterpretation,
31031 relationIterpretation:PartialRelationInterpretation,
31032 from: DefinedElement, to: DefinedElement)
31033{
31034 find interpretation(problem,interpretation);
31035 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31036 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
31037 find mustExist(problem, interpretation, from);
31038 find mustExist(problem, interpretation, to);
31039 find mustInstanceOfEClass_class(problem,interpretation,from);
31040 find mustInstanceOfEAttribute_class(problem,interpretation,to);
31041 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
31042 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
31043}
31044pattern refineRelation_eAllReferences_reference_EClass(
31045 problem:LogicProblem, interpretation:PartialInterpretation,
31046 relationIterpretation:PartialRelationInterpretation,
31047 from: DefinedElement, to: DefinedElement)
31048{
31049 find interpretation(problem,interpretation);
31050 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31051 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
31052 find mustExist(problem, interpretation, from);
31053 find mustExist(problem, interpretation, to);
31054 find mustInstanceOfEClass_class(problem,interpretation,from);
31055 find mustInstanceOfEReference_class(problem,interpretation,to);
31056 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
31057 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
31058}
31059pattern refineRelation_eReferences_reference_EClass(
31060 problem:LogicProblem, interpretation:PartialInterpretation,
31061 relationIterpretation:PartialRelationInterpretation,
31062 from: DefinedElement, to: DefinedElement)
31063{
31064 find interpretation(problem,interpretation);
31065 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31066 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
31067 find mustExist(problem, interpretation, from);
31068 find mustExist(problem, interpretation, to);
31069 find mustInstanceOfEClass_class(problem,interpretation,from);
31070 find mustInstanceOfEReference_class(problem,interpretation,to);
31071 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
31072 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
31073}
31074pattern refineRelation_eAttributes_reference_EClass(
31075 problem:LogicProblem, interpretation:PartialInterpretation,
31076 relationIterpretation:PartialRelationInterpretation,
31077 from: DefinedElement, to: DefinedElement)
31078{
31079 find interpretation(problem,interpretation);
31080 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31081 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
31082 find mustExist(problem, interpretation, from);
31083 find mustExist(problem, interpretation, to);
31084 find mustInstanceOfEClass_class(problem,interpretation,from);
31085 find mustInstanceOfEAttribute_class(problem,interpretation,to);
31086 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
31087 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
31088}
31089pattern refineRelation_eAllContainments_reference_EClass(
31090 problem:LogicProblem, interpretation:PartialInterpretation,
31091 relationIterpretation:PartialRelationInterpretation,
31092 from: DefinedElement, to: DefinedElement)
31093{
31094 find interpretation(problem,interpretation);
31095 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31096 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
31097 find mustExist(problem, interpretation, from);
31098 find mustExist(problem, interpretation, to);
31099 find mustInstanceOfEClass_class(problem,interpretation,from);
31100 find mustInstanceOfEReference_class(problem,interpretation,to);
31101 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
31102 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
31103}
31104pattern refineRelation_eAllOperations_reference_EClass(
31105 problem:LogicProblem, interpretation:PartialInterpretation,
31106 relationIterpretation:PartialRelationInterpretation,
31107 from: DefinedElement, to: DefinedElement)
31108{
31109 find interpretation(problem,interpretation);
31110 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31111 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
31112 find mustExist(problem, interpretation, from);
31113 find mustExist(problem, interpretation, to);
31114 find mustInstanceOfEClass_class(problem,interpretation,from);
31115 find mustInstanceOfEOperation_class(problem,interpretation,to);
31116 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
31117 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
31118}
31119pattern refineRelation_eAllStructuralFeatures_reference_EClass(
31120 problem:LogicProblem, interpretation:PartialInterpretation,
31121 relationIterpretation:PartialRelationInterpretation,
31122 from: DefinedElement, to: DefinedElement)
31123{
31124 find interpretation(problem,interpretation);
31125 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31126 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
31127 find mustExist(problem, interpretation, from);
31128 find mustExist(problem, interpretation, to);
31129 find mustInstanceOfEClass_class(problem,interpretation,from);
31130 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
31131 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
31132 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
31133}
31134pattern refineRelation_eAllSuperTypes_reference_EClass(
31135 problem:LogicProblem, interpretation:PartialInterpretation,
31136 relationIterpretation:PartialRelationInterpretation,
31137 from: DefinedElement, to: DefinedElement)
31138{
31139 find interpretation(problem,interpretation);
31140 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31141 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
31142 find mustExist(problem, interpretation, from);
31143 find mustExist(problem, interpretation, to);
31144 find mustInstanceOfEClass_class(problem,interpretation,from);
31145 find mustInstanceOfEClass_class(problem,interpretation,to);
31146 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
31147 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
31148}
31149pattern refineRelation_eIDAttribute_reference_EClass(
31150 problem:LogicProblem, interpretation:PartialInterpretation,
31151 relationIterpretation:PartialRelationInterpretation,
31152 from: DefinedElement, to: DefinedElement)
31153{
31154 find interpretation(problem,interpretation);
31155 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31156 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
31157 find mustExist(problem, interpretation, from);
31158 find mustExist(problem, interpretation, to);
31159 find mustInstanceOfEClass_class(problem,interpretation,from);
31160 find mustInstanceOfEAttribute_class(problem,interpretation,to);
31161 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
31162 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
31163}
31164pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
31165 problem:LogicProblem, interpretation:PartialInterpretation,
31166 relationIterpretation:PartialRelationInterpretation,
31167 from: DefinedElement, to: DefinedElement)
31168{
31169 find interpretation(problem,interpretation);
31170 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31171 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
31172 find mustExist(problem, interpretation, from);
31173 find mustExist(problem, interpretation, to);
31174 find mustInstanceOfEClass_class(problem,interpretation,from);
31175 find mustInstanceOfEGenericType_class(problem,interpretation,to);
31176 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
31177 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
31178}
31179pattern refineRelation_eExceptions_reference_EOperation(
31180 problem:LogicProblem, interpretation:PartialInterpretation,
31181 relationIterpretation:PartialRelationInterpretation,
31182 from: DefinedElement, to: DefinedElement)
31183{
31184 find interpretation(problem,interpretation);
31185 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31186 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
31187 find mustExist(problem, interpretation, from);
31188 find mustExist(problem, interpretation, to);
31189 find mustInstanceOfEOperation_class(problem,interpretation,from);
31190 find mustInstanceOfEClassifier_class(problem,interpretation,to);
31191 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
31192 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
31193}
31194pattern refineRelation_eOpposite_reference_EReference(
31195 problem:LogicProblem, interpretation:PartialInterpretation,
31196 relationIterpretation:PartialRelationInterpretation,
31197 from: DefinedElement, to: DefinedElement)
31198{
31199 find interpretation(problem,interpretation);
31200 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31201 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
31202 find mustExist(problem, interpretation, from);
31203 find mustExist(problem, interpretation, to);
31204 find mustInstanceOfEReference_class(problem,interpretation,from);
31205 find mustInstanceOfEReference_class(problem,interpretation,to);
31206 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
31207 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
31208}
31209pattern refineRelation_eReferenceType_reference_EReference(
31210 problem:LogicProblem, interpretation:PartialInterpretation,
31211 relationIterpretation:PartialRelationInterpretation,
31212 from: DefinedElement, to: DefinedElement)
31213{
31214 find interpretation(problem,interpretation);
31215 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31216 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
31217 find mustExist(problem, interpretation, from);
31218 find mustExist(problem, interpretation, to);
31219 find mustInstanceOfEReference_class(problem,interpretation,from);
31220 find mustInstanceOfEClass_class(problem,interpretation,to);
31221 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
31222 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
31223}
31224pattern refineRelation_eKeys_reference_EReference(
31225 problem:LogicProblem, interpretation:PartialInterpretation,
31226 relationIterpretation:PartialRelationInterpretation,
31227 from: DefinedElement, to: DefinedElement)
31228{
31229 find interpretation(problem,interpretation);
31230 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31231 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
31232 find mustExist(problem, interpretation, from);
31233 find mustExist(problem, interpretation, to);
31234 find mustInstanceOfEReference_class(problem,interpretation,from);
31235 find mustInstanceOfEAttribute_class(problem,interpretation,to);
31236 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
31237 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
31238}
31239pattern refineRelation_eType_reference_ETypedElement(
31240 problem:LogicProblem, interpretation:PartialInterpretation,
31241 relationIterpretation:PartialRelationInterpretation,
31242 from: DefinedElement, to: DefinedElement)
31243{
31244 find interpretation(problem,interpretation);
31245 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31246 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
31247 find mustExist(problem, interpretation, from);
31248 find mustExist(problem, interpretation, to);
31249 find mustInstanceOfETypedElement_class(problem,interpretation,from);
31250 find mustInstanceOfEClassifier_class(problem,interpretation,to);
31251 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
31252 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
31253}
31254pattern refineRelation_eRawType_reference_EGenericType(
31255 problem:LogicProblem, interpretation:PartialInterpretation,
31256 relationIterpretation:PartialRelationInterpretation,
31257 from: DefinedElement, to: DefinedElement)
31258{
31259 find interpretation(problem,interpretation);
31260 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31261 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
31262 find mustExist(problem, interpretation, from);
31263 find mustExist(problem, interpretation, to);
31264 find mustInstanceOfEGenericType_class(problem,interpretation,from);
31265 find mustInstanceOfEClassifier_class(problem,interpretation,to);
31266 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
31267 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
31268}
31269pattern refineRelation_eTypeParameter_reference_EGenericType(
31270 problem:LogicProblem, interpretation:PartialInterpretation,
31271 relationIterpretation:PartialRelationInterpretation,
31272 from: DefinedElement, to: DefinedElement)
31273{
31274 find interpretation(problem,interpretation);
31275 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31276 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
31277 find mustExist(problem, interpretation, from);
31278 find mustExist(problem, interpretation, to);
31279 find mustInstanceOfEGenericType_class(problem,interpretation,from);
31280 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
31281 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
31282 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
31283}
31284pattern refineRelation_eClassifier_reference_EGenericType(
31285 problem:LogicProblem, interpretation:PartialInterpretation,
31286 relationIterpretation:PartialRelationInterpretation,
31287 from: DefinedElement, to: DefinedElement)
31288{
31289 find interpretation(problem,interpretation);
31290 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31291 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
31292 find mustExist(problem, interpretation, from);
31293 find mustExist(problem, interpretation, to);
31294 find mustInstanceOfEGenericType_class(problem,interpretation,from);
31295 find mustInstanceOfEClassifier_class(problem,interpretation,to);
31296 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
31297 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
31298}
31299pattern refineRelation_iD_attribute_EAttribute(
31300 problem:LogicProblem, interpretation:PartialInterpretation,
31301 relationIterpretation:PartialRelationInterpretation,
31302 from: DefinedElement, to: DefinedElement)
31303{
31304 find interpretation(problem,interpretation);
31305 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31306 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
31307 find mustExist(problem, interpretation, from);
31308 find mustExist(problem, interpretation, to);
31309 find mustInstanceOfEAttribute_class(problem,interpretation,from);
31310 BooleanElement(to);
31311 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
31312 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
31313}
31314pattern refineRelation_source_attribute_EAnnotation(
31315 problem:LogicProblem, interpretation:PartialInterpretation,
31316 relationIterpretation:PartialRelationInterpretation,
31317 from: DefinedElement, to: DefinedElement)
31318{
31319 find interpretation(problem,interpretation);
31320 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31321 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
31322 find mustExist(problem, interpretation, from);
31323 find mustExist(problem, interpretation, to);
31324 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
31325 StringElement(to);
31326 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
31327 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
31328}
31329pattern refineRelation_abstract_attribute_EClass(
31330 problem:LogicProblem, interpretation:PartialInterpretation,
31331 relationIterpretation:PartialRelationInterpretation,
31332 from: DefinedElement, to: DefinedElement)
31333{
31334 find interpretation(problem,interpretation);
31335 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31336 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
31337 find mustExist(problem, interpretation, from);
31338 find mustExist(problem, interpretation, to);
31339 find mustInstanceOfEClass_class(problem,interpretation,from);
31340 BooleanElement(to);
31341 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
31342 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
31343}
31344pattern refineRelation_interface_attribute_EClass(
31345 problem:LogicProblem, interpretation:PartialInterpretation,
31346 relationIterpretation:PartialRelationInterpretation,
31347 from: DefinedElement, to: DefinedElement)
31348{
31349 find interpretation(problem,interpretation);
31350 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31351 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
31352 find mustExist(problem, interpretation, from);
31353 find mustExist(problem, interpretation, to);
31354 find mustInstanceOfEClass_class(problem,interpretation,from);
31355 BooleanElement(to);
31356 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
31357 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
31358}
31359pattern refineRelation_instanceClassName_attribute_EClassifier(
31360 problem:LogicProblem, interpretation:PartialInterpretation,
31361 relationIterpretation:PartialRelationInterpretation,
31362 from: DefinedElement, to: DefinedElement)
31363{
31364 find interpretation(problem,interpretation);
31365 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31366 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
31367 find mustExist(problem, interpretation, from);
31368 find mustExist(problem, interpretation, to);
31369 find mustInstanceOfEClassifier_class(problem,interpretation,from);
31370 StringElement(to);
31371 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
31372 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
31373}
31374pattern refineRelation_instanceTypeName_attribute_EClassifier(
31375 problem:LogicProblem, interpretation:PartialInterpretation,
31376 relationIterpretation:PartialRelationInterpretation,
31377 from: DefinedElement, to: DefinedElement)
31378{
31379 find interpretation(problem,interpretation);
31380 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31381 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
31382 find mustExist(problem, interpretation, from);
31383 find mustExist(problem, interpretation, to);
31384 find mustInstanceOfEClassifier_class(problem,interpretation,from);
31385 StringElement(to);
31386 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
31387 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
31388}
31389pattern refineRelation_serializable_attribute_EDataType(
31390 problem:LogicProblem, interpretation:PartialInterpretation,
31391 relationIterpretation:PartialRelationInterpretation,
31392 from: DefinedElement, to: DefinedElement)
31393{
31394 find interpretation(problem,interpretation);
31395 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31396 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
31397 find mustExist(problem, interpretation, from);
31398 find mustExist(problem, interpretation, to);
31399 find mustInstanceOfEDataType_class(problem,interpretation,from);
31400 BooleanElement(to);
31401 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
31402 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
31403}
31404pattern refineRelation_value_attribute_EEnumLiteral(
31405 problem:LogicProblem, interpretation:PartialInterpretation,
31406 relationIterpretation:PartialRelationInterpretation,
31407 from: DefinedElement, to: DefinedElement)
31408{
31409 find interpretation(problem,interpretation);
31410 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31411 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
31412 find mustExist(problem, interpretation, from);
31413 find mustExist(problem, interpretation, to);
31414 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
31415 IntegerElement(to);
31416 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
31417 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
31418}
31419pattern refineRelation_literal_attribute_EEnumLiteral(
31420 problem:LogicProblem, interpretation:PartialInterpretation,
31421 relationIterpretation:PartialRelationInterpretation,
31422 from: DefinedElement, to: DefinedElement)
31423{
31424 find interpretation(problem,interpretation);
31425 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31426 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
31427 find mustExist(problem, interpretation, from);
31428 find mustExist(problem, interpretation, to);
31429 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
31430 StringElement(to);
31431 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
31432 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
31433}
31434pattern refineRelation_name_attribute_ENamedElement(
31435 problem:LogicProblem, interpretation:PartialInterpretation,
31436 relationIterpretation:PartialRelationInterpretation,
31437 from: DefinedElement, to: DefinedElement)
31438{
31439 find interpretation(problem,interpretation);
31440 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31441 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
31442 find mustExist(problem, interpretation, from);
31443 find mustExist(problem, interpretation, to);
31444 find mustInstanceOfENamedElement_class(problem,interpretation,from);
31445 StringElement(to);
31446 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
31447 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
31448}
31449pattern refineRelation_nsURI_attribute_EPackage(
31450 problem:LogicProblem, interpretation:PartialInterpretation,
31451 relationIterpretation:PartialRelationInterpretation,
31452 from: DefinedElement, to: DefinedElement)
31453{
31454 find interpretation(problem,interpretation);
31455 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31456 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
31457 find mustExist(problem, interpretation, from);
31458 find mustExist(problem, interpretation, to);
31459 find mustInstanceOfEPackage_class(problem,interpretation,from);
31460 StringElement(to);
31461 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
31462 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
31463}
31464pattern refineRelation_nsPrefix_attribute_EPackage(
31465 problem:LogicProblem, interpretation:PartialInterpretation,
31466 relationIterpretation:PartialRelationInterpretation,
31467 from: DefinedElement, to: DefinedElement)
31468{
31469 find interpretation(problem,interpretation);
31470 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31471 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
31472 find mustExist(problem, interpretation, from);
31473 find mustExist(problem, interpretation, to);
31474 find mustInstanceOfEPackage_class(problem,interpretation,from);
31475 StringElement(to);
31476 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
31477 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
31478}
31479pattern refineRelation_containment_attribute_EReference(
31480 problem:LogicProblem, interpretation:PartialInterpretation,
31481 relationIterpretation:PartialRelationInterpretation,
31482 from: DefinedElement, to: DefinedElement)
31483{
31484 find interpretation(problem,interpretation);
31485 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31486 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
31487 find mustExist(problem, interpretation, from);
31488 find mustExist(problem, interpretation, to);
31489 find mustInstanceOfEReference_class(problem,interpretation,from);
31490 BooleanElement(to);
31491 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
31492 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
31493}
31494pattern refineRelation_container_attribute_EReference(
31495 problem:LogicProblem, interpretation:PartialInterpretation,
31496 relationIterpretation:PartialRelationInterpretation,
31497 from: DefinedElement, to: DefinedElement)
31498{
31499 find interpretation(problem,interpretation);
31500 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31501 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
31502 find mustExist(problem, interpretation, from);
31503 find mustExist(problem, interpretation, to);
31504 find mustInstanceOfEReference_class(problem,interpretation,from);
31505 BooleanElement(to);
31506 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
31507 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
31508}
31509pattern refineRelation_resolveProxies_attribute_EReference(
31510 problem:LogicProblem, interpretation:PartialInterpretation,
31511 relationIterpretation:PartialRelationInterpretation,
31512 from: DefinedElement, to: DefinedElement)
31513{
31514 find interpretation(problem,interpretation);
31515 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31516 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
31517 find mustExist(problem, interpretation, from);
31518 find mustExist(problem, interpretation, to);
31519 find mustInstanceOfEReference_class(problem,interpretation,from);
31520 BooleanElement(to);
31521 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
31522 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
31523}
31524pattern refineRelation_changeable_attribute_EStructuralFeature(
31525 problem:LogicProblem, interpretation:PartialInterpretation,
31526 relationIterpretation:PartialRelationInterpretation,
31527 from: DefinedElement, to: DefinedElement)
31528{
31529 find interpretation(problem,interpretation);
31530 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31531 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
31532 find mustExist(problem, interpretation, from);
31533 find mustExist(problem, interpretation, to);
31534 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
31535 BooleanElement(to);
31536 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
31537 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
31538}
31539pattern refineRelation_volatile_attribute_EStructuralFeature(
31540 problem:LogicProblem, interpretation:PartialInterpretation,
31541 relationIterpretation:PartialRelationInterpretation,
31542 from: DefinedElement, to: DefinedElement)
31543{
31544 find interpretation(problem,interpretation);
31545 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31546 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
31547 find mustExist(problem, interpretation, from);
31548 find mustExist(problem, interpretation, to);
31549 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
31550 BooleanElement(to);
31551 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
31552 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
31553}
31554pattern refineRelation_transient_attribute_EStructuralFeature(
31555 problem:LogicProblem, interpretation:PartialInterpretation,
31556 relationIterpretation:PartialRelationInterpretation,
31557 from: DefinedElement, to: DefinedElement)
31558{
31559 find interpretation(problem,interpretation);
31560 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31561 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
31562 find mustExist(problem, interpretation, from);
31563 find mustExist(problem, interpretation, to);
31564 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
31565 BooleanElement(to);
31566 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
31567 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
31568}
31569pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
31570 problem:LogicProblem, interpretation:PartialInterpretation,
31571 relationIterpretation:PartialRelationInterpretation,
31572 from: DefinedElement, to: DefinedElement)
31573{
31574 find interpretation(problem,interpretation);
31575 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31576 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
31577 find mustExist(problem, interpretation, from);
31578 find mustExist(problem, interpretation, to);
31579 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
31580 StringElement(to);
31581 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
31582 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
31583}
31584pattern refineRelation_unsettable_attribute_EStructuralFeature(
31585 problem:LogicProblem, interpretation:PartialInterpretation,
31586 relationIterpretation:PartialRelationInterpretation,
31587 from: DefinedElement, to: DefinedElement)
31588{
31589 find interpretation(problem,interpretation);
31590 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31591 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
31592 find mustExist(problem, interpretation, from);
31593 find mustExist(problem, interpretation, to);
31594 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
31595 BooleanElement(to);
31596 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
31597 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
31598}
31599pattern refineRelation_derived_attribute_EStructuralFeature(
31600 problem:LogicProblem, interpretation:PartialInterpretation,
31601 relationIterpretation:PartialRelationInterpretation,
31602 from: DefinedElement, to: DefinedElement)
31603{
31604 find interpretation(problem,interpretation);
31605 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31606 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
31607 find mustExist(problem, interpretation, from);
31608 find mustExist(problem, interpretation, to);
31609 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
31610 BooleanElement(to);
31611 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
31612 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
31613}
31614pattern refineRelation_ordered_attribute_ETypedElement(
31615 problem:LogicProblem, interpretation:PartialInterpretation,
31616 relationIterpretation:PartialRelationInterpretation,
31617 from: DefinedElement, to: DefinedElement)
31618{
31619 find interpretation(problem,interpretation);
31620 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31621 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
31622 find mustExist(problem, interpretation, from);
31623 find mustExist(problem, interpretation, to);
31624 find mustInstanceOfETypedElement_class(problem,interpretation,from);
31625 BooleanElement(to);
31626 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
31627 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
31628}
31629pattern refineRelation_unique_attribute_ETypedElement(
31630 problem:LogicProblem, interpretation:PartialInterpretation,
31631 relationIterpretation:PartialRelationInterpretation,
31632 from: DefinedElement, to: DefinedElement)
31633{
31634 find interpretation(problem,interpretation);
31635 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31636 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
31637 find mustExist(problem, interpretation, from);
31638 find mustExist(problem, interpretation, to);
31639 find mustInstanceOfETypedElement_class(problem,interpretation,from);
31640 BooleanElement(to);
31641 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
31642 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
31643}
31644pattern refineRelation_lowerBound_attribute_ETypedElement(
31645 problem:LogicProblem, interpretation:PartialInterpretation,
31646 relationIterpretation:PartialRelationInterpretation,
31647 from: DefinedElement, to: DefinedElement)
31648{
31649 find interpretation(problem,interpretation);
31650 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31651 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
31652 find mustExist(problem, interpretation, from);
31653 find mustExist(problem, interpretation, to);
31654 find mustInstanceOfETypedElement_class(problem,interpretation,from);
31655 IntegerElement(to);
31656 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
31657 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
31658}
31659pattern refineRelation_upperBound_attribute_ETypedElement(
31660 problem:LogicProblem, interpretation:PartialInterpretation,
31661 relationIterpretation:PartialRelationInterpretation,
31662 from: DefinedElement, to: DefinedElement)
31663{
31664 find interpretation(problem,interpretation);
31665 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31666 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
31667 find mustExist(problem, interpretation, from);
31668 find mustExist(problem, interpretation, to);
31669 find mustInstanceOfETypedElement_class(problem,interpretation,from);
31670 IntegerElement(to);
31671 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
31672 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
31673}
31674pattern refineRelation_many_attribute_ETypedElement(
31675 problem:LogicProblem, interpretation:PartialInterpretation,
31676 relationIterpretation:PartialRelationInterpretation,
31677 from: DefinedElement, to: DefinedElement)
31678{
31679 find interpretation(problem,interpretation);
31680 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31681 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
31682 find mustExist(problem, interpretation, from);
31683 find mustExist(problem, interpretation, to);
31684 find mustInstanceOfETypedElement_class(problem,interpretation,from);
31685 BooleanElement(to);
31686 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
31687 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
31688}
31689pattern refineRelation_required_attribute_ETypedElement(
31690 problem:LogicProblem, interpretation:PartialInterpretation,
31691 relationIterpretation:PartialRelationInterpretation,
31692 from: DefinedElement, to: DefinedElement)
31693{
31694 find interpretation(problem,interpretation);
31695 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31696 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
31697 find mustExist(problem, interpretation, from);
31698 find mustExist(problem, interpretation, to);
31699 find mustInstanceOfETypedElement_class(problem,interpretation,from);
31700 BooleanElement(to);
31701 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
31702 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
31703}
31704pattern refineRelation_key_attribute_EStringToStringMapEntry(
31705 problem:LogicProblem, interpretation:PartialInterpretation,
31706 relationIterpretation:PartialRelationInterpretation,
31707 from: DefinedElement, to: DefinedElement)
31708{
31709 find interpretation(problem,interpretation);
31710 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31711 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
31712 find mustExist(problem, interpretation, from);
31713 find mustExist(problem, interpretation, to);
31714 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
31715 StringElement(to);
31716 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
31717 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
31718}
31719pattern refineRelation_value_attribute_EStringToStringMapEntry(
31720 problem:LogicProblem, interpretation:PartialInterpretation,
31721 relationIterpretation:PartialRelationInterpretation,
31722 from: DefinedElement, to: DefinedElement)
31723{
31724 find interpretation(problem,interpretation);
31725 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
31726 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
31727 find mustExist(problem, interpretation, from);
31728 find mustExist(problem, interpretation, to);
31729 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
31730 StringElement(to);
31731 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
31732 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
31733}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem
new file mode 100644
index 00000000..ab657f0b
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/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.7 //@types.5 //@types.0 //@types.9 //@types.2 //@types.3 //@types.6 //@types.11 //@types.10 //@types.16 //@types.13 //@types.1 //@types.15 //@types.14 //@types.4 //@types.12 //@types.8 //@types.17 //@types.18 //@types.19 //@types.20 //@types.21 //@types.22 //@types.23 //@types.24" containmentRelations="//@relations.1 //@relations.3 //@relations.6 //@relations.16 //@relations.17 //@relations.20 //@relations.21 //@relations.23 //@relations.25 //@relations.26 //@relations.28 //@relations.29 //@relations.30 //@relations.38 //@relations.39 //@relations.40 //@relations.42 //@relations.45"/>
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/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/init.partialmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/init.partialmodel
new file mode 100644
index 00000000..985e7346
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/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/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt
new file mode 100644
index 00000000..69222b92
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt
@@ -0,0 +1 @@
Model generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finished \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml
new file mode 100644
index 00000000..c55209f7
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml
@@ -0,0 +1,7641 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 226.60000000000002
9 h 40
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "Root literal FunctionType"
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 FunctionType enum
30 "
31 fontSize 14
32 fontName "Consolas"
33 alignment "left"
34 anchor "tl"
35 borderDistance 6
36 ]
37 ]
38
39 node
40 [
41 id 1
42 graphics
43 [
44 w 297.0
45 h 40
46 type "rectangle"
47 fill "#FFFFFF"
48 fill2 "#FFFFFF"
49 outline "#000000"
50 ]
51 LabelGraphics
52 [
53 text "Intermediate literal FunctionType"
54 outline "#000000"
55 fill "#FFFFFF"
56 fontSize 16
57 fontName "Monospace"
58 autoSizePolicy "node_width"
59 anchor "t"
60 borderDistance 0.0
61 ]
62 LabelGraphics
63 [
64 text "
65 FunctionType enum
66 "
67 fontSize 14
68 fontName "Consolas"
69 alignment "left"
70 anchor "tl"
71 borderDistance 6
72 ]
73 ]
74
75 node
76 [
77 id 2
78 graphics
79 [
80 w 226.60000000000002
81 h 40
82 type "rectangle"
83 fill "#FFFFFF"
84 fill2 "#FFFFFF"
85 outline "#000000"
86 ]
87 LabelGraphics
88 [
89 text "Leaf literal FunctionType"
90 outline "#000000"
91 fill "#FFFFFF"
92 fontSize 16
93 fontName "Monospace"
94 autoSizePolicy "node_width"
95 anchor "t"
96 borderDistance 0.0
97 ]
98 LabelGraphics
99 [
100 text "
101 FunctionType enum
102 "
103 fontSize 14
104 fontName "Consolas"
105 alignment "left"
106 anchor "tl"
107 borderDistance 6
108 ]
109 ]
110
111 node
112 [
113 id 3
114 graphics
115 [
116 w 361.90000000000003
117 h 54
118 type "rectangle"
119 fill "#FFFFFF"
120 fill2 "#FFFFFF"
121 outline "#000000"
122 ]
123 LabelGraphics
124 [
125 text "o 1"
126 outline "#000000"
127 fill "#FFFFFF"
128 fontSize 16
129 fontName "Monospace"
130 autoSizePolicy "node_width"
131 anchor "t"
132 borderDistance 0.0
133 ]
134 LabelGraphics
135 [
136 text "
137 FunctionalArchitectureModel class DefinedPart
138 FunctionalArchitectureModel class
139 "
140 fontSize 14
141 fontName "Consolas"
142 alignment "left"
143 anchor "tl"
144 borderDistance 6
145 ]
146 ]
147
148 node
149 [
150 id 4
151 graphics
152 [
153 w 41.800000000000004
154 h 26
155 type "rectangle"
156 fill "#FFFFFF"
157 fill2 "#FFFFFF"
158 outline "#000000"
159 ]
160 LabelGraphics
161 [
162 text "true"
163 outline "#000000"
164 fill "#FFFFFF"
165 fontSize 16
166 fontName "Monospace"
167 autoSizePolicy "node_width"
168 anchor "t"
169 borderDistance 0.0
170 ]
171 LabelGraphics
172 [
173 text "
174 "
175 fontSize 14
176 fontName "Consolas"
177 alignment "left"
178 anchor "tl"
179 borderDistance 6
180 ]
181 ]
182
183 node
184 [
185 id 5
186 graphics
187 [
188 w 50.6
189 h 26
190 type "rectangle"
191 fill "#FFFFFF"
192 fill2 "#FFFFFF"
193 outline "#000000"
194 ]
195 LabelGraphics
196 [
197 text "false"
198 outline "#000000"
199 fill "#FFFFFF"
200 fontSize 16
201 fontName "Monospace"
202 autoSizePolicy "node_width"
203 anchor "t"
204 borderDistance 0.0
205 ]
206 LabelGraphics
207 [
208 text "
209 "
210 fontSize 14
211 fontName "Consolas"
212 alignment "left"
213 anchor "tl"
214 borderDistance 6
215 ]
216 ]
217
218 node
219 [
220 id 6
221 graphics
222 [
223 w 192.50000000000003
224 h 54
225 type "rectangle"
226 fill "#FFFFFF"
227 fill2 "#FFFFFF"
228 outline "#000000"
229 ]
230 LabelGraphics
231 [
232 text "null"
233 outline "#000000"
234 fill "#FFFFFF"
235 fontSize 16
236 fontName "Monospace"
237 autoSizePolicy "node_width"
238 anchor "t"
239 borderDistance 0.0
240 ]
241 LabelGraphics
242 [
243 text "
244 FunctionalElement class
245 Function class
246 "
247 fontSize 14
248 fontName "Consolas"
249 alignment "left"
250 anchor "tl"
251 borderDistance 6
252 ]
253 ]
254
255 node
256 [
257 id 7
258 graphics
259 [
260 w 112.2
261 h 26
262 type "rectangle"
263 fill "#FFFFFF"
264 fill2 "#FFFFFF"
265 outline "#000000"
266 ]
267 LabelGraphics
268 [
269 text "New Integers"
270 outline "#000000"
271 fill "#FFFFFF"
272 fontSize 16
273 fontName "Monospace"
274 autoSizePolicy "node_width"
275 anchor "t"
276 borderDistance 0.0
277 ]
278 LabelGraphics
279 [
280 text "
281 "
282 fontSize 14
283 fontName "Consolas"
284 alignment "left"
285 anchor "tl"
286 borderDistance 6
287 ]
288 ]
289
290 node
291 [
292 id 8
293 graphics
294 [
295 w 85.80000000000001
296 h 26
297 type "rectangle"
298 fill "#FFFFFF"
299 fill2 "#FFFFFF"
300 outline "#000000"
301 ]
302 LabelGraphics
303 [
304 text "New Reals"
305 outline "#000000"
306 fill "#FFFFFF"
307 fontSize 16
308 fontName "Monospace"
309 autoSizePolicy "node_width"
310 anchor "t"
311 borderDistance 0.0
312 ]
313 LabelGraphics
314 [
315 text "
316 "
317 fontSize 14
318 fontName "Consolas"
319 alignment "left"
320 anchor "tl"
321 borderDistance 6
322 ]
323 ]
324
325 node
326 [
327 id 9
328 graphics
329 [
330 w 103.4
331 h 26
332 type "rectangle"
333 fill "#FFFFFF"
334 fill2 "#FFFFFF"
335 outline "#000000"
336 ]
337 LabelGraphics
338 [
339 text "New Strings"
340 outline "#000000"
341 fill "#FFFFFF"
342 fontSize 16
343 fontName "Monospace"
344 autoSizePolicy "node_width"
345 anchor "t"
346 borderDistance 0.0
347 ]
348 LabelGraphics
349 [
350 text "
351 "
352 fontSize 14
353 fontName "Consolas"
354 alignment "left"
355 anchor "tl"
356 borderDistance 6
357 ]
358 ]
359
360 node
361 [
362 id 10
363 graphics
364 [
365 w 103.4
366 h 26
367 type "rectangle"
368 fill "#FFFFFF"
369 fill2 "#FFFFFF"
370 outline "#000000"
371 ]
372 LabelGraphics
373 [
374 text "New Objects"
375 outline "#000000"
376 fill "#FFFFFF"
377 fontSize 16
378 fontName "Monospace"
379 autoSizePolicy "node_width"
380 anchor "t"
381 borderDistance 0.0
382 ]
383 LabelGraphics
384 [
385 text "
386 "
387 fontSize 14
388 fontName "Consolas"
389 alignment "left"
390 anchor "tl"
391 borderDistance 6
392 ]
393 ]
394 edge
395 [
396 source 3
397 target 6
398 graphics
399 [
400 fill "#000000"
401 width 3
402 targetArrow "standard"
403 ]
404 LabelGraphics
405 [
406 text "rootElements reference FunctionalArchitectureModel"
407 fontSize 14
408 fontName "Consolas"
409 configuration "AutoFlippingLabel"
410 model "six_pos"
411 position "thead"
412 ]
413 ]
414]
415graph
416[
417 node
418 [
419 id 0
420 graphics
421 [
422 w 226.60000000000002
423 h 40
424 type "rectangle"
425 fill "#FFFFFF"
426 fill2 "#FFFFFF"
427 outline "#000000"
428 ]
429 LabelGraphics
430 [
431 text "Root literal FunctionType"
432 outline "#000000"
433 fill "#FFFFFF"
434 fontSize 16
435 fontName "Monospace"
436 autoSizePolicy "node_width"
437 anchor "t"
438 borderDistance 0.0
439 ]
440 LabelGraphics
441 [
442 text "
443 FunctionType enum
444 "
445 fontSize 14
446 fontName "Consolas"
447 alignment "left"
448 anchor "tl"
449 borderDistance 6
450 ]
451 ]
452
453 node
454 [
455 id 1
456 graphics
457 [
458 w 297.0
459 h 40
460 type "rectangle"
461 fill "#FFFFFF"
462 fill2 "#FFFFFF"
463 outline "#000000"
464 ]
465 LabelGraphics
466 [
467 text "Intermediate literal FunctionType"
468 outline "#000000"
469 fill "#FFFFFF"
470 fontSize 16
471 fontName "Monospace"
472 autoSizePolicy "node_width"
473 anchor "t"
474 borderDistance 0.0
475 ]
476 LabelGraphics
477 [
478 text "
479 FunctionType enum
480 "
481 fontSize 14
482 fontName "Consolas"
483 alignment "left"
484 anchor "tl"
485 borderDistance 6
486 ]
487 ]
488
489 node
490 [
491 id 2
492 graphics
493 [
494 w 226.60000000000002
495 h 40
496 type "rectangle"
497 fill "#FFFFFF"
498 fill2 "#FFFFFF"
499 outline "#000000"
500 ]
501 LabelGraphics
502 [
503 text "Leaf literal FunctionType"
504 outline "#000000"
505 fill "#FFFFFF"
506 fontSize 16
507 fontName "Monospace"
508 autoSizePolicy "node_width"
509 anchor "t"
510 borderDistance 0.0
511 ]
512 LabelGraphics
513 [
514 text "
515 FunctionType enum
516 "
517 fontSize 14
518 fontName "Consolas"
519 alignment "left"
520 anchor "tl"
521 borderDistance 6
522 ]
523 ]
524
525 node
526 [
527 id 3
528 graphics
529 [
530 w 361.90000000000003
531 h 54
532 type "rectangle"
533 fill "#FFFFFF"
534 fill2 "#FFFFFF"
535 outline "#000000"
536 ]
537 LabelGraphics
538 [
539 text "o 1"
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 FunctionalArchitectureModel class DefinedPart
552 FunctionalArchitectureModel class
553 "
554 fontSize 14
555 fontName "Consolas"
556 alignment "left"
557 anchor "tl"
558 borderDistance 6
559 ]
560 ]
561
562 node
563 [
564 id 4
565 graphics
566 [
567 w 41.800000000000004
568 h 26
569 type "rectangle"
570 fill "#FFFFFF"
571 fill2 "#FFFFFF"
572 outline "#000000"
573 ]
574 LabelGraphics
575 [
576 text "true"
577 outline "#000000"
578 fill "#FFFFFF"
579 fontSize 16
580 fontName "Monospace"
581 autoSizePolicy "node_width"
582 anchor "t"
583 borderDistance 0.0
584 ]
585 LabelGraphics
586 [
587 text "
588 "
589 fontSize 14
590 fontName "Consolas"
591 alignment "left"
592 anchor "tl"
593 borderDistance 6
594 ]
595 ]
596
597 node
598 [
599 id 5
600 graphics
601 [
602 w 50.6
603 h 26
604 type "rectangle"
605 fill "#FFFFFF"
606 fill2 "#FFFFFF"
607 outline "#000000"
608 ]
609 LabelGraphics
610 [
611 text "false"
612 outline "#000000"
613 fill "#FFFFFF"
614 fontSize 16
615 fontName "Monospace"
616 autoSizePolicy "node_width"
617 anchor "t"
618 borderDistance 0.0
619 ]
620 LabelGraphics
621 [
622 text "
623 "
624 fontSize 14
625 fontName "Consolas"
626 alignment "left"
627 anchor "tl"
628 borderDistance 6
629 ]
630 ]
631
632 node
633 [
634 id 6
635 graphics
636 [
637 w 192.50000000000003
638 h 54
639 type "rectangle"
640 fill "#FFFFFF"
641 fill2 "#FFFFFF"
642 outline "#000000"
643 ]
644 LabelGraphics
645 [
646 text "null"
647 outline "#000000"
648 fill "#FFFFFF"
649 fontSize 16
650 fontName "Monospace"
651 autoSizePolicy "node_width"
652 anchor "t"
653 borderDistance 0.0
654 ]
655 LabelGraphics
656 [
657 text "
658 FunctionalElement class
659 Function class
660 "
661 fontSize 14
662 fontName "Consolas"
663 alignment "left"
664 anchor "tl"
665 borderDistance 6
666 ]
667 ]
668
669 node
670 [
671 id 7
672 graphics
673 [
674 w 112.2
675 h 26
676 type "rectangle"
677 fill "#FFFFFF"
678 fill2 "#FFFFFF"
679 outline "#000000"
680 ]
681 LabelGraphics
682 [
683 text "New Integers"
684 outline "#000000"
685 fill "#FFFFFF"
686 fontSize 16
687 fontName "Monospace"
688 autoSizePolicy "node_width"
689 anchor "t"
690 borderDistance 0.0
691 ]
692 LabelGraphics
693 [
694 text "
695 "
696 fontSize 14
697 fontName "Consolas"
698 alignment "left"
699 anchor "tl"
700 borderDistance 6
701 ]
702 ]
703
704 node
705 [
706 id 8
707 graphics
708 [
709 w 85.80000000000001
710 h 26
711 type "rectangle"
712 fill "#FFFFFF"
713 fill2 "#FFFFFF"
714 outline "#000000"
715 ]
716 LabelGraphics
717 [
718 text "New Reals"
719 outline "#000000"
720 fill "#FFFFFF"
721 fontSize 16
722 fontName "Monospace"
723 autoSizePolicy "node_width"
724 anchor "t"
725 borderDistance 0.0
726 ]
727 LabelGraphics
728 [
729 text "
730 "
731 fontSize 14
732 fontName "Consolas"
733 alignment "left"
734 anchor "tl"
735 borderDistance 6
736 ]
737 ]
738
739 node
740 [
741 id 9
742 graphics
743 [
744 w 103.4
745 h 26
746 type "rectangle"
747 fill "#FFFFFF"
748 fill2 "#FFFFFF"
749 outline "#000000"
750 ]
751 LabelGraphics
752 [
753 text "New Strings"
754 outline "#000000"
755 fill "#FFFFFF"
756 fontSize 16
757 fontName "Monospace"
758 autoSizePolicy "node_width"
759 anchor "t"
760 borderDistance 0.0
761 ]
762 LabelGraphics
763 [
764 text "
765 "
766 fontSize 14
767 fontName "Consolas"
768 alignment "left"
769 anchor "tl"
770 borderDistance 6
771 ]
772 ]
773
774 node
775 [
776 id 10
777 graphics
778 [
779 w 103.4
780 h 26
781 type "rectangle"
782 fill "#FFFFFF"
783 fill2 "#FFFFFF"
784 outline "#000000"
785 ]
786 LabelGraphics
787 [
788 text "New Objects"
789 outline "#000000"
790 fill "#FFFFFF"
791 fontSize 16
792 fontName "Monospace"
793 autoSizePolicy "node_width"
794 anchor "t"
795 borderDistance 0.0
796 ]
797 LabelGraphics
798 [
799 text "
800 "
801 fontSize 14
802 fontName "Consolas"
803 alignment "left"
804 anchor "tl"
805 borderDistance 6
806 ]
807 ]
808 edge
809 [
810 source 3
811 target 6
812 graphics
813 [
814 fill "#000000"
815 width 3
816 targetArrow "standard"
817 ]
818 LabelGraphics
819 [
820 text "rootElements reference FunctionalArchitectureModel"
821 fontSize 14
822 fontName "Consolas"
823 configuration "AutoFlippingLabel"
824 model "six_pos"
825 position "thead"
826 ]
827 ]
828]
829graph
830[
831 node
832 [
833 id 0
834 graphics
835 [
836 w 226.60000000000002
837 h 40
838 type "rectangle"
839 fill "#FFFFFF"
840 fill2 "#FFFFFF"
841 outline "#000000"
842 ]
843 LabelGraphics
844 [
845 text "Root literal FunctionType"
846 outline "#000000"
847 fill "#FFFFFF"
848 fontSize 16
849 fontName "Monospace"
850 autoSizePolicy "node_width"
851 anchor "t"
852 borderDistance 0.0
853 ]
854 LabelGraphics
855 [
856 text "
857 FunctionType enum
858 "
859 fontSize 14
860 fontName "Consolas"
861 alignment "left"
862 anchor "tl"
863 borderDistance 6
864 ]
865 ]
866
867 node
868 [
869 id 1
870 graphics
871 [
872 w 297.0
873 h 40
874 type "rectangle"
875 fill "#FFFFFF"
876 fill2 "#FFFFFF"
877 outline "#000000"
878 ]
879 LabelGraphics
880 [
881 text "Intermediate literal FunctionType"
882 outline "#000000"
883 fill "#FFFFFF"
884 fontSize 16
885 fontName "Monospace"
886 autoSizePolicy "node_width"
887 anchor "t"
888 borderDistance 0.0
889 ]
890 LabelGraphics
891 [
892 text "
893 FunctionType enum
894 "
895 fontSize 14
896 fontName "Consolas"
897 alignment "left"
898 anchor "tl"
899 borderDistance 6
900 ]
901 ]
902
903 node
904 [
905 id 2
906 graphics
907 [
908 w 226.60000000000002
909 h 40
910 type "rectangle"
911 fill "#FFFFFF"
912 fill2 "#FFFFFF"
913 outline "#000000"
914 ]
915 LabelGraphics
916 [
917 text "Leaf literal FunctionType"
918 outline "#000000"
919 fill "#FFFFFF"
920 fontSize 16
921 fontName "Monospace"
922 autoSizePolicy "node_width"
923 anchor "t"
924 borderDistance 0.0
925 ]
926 LabelGraphics
927 [
928 text "
929 FunctionType enum
930 "
931 fontSize 14
932 fontName "Consolas"
933 alignment "left"
934 anchor "tl"
935 borderDistance 6
936 ]
937 ]
938
939 node
940 [
941 id 3
942 graphics
943 [
944 w 361.90000000000003
945 h 54
946 type "rectangle"
947 fill "#FFFFFF"
948 fill2 "#FFFFFF"
949 outline "#000000"
950 ]
951 LabelGraphics
952 [
953 text "o 1"
954 outline "#000000"
955 fill "#FFFFFF"
956 fontSize 16
957 fontName "Monospace"
958 autoSizePolicy "node_width"
959 anchor "t"
960 borderDistance 0.0
961 ]
962 LabelGraphics
963 [
964 text "
965 FunctionalArchitectureModel class DefinedPart
966 FunctionalArchitectureModel class
967 "
968 fontSize 14
969 fontName "Consolas"
970 alignment "left"
971 anchor "tl"
972 borderDistance 6
973 ]
974 ]
975
976 node
977 [
978 id 4
979 graphics
980 [
981 w 41.800000000000004
982 h 26
983 type "rectangle"
984 fill "#FFFFFF"
985 fill2 "#FFFFFF"
986 outline "#000000"
987 ]
988 LabelGraphics
989 [
990 text "true"
991 outline "#000000"
992 fill "#FFFFFF"
993 fontSize 16
994 fontName "Monospace"
995 autoSizePolicy "node_width"
996 anchor "t"
997 borderDistance 0.0
998 ]
999 LabelGraphics
1000 [
1001 text "
1002 "
1003 fontSize 14
1004 fontName "Consolas"
1005 alignment "left"
1006 anchor "tl"
1007 borderDistance 6
1008 ]
1009 ]
1010
1011 node
1012 [
1013 id 5
1014 graphics
1015 [
1016 w 50.6
1017 h 26
1018 type "rectangle"
1019 fill "#FFFFFF"
1020 fill2 "#FFFFFF"
1021 outline "#000000"
1022 ]
1023 LabelGraphics
1024 [
1025 text "false"
1026 outline "#000000"
1027 fill "#FFFFFF"
1028 fontSize 16
1029 fontName "Monospace"
1030 autoSizePolicy "node_width"
1031 anchor "t"
1032 borderDistance 0.0
1033 ]
1034 LabelGraphics
1035 [
1036 text "
1037 "
1038 fontSize 14
1039 fontName "Consolas"
1040 alignment "left"
1041 anchor "tl"
1042 borderDistance 6
1043 ]
1044 ]
1045
1046 node
1047 [
1048 id 6
1049 graphics
1050 [
1051 w 192.50000000000003
1052 h 54
1053 type "rectangle"
1054 fill "#FFFFFF"
1055 fill2 "#FFFFFF"
1056 outline "#000000"
1057 ]
1058 LabelGraphics
1059 [
1060 text "null"
1061 outline "#000000"
1062 fill "#FFFFFF"
1063 fontSize 16
1064 fontName "Monospace"
1065 autoSizePolicy "node_width"
1066 anchor "t"
1067 borderDistance 0.0
1068 ]
1069 LabelGraphics
1070 [
1071 text "
1072 FunctionalElement class
1073 Function class
1074 "
1075 fontSize 14
1076 fontName "Consolas"
1077 alignment "left"
1078 anchor "tl"
1079 borderDistance 6
1080 ]
1081 ]
1082
1083 node
1084 [
1085 id 7
1086 graphics
1087 [
1088 w 112.2
1089 h 26
1090 type "rectangle"
1091 fill "#FFFFFF"
1092 fill2 "#FFFFFF"
1093 outline "#000000"
1094 ]
1095 LabelGraphics
1096 [
1097 text "New Integers"
1098 outline "#000000"
1099 fill "#FFFFFF"
1100 fontSize 16
1101 fontName "Monospace"
1102 autoSizePolicy "node_width"
1103 anchor "t"
1104 borderDistance 0.0
1105 ]
1106 LabelGraphics
1107 [
1108 text "
1109 "
1110 fontSize 14
1111 fontName "Consolas"
1112 alignment "left"
1113 anchor "tl"
1114 borderDistance 6
1115 ]
1116 ]
1117
1118 node
1119 [
1120 id 8
1121 graphics
1122 [
1123 w 85.80000000000001
1124 h 26
1125 type "rectangle"
1126 fill "#FFFFFF"
1127 fill2 "#FFFFFF"
1128 outline "#000000"
1129 ]
1130 LabelGraphics
1131 [
1132 text "New Reals"
1133 outline "#000000"
1134 fill "#FFFFFF"
1135 fontSize 16
1136 fontName "Monospace"
1137 autoSizePolicy "node_width"
1138 anchor "t"
1139 borderDistance 0.0
1140 ]
1141 LabelGraphics
1142 [
1143 text "
1144 "
1145 fontSize 14
1146 fontName "Consolas"
1147 alignment "left"
1148 anchor "tl"
1149 borderDistance 6
1150 ]
1151 ]
1152
1153 node
1154 [
1155 id 9
1156 graphics
1157 [
1158 w 103.4
1159 h 26
1160 type "rectangle"
1161 fill "#FFFFFF"
1162 fill2 "#FFFFFF"
1163 outline "#000000"
1164 ]
1165 LabelGraphics
1166 [
1167 text "New Strings"
1168 outline "#000000"
1169 fill "#FFFFFF"
1170 fontSize 16
1171 fontName "Monospace"
1172 autoSizePolicy "node_width"
1173 anchor "t"
1174 borderDistance 0.0
1175 ]
1176 LabelGraphics
1177 [
1178 text "
1179 "
1180 fontSize 14
1181 fontName "Consolas"
1182 alignment "left"
1183 anchor "tl"
1184 borderDistance 6
1185 ]
1186 ]
1187
1188 node
1189 [
1190 id 10
1191 graphics
1192 [
1193 w 103.4
1194 h 26
1195 type "rectangle"
1196 fill "#FFFFFF"
1197 fill2 "#FFFFFF"
1198 outline "#000000"
1199 ]
1200 LabelGraphics
1201 [
1202 text "New Objects"
1203 outline "#000000"
1204 fill "#FFFFFF"
1205 fontSize 16
1206 fontName "Monospace"
1207 autoSizePolicy "node_width"
1208 anchor "t"
1209 borderDistance 0.0
1210 ]
1211 LabelGraphics
1212 [
1213 text "
1214 "
1215 fontSize 14
1216 fontName "Consolas"
1217 alignment "left"
1218 anchor "tl"
1219 borderDistance 6
1220 ]
1221 ]
1222 edge
1223 [
1224 source 3
1225 target 6
1226 graphics
1227 [
1228 fill "#000000"
1229 width 3
1230 targetArrow "standard"
1231 ]
1232 LabelGraphics
1233 [
1234 text "rootElements reference FunctionalArchitectureModel"
1235 fontSize 14
1236 fontName "Consolas"
1237 configuration "AutoFlippingLabel"
1238 model "six_pos"
1239 position "thead"
1240 ]
1241 ]
1242]
1243graph
1244[
1245 node
1246 [
1247 id 0
1248 graphics
1249 [
1250 w 226.60000000000002
1251 h 40
1252 type "rectangle"
1253 fill "#FFFFFF"
1254 fill2 "#FFFFFF"
1255 outline "#000000"
1256 ]
1257 LabelGraphics
1258 [
1259 text "Root literal FunctionType"
1260 outline "#000000"
1261 fill "#FFFFFF"
1262 fontSize 16
1263 fontName "Monospace"
1264 autoSizePolicy "node_width"
1265 anchor "t"
1266 borderDistance 0.0
1267 ]
1268 LabelGraphics
1269 [
1270 text "
1271 FunctionType enum
1272 "
1273 fontSize 14
1274 fontName "Consolas"
1275 alignment "left"
1276 anchor "tl"
1277 borderDistance 6
1278 ]
1279 ]
1280
1281 node
1282 [
1283 id 1
1284 graphics
1285 [
1286 w 297.0
1287 h 40
1288 type "rectangle"
1289 fill "#FFFFFF"
1290 fill2 "#FFFFFF"
1291 outline "#000000"
1292 ]
1293 LabelGraphics
1294 [
1295 text "Intermediate literal FunctionType"
1296 outline "#000000"
1297 fill "#FFFFFF"
1298 fontSize 16
1299 fontName "Monospace"
1300 autoSizePolicy "node_width"
1301 anchor "t"
1302 borderDistance 0.0
1303 ]
1304 LabelGraphics
1305 [
1306 text "
1307 FunctionType enum
1308 "
1309 fontSize 14
1310 fontName "Consolas"
1311 alignment "left"
1312 anchor "tl"
1313 borderDistance 6
1314 ]
1315 ]
1316
1317 node
1318 [
1319 id 2
1320 graphics
1321 [
1322 w 226.60000000000002
1323 h 40
1324 type "rectangle"
1325 fill "#FFFFFF"
1326 fill2 "#FFFFFF"
1327 outline "#000000"
1328 ]
1329 LabelGraphics
1330 [
1331 text "Leaf literal FunctionType"
1332 outline "#000000"
1333 fill "#FFFFFF"
1334 fontSize 16
1335 fontName "Monospace"
1336 autoSizePolicy "node_width"
1337 anchor "t"
1338 borderDistance 0.0
1339 ]
1340 LabelGraphics
1341 [
1342 text "
1343 FunctionType enum
1344 "
1345 fontSize 14
1346 fontName "Consolas"
1347 alignment "left"
1348 anchor "tl"
1349 borderDistance 6
1350 ]
1351 ]
1352
1353 node
1354 [
1355 id 3
1356 graphics
1357 [
1358 w 361.90000000000003
1359 h 54
1360 type "rectangle"
1361 fill "#FFFFFF"
1362 fill2 "#FFFFFF"
1363 outline "#000000"
1364 ]
1365 LabelGraphics
1366 [
1367 text "o 1"
1368 outline "#000000"
1369 fill "#FFFFFF"
1370 fontSize 16
1371 fontName "Monospace"
1372 autoSizePolicy "node_width"
1373 anchor "t"
1374 borderDistance 0.0
1375 ]
1376 LabelGraphics
1377 [
1378 text "
1379 FunctionalArchitectureModel class DefinedPart
1380 FunctionalArchitectureModel class
1381 "
1382 fontSize 14
1383 fontName "Consolas"
1384 alignment "left"
1385 anchor "tl"
1386 borderDistance 6
1387 ]
1388 ]
1389
1390 node
1391 [
1392 id 4
1393 graphics
1394 [
1395 w 41.800000000000004
1396 h 26
1397 type "rectangle"
1398 fill "#FFFFFF"
1399 fill2 "#FFFFFF"
1400 outline "#000000"
1401 ]
1402 LabelGraphics
1403 [
1404 text "true"
1405 outline "#000000"
1406 fill "#FFFFFF"
1407 fontSize 16
1408 fontName "Monospace"
1409 autoSizePolicy "node_width"
1410 anchor "t"
1411 borderDistance 0.0
1412 ]
1413 LabelGraphics
1414 [
1415 text "
1416 "
1417 fontSize 14
1418 fontName "Consolas"
1419 alignment "left"
1420 anchor "tl"
1421 borderDistance 6
1422 ]
1423 ]
1424
1425 node
1426 [
1427 id 5
1428 graphics
1429 [
1430 w 50.6
1431 h 26
1432 type "rectangle"
1433 fill "#FFFFFF"
1434 fill2 "#FFFFFF"
1435 outline "#000000"
1436 ]
1437 LabelGraphics
1438 [
1439 text "false"
1440 outline "#000000"
1441 fill "#FFFFFF"
1442 fontSize 16
1443 fontName "Monospace"
1444 autoSizePolicy "node_width"
1445 anchor "t"
1446 borderDistance 0.0
1447 ]
1448 LabelGraphics
1449 [
1450 text "
1451 "
1452 fontSize 14
1453 fontName "Consolas"
1454 alignment "left"
1455 anchor "tl"
1456 borderDistance 6
1457 ]
1458 ]
1459
1460 node
1461 [
1462 id 6
1463 graphics
1464 [
1465 w 192.50000000000003
1466 h 54
1467 type "rectangle"
1468 fill "#FFFFFF"
1469 fill2 "#FFFFFF"
1470 outline "#000000"
1471 ]
1472 LabelGraphics
1473 [
1474 text "null"
1475 outline "#000000"
1476 fill "#FFFFFF"
1477 fontSize 16
1478 fontName "Monospace"
1479 autoSizePolicy "node_width"
1480 anchor "t"
1481 borderDistance 0.0
1482 ]
1483 LabelGraphics
1484 [
1485 text "
1486 FunctionalElement class
1487 Function class
1488 "
1489 fontSize 14
1490 fontName "Consolas"
1491 alignment "left"
1492 anchor "tl"
1493 borderDistance 6
1494 ]
1495 ]
1496
1497 node
1498 [
1499 id 7
1500 graphics
1501 [
1502 w 112.2
1503 h 26
1504 type "rectangle"
1505 fill "#FFFFFF"
1506 fill2 "#FFFFFF"
1507 outline "#000000"
1508 ]
1509 LabelGraphics
1510 [
1511 text "New Integers"
1512 outline "#000000"
1513 fill "#FFFFFF"
1514 fontSize 16
1515 fontName "Monospace"
1516 autoSizePolicy "node_width"
1517 anchor "t"
1518 borderDistance 0.0
1519 ]
1520 LabelGraphics
1521 [
1522 text "
1523 "
1524 fontSize 14
1525 fontName "Consolas"
1526 alignment "left"
1527 anchor "tl"
1528 borderDistance 6
1529 ]
1530 ]
1531
1532 node
1533 [
1534 id 8
1535 graphics
1536 [
1537 w 85.80000000000001
1538 h 26
1539 type "rectangle"
1540 fill "#FFFFFF"
1541 fill2 "#FFFFFF"
1542 outline "#000000"
1543 ]
1544 LabelGraphics
1545 [
1546 text "New Reals"
1547 outline "#000000"
1548 fill "#FFFFFF"
1549 fontSize 16
1550 fontName "Monospace"
1551 autoSizePolicy "node_width"
1552 anchor "t"
1553 borderDistance 0.0
1554 ]
1555 LabelGraphics
1556 [
1557 text "
1558 "
1559 fontSize 14
1560 fontName "Consolas"
1561 alignment "left"
1562 anchor "tl"
1563 borderDistance 6
1564 ]
1565 ]
1566
1567 node
1568 [
1569 id 9
1570 graphics
1571 [
1572 w 103.4
1573 h 26
1574 type "rectangle"
1575 fill "#FFFFFF"
1576 fill2 "#FFFFFF"
1577 outline "#000000"
1578 ]
1579 LabelGraphics
1580 [
1581 text "New Strings"
1582 outline "#000000"
1583 fill "#FFFFFF"
1584 fontSize 16
1585 fontName "Monospace"
1586 autoSizePolicy "node_width"
1587 anchor "t"
1588 borderDistance 0.0
1589 ]
1590 LabelGraphics
1591 [
1592 text "
1593 "
1594 fontSize 14
1595 fontName "Consolas"
1596 alignment "left"
1597 anchor "tl"
1598 borderDistance 6
1599 ]
1600 ]
1601
1602 node
1603 [
1604 id 10
1605 graphics
1606 [
1607 w 103.4
1608 h 26
1609 type "rectangle"
1610 fill "#FFFFFF"
1611 fill2 "#FFFFFF"
1612 outline "#000000"
1613 ]
1614 LabelGraphics
1615 [
1616 text "New Objects"
1617 outline "#000000"
1618 fill "#FFFFFF"
1619 fontSize 16
1620 fontName "Monospace"
1621 autoSizePolicy "node_width"
1622 anchor "t"
1623 borderDistance 0.0
1624 ]
1625 LabelGraphics
1626 [
1627 text "
1628 "
1629 fontSize 14
1630 fontName "Consolas"
1631 alignment "left"
1632 anchor "tl"
1633 borderDistance 6
1634 ]
1635 ]
1636 edge
1637 [
1638 source 3
1639 target 6
1640 graphics
1641 [
1642 fill "#000000"
1643 width 3
1644 targetArrow "standard"
1645 ]
1646 LabelGraphics
1647 [
1648 text "rootElements reference FunctionalArchitectureModel"
1649 fontSize 14
1650 fontName "Consolas"
1651 configuration "AutoFlippingLabel"
1652 model "six_pos"
1653 position "thead"
1654 ]
1655 ]
1656]
1657graph
1658[
1659 node
1660 [
1661 id 0
1662 graphics
1663 [
1664 w 226.60000000000002
1665 h 40
1666 type "rectangle"
1667 fill "#FFFFFF"
1668 fill2 "#FFFFFF"
1669 outline "#000000"
1670 ]
1671 LabelGraphics
1672 [
1673 text "Root literal FunctionType"
1674 outline "#000000"
1675 fill "#FFFFFF"
1676 fontSize 16
1677 fontName "Monospace"
1678 autoSizePolicy "node_width"
1679 anchor "t"
1680 borderDistance 0.0
1681 ]
1682 LabelGraphics
1683 [
1684 text "
1685 FunctionType enum
1686 "
1687 fontSize 14
1688 fontName "Consolas"
1689 alignment "left"
1690 anchor "tl"
1691 borderDistance 6
1692 ]
1693 ]
1694
1695 node
1696 [
1697 id 1
1698 graphics
1699 [
1700 w 297.0
1701 h 40
1702 type "rectangle"
1703 fill "#FFFFFF"
1704 fill2 "#FFFFFF"
1705 outline "#000000"
1706 ]
1707 LabelGraphics
1708 [
1709 text "Intermediate literal FunctionType"
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 FunctionType enum
1722 "
1723 fontSize 14
1724 fontName "Consolas"
1725 alignment "left"
1726 anchor "tl"
1727 borderDistance 6
1728 ]
1729 ]
1730
1731 node
1732 [
1733 id 2
1734 graphics
1735 [
1736 w 226.60000000000002
1737 h 40
1738 type "rectangle"
1739 fill "#FFFFFF"
1740 fill2 "#FFFFFF"
1741 outline "#000000"
1742 ]
1743 LabelGraphics
1744 [
1745 text "Leaf literal FunctionType"
1746 outline "#000000"
1747 fill "#FFFFFF"
1748 fontSize 16
1749 fontName "Monospace"
1750 autoSizePolicy "node_width"
1751 anchor "t"
1752 borderDistance 0.0
1753 ]
1754 LabelGraphics
1755 [
1756 text "
1757 FunctionType enum
1758 "
1759 fontSize 14
1760 fontName "Consolas"
1761 alignment "left"
1762 anchor "tl"
1763 borderDistance 6
1764 ]
1765 ]
1766
1767 node
1768 [
1769 id 3
1770 graphics
1771 [
1772 w 361.90000000000003
1773 h 54
1774 type "rectangle"
1775 fill "#FFFFFF"
1776 fill2 "#FFFFFF"
1777 outline "#000000"
1778 ]
1779 LabelGraphics
1780 [
1781 text "o 1"
1782 outline "#000000"
1783 fill "#FFFFFF"
1784 fontSize 16
1785 fontName "Monospace"
1786 autoSizePolicy "node_width"
1787 anchor "t"
1788 borderDistance 0.0
1789 ]
1790 LabelGraphics
1791 [
1792 text "
1793 FunctionalArchitectureModel class DefinedPart
1794 FunctionalArchitectureModel class
1795 "
1796 fontSize 14
1797 fontName "Consolas"
1798 alignment "left"
1799 anchor "tl"
1800 borderDistance 6
1801 ]
1802 ]
1803
1804 node
1805 [
1806 id 4
1807 graphics
1808 [
1809 w 41.800000000000004
1810 h 26
1811 type "rectangle"
1812 fill "#FFFFFF"
1813 fill2 "#FFFFFF"
1814 outline "#000000"
1815 ]
1816 LabelGraphics
1817 [
1818 text "true"
1819 outline "#000000"
1820 fill "#FFFFFF"
1821 fontSize 16
1822 fontName "Monospace"
1823 autoSizePolicy "node_width"
1824 anchor "t"
1825 borderDistance 0.0
1826 ]
1827 LabelGraphics
1828 [
1829 text "
1830 "
1831 fontSize 14
1832 fontName "Consolas"
1833 alignment "left"
1834 anchor "tl"
1835 borderDistance 6
1836 ]
1837 ]
1838
1839 node
1840 [
1841 id 5
1842 graphics
1843 [
1844 w 50.6
1845 h 26
1846 type "rectangle"
1847 fill "#FFFFFF"
1848 fill2 "#FFFFFF"
1849 outline "#000000"
1850 ]
1851 LabelGraphics
1852 [
1853 text "false"
1854 outline "#000000"
1855 fill "#FFFFFF"
1856 fontSize 16
1857 fontName "Monospace"
1858 autoSizePolicy "node_width"
1859 anchor "t"
1860 borderDistance 0.0
1861 ]
1862 LabelGraphics
1863 [
1864 text "
1865 "
1866 fontSize 14
1867 fontName "Consolas"
1868 alignment "left"
1869 anchor "tl"
1870 borderDistance 6
1871 ]
1872 ]
1873
1874 node
1875 [
1876 id 6
1877 graphics
1878 [
1879 w 192.50000000000003
1880 h 54
1881 type "rectangle"
1882 fill "#FFFFFF"
1883 fill2 "#FFFFFF"
1884 outline "#000000"
1885 ]
1886 LabelGraphics
1887 [
1888 text "null"
1889 outline "#000000"
1890 fill "#FFFFFF"
1891 fontSize 16
1892 fontName "Monospace"
1893 autoSizePolicy "node_width"
1894 anchor "t"
1895 borderDistance 0.0
1896 ]
1897 LabelGraphics
1898 [
1899 text "
1900 FunctionalElement class
1901 Function class
1902 "
1903 fontSize 14
1904 fontName "Consolas"
1905 alignment "left"
1906 anchor "tl"
1907 borderDistance 6
1908 ]
1909 ]
1910
1911 node
1912 [
1913 id 7
1914 graphics
1915 [
1916 w 112.2
1917 h 26
1918 type "rectangle"
1919 fill "#FFFFFF"
1920 fill2 "#FFFFFF"
1921 outline "#000000"
1922 ]
1923 LabelGraphics
1924 [
1925 text "New Integers"
1926 outline "#000000"
1927 fill "#FFFFFF"
1928 fontSize 16
1929 fontName "Monospace"
1930 autoSizePolicy "node_width"
1931 anchor "t"
1932 borderDistance 0.0
1933 ]
1934 LabelGraphics
1935 [
1936 text "
1937 "
1938 fontSize 14
1939 fontName "Consolas"
1940 alignment "left"
1941 anchor "tl"
1942 borderDistance 6
1943 ]
1944 ]
1945
1946 node
1947 [
1948 id 8
1949 graphics
1950 [
1951 w 85.80000000000001
1952 h 26
1953 type "rectangle"
1954 fill "#FFFFFF"
1955 fill2 "#FFFFFF"
1956 outline "#000000"
1957 ]
1958 LabelGraphics
1959 [
1960 text "New Reals"
1961 outline "#000000"
1962 fill "#FFFFFF"
1963 fontSize 16
1964 fontName "Monospace"
1965 autoSizePolicy "node_width"
1966 anchor "t"
1967 borderDistance 0.0
1968 ]
1969 LabelGraphics
1970 [
1971 text "
1972 "
1973 fontSize 14
1974 fontName "Consolas"
1975 alignment "left"
1976 anchor "tl"
1977 borderDistance 6
1978 ]
1979 ]
1980
1981 node
1982 [
1983 id 9
1984 graphics
1985 [
1986 w 103.4
1987 h 26
1988 type "rectangle"
1989 fill "#FFFFFF"
1990 fill2 "#FFFFFF"
1991 outline "#000000"
1992 ]
1993 LabelGraphics
1994 [
1995 text "New Strings"
1996 outline "#000000"
1997 fill "#FFFFFF"
1998 fontSize 16
1999 fontName "Monospace"
2000 autoSizePolicy "node_width"
2001 anchor "t"
2002 borderDistance 0.0
2003 ]
2004 LabelGraphics
2005 [
2006 text "
2007 "
2008 fontSize 14
2009 fontName "Consolas"
2010 alignment "left"
2011 anchor "tl"
2012 borderDistance 6
2013 ]
2014 ]
2015
2016 node
2017 [
2018 id 10
2019 graphics
2020 [
2021 w 103.4
2022 h 26
2023 type "rectangle"
2024 fill "#FFFFFF"
2025 fill2 "#FFFFFF"
2026 outline "#000000"
2027 ]
2028 LabelGraphics
2029 [
2030 text "New Objects"
2031 outline "#000000"
2032 fill "#FFFFFF"
2033 fontSize 16
2034 fontName "Monospace"
2035 autoSizePolicy "node_width"
2036 anchor "t"
2037 borderDistance 0.0
2038 ]
2039 LabelGraphics
2040 [
2041 text "
2042 "
2043 fontSize 14
2044 fontName "Consolas"
2045 alignment "left"
2046 anchor "tl"
2047 borderDistance 6
2048 ]
2049 ]
2050 edge
2051 [
2052 source 6
2053 target 3
2054 graphics
2055 [
2056 fill "#000000"
2057 targetArrow "standard"
2058 ]
2059 LabelGraphics
2060 [
2061 text "model reference FunctionalElement"
2062 fontSize 14
2063 fontName "Consolas"
2064 configuration "AutoFlippingLabel"
2065 model "six_pos"
2066 position "thead"
2067 ]
2068 ]
2069 edge
2070 [
2071 source 3
2072 target 6
2073 graphics
2074 [
2075 fill "#000000"
2076 width 3
2077 targetArrow "standard"
2078 ]
2079 LabelGraphics
2080 [
2081 text "rootElements reference FunctionalArchitectureModel"
2082 fontSize 14
2083 fontName "Consolas"
2084 configuration "AutoFlippingLabel"
2085 model "six_pos"
2086 position "thead"
2087 ]
2088 ]
2089 edge
2090 [
2091 source 6
2092 target 0
2093 graphics
2094 [
2095 fill "#000000"
2096 targetArrow "standard"
2097 ]
2098 LabelGraphics
2099 [
2100 text "type attribute Function"
2101 fontSize 14
2102 fontName "Consolas"
2103 configuration "AutoFlippingLabel"
2104 model "six_pos"
2105 position "thead"
2106 ]
2107 ]
2108]
2109graph
2110[
2111 node
2112 [
2113 id 0
2114 graphics
2115 [
2116 w 226.60000000000002
2117 h 40
2118 type "rectangle"
2119 fill "#FFFFFF"
2120 fill2 "#FFFFFF"
2121 outline "#000000"
2122 ]
2123 LabelGraphics
2124 [
2125 text "Root literal FunctionType"
2126 outline "#000000"
2127 fill "#FFFFFF"
2128 fontSize 16
2129 fontName "Monospace"
2130 autoSizePolicy "node_width"
2131 anchor "t"
2132 borderDistance 0.0
2133 ]
2134 LabelGraphics
2135 [
2136 text "
2137 FunctionType enum
2138 "
2139 fontSize 14
2140 fontName "Consolas"
2141 alignment "left"
2142 anchor "tl"
2143 borderDistance 6
2144 ]
2145 ]
2146
2147 node
2148 [
2149 id 1
2150 graphics
2151 [
2152 w 297.0
2153 h 40
2154 type "rectangle"
2155 fill "#FFFFFF"
2156 fill2 "#FFFFFF"
2157 outline "#000000"
2158 ]
2159 LabelGraphics
2160 [
2161 text "Intermediate literal FunctionType"
2162 outline "#000000"
2163 fill "#FFFFFF"
2164 fontSize 16
2165 fontName "Monospace"
2166 autoSizePolicy "node_width"
2167 anchor "t"
2168 borderDistance 0.0
2169 ]
2170 LabelGraphics
2171 [
2172 text "
2173 FunctionType enum
2174 "
2175 fontSize 14
2176 fontName "Consolas"
2177 alignment "left"
2178 anchor "tl"
2179 borderDistance 6
2180 ]
2181 ]
2182
2183 node
2184 [
2185 id 2
2186 graphics
2187 [
2188 w 226.60000000000002
2189 h 40
2190 type "rectangle"
2191 fill "#FFFFFF"
2192 fill2 "#FFFFFF"
2193 outline "#000000"
2194 ]
2195 LabelGraphics
2196 [
2197 text "Leaf literal FunctionType"
2198 outline "#000000"
2199 fill "#FFFFFF"
2200 fontSize 16
2201 fontName "Monospace"
2202 autoSizePolicy "node_width"
2203 anchor "t"
2204 borderDistance 0.0
2205 ]
2206 LabelGraphics
2207 [
2208 text "
2209 FunctionType enum
2210 "
2211 fontSize 14
2212 fontName "Consolas"
2213 alignment "left"
2214 anchor "tl"
2215 borderDistance 6
2216 ]
2217 ]
2218
2219 node
2220 [
2221 id 3
2222 graphics
2223 [
2224 w 361.90000000000003
2225 h 54
2226 type "rectangle"
2227 fill "#FFFFFF"
2228 fill2 "#FFFFFF"
2229 outline "#000000"
2230 ]
2231 LabelGraphics
2232 [
2233 text "o 1"
2234 outline "#000000"
2235 fill "#FFFFFF"
2236 fontSize 16
2237 fontName "Monospace"
2238 autoSizePolicy "node_width"
2239 anchor "t"
2240 borderDistance 0.0
2241 ]
2242 LabelGraphics
2243 [
2244 text "
2245 FunctionalArchitectureModel class DefinedPart
2246 FunctionalArchitectureModel class
2247 "
2248 fontSize 14
2249 fontName "Consolas"
2250 alignment "left"
2251 anchor "tl"
2252 borderDistance 6
2253 ]
2254 ]
2255
2256 node
2257 [
2258 id 4
2259 graphics
2260 [
2261 w 41.800000000000004
2262 h 26
2263 type "rectangle"
2264 fill "#FFFFFF"
2265 fill2 "#FFFFFF"
2266 outline "#000000"
2267 ]
2268 LabelGraphics
2269 [
2270 text "true"
2271 outline "#000000"
2272 fill "#FFFFFF"
2273 fontSize 16
2274 fontName "Monospace"
2275 autoSizePolicy "node_width"
2276 anchor "t"
2277 borderDistance 0.0
2278 ]
2279 LabelGraphics
2280 [
2281 text "
2282 "
2283 fontSize 14
2284 fontName "Consolas"
2285 alignment "left"
2286 anchor "tl"
2287 borderDistance 6
2288 ]
2289 ]
2290
2291 node
2292 [
2293 id 5
2294 graphics
2295 [
2296 w 50.6
2297 h 26
2298 type "rectangle"
2299 fill "#FFFFFF"
2300 fill2 "#FFFFFF"
2301 outline "#000000"
2302 ]
2303 LabelGraphics
2304 [
2305 text "false"
2306 outline "#000000"
2307 fill "#FFFFFF"
2308 fontSize 16
2309 fontName "Monospace"
2310 autoSizePolicy "node_width"
2311 anchor "t"
2312 borderDistance 0.0
2313 ]
2314 LabelGraphics
2315 [
2316 text "
2317 "
2318 fontSize 14
2319 fontName "Consolas"
2320 alignment "left"
2321 anchor "tl"
2322 borderDistance 6
2323 ]
2324 ]
2325
2326 node
2327 [
2328 id 6
2329 graphics
2330 [
2331 w 192.50000000000003
2332 h 54
2333 type "rectangle"
2334 fill "#FFFFFF"
2335 fill2 "#FFFFFF"
2336 outline "#000000"
2337 ]
2338 LabelGraphics
2339 [
2340 text "null"
2341 outline "#000000"
2342 fill "#FFFFFF"
2343 fontSize 16
2344 fontName "Monospace"
2345 autoSizePolicy "node_width"
2346 anchor "t"
2347 borderDistance 0.0
2348 ]
2349 LabelGraphics
2350 [
2351 text "
2352 FunctionalElement class
2353 Function class
2354 "
2355 fontSize 14
2356 fontName "Consolas"
2357 alignment "left"
2358 anchor "tl"
2359 borderDistance 6
2360 ]
2361 ]
2362
2363 node
2364 [
2365 id 7
2366 graphics
2367 [
2368 w 112.2
2369 h 26
2370 type "rectangle"
2371 fill "#FFFFFF"
2372 fill2 "#FFFFFF"
2373 outline "#000000"
2374 ]
2375 LabelGraphics
2376 [
2377 text "New Integers"
2378 outline "#000000"
2379 fill "#FFFFFF"
2380 fontSize 16
2381 fontName "Monospace"
2382 autoSizePolicy "node_width"
2383 anchor "t"
2384 borderDistance 0.0
2385 ]
2386 LabelGraphics
2387 [
2388 text "
2389 "
2390 fontSize 14
2391 fontName "Consolas"
2392 alignment "left"
2393 anchor "tl"
2394 borderDistance 6
2395 ]
2396 ]
2397
2398 node
2399 [
2400 id 8
2401 graphics
2402 [
2403 w 85.80000000000001
2404 h 26
2405 type "rectangle"
2406 fill "#FFFFFF"
2407 fill2 "#FFFFFF"
2408 outline "#000000"
2409 ]
2410 LabelGraphics
2411 [
2412 text "New Reals"
2413 outline "#000000"
2414 fill "#FFFFFF"
2415 fontSize 16
2416 fontName "Monospace"
2417 autoSizePolicy "node_width"
2418 anchor "t"
2419 borderDistance 0.0
2420 ]
2421 LabelGraphics
2422 [
2423 text "
2424 "
2425 fontSize 14
2426 fontName "Consolas"
2427 alignment "left"
2428 anchor "tl"
2429 borderDistance 6
2430 ]
2431 ]
2432
2433 node
2434 [
2435 id 9
2436 graphics
2437 [
2438 w 103.4
2439 h 26
2440 type "rectangle"
2441 fill "#FFFFFF"
2442 fill2 "#FFFFFF"
2443 outline "#000000"
2444 ]
2445 LabelGraphics
2446 [
2447 text "New Strings"
2448 outline "#000000"
2449 fill "#FFFFFF"
2450 fontSize 16
2451 fontName "Monospace"
2452 autoSizePolicy "node_width"
2453 anchor "t"
2454 borderDistance 0.0
2455 ]
2456 LabelGraphics
2457 [
2458 text "
2459 "
2460 fontSize 14
2461 fontName "Consolas"
2462 alignment "left"
2463 anchor "tl"
2464 borderDistance 6
2465 ]
2466 ]
2467
2468 node
2469 [
2470 id 10
2471 graphics
2472 [
2473 w 103.4
2474 h 26
2475 type "rectangle"
2476 fill "#FFFFFF"
2477 fill2 "#FFFFFF"
2478 outline "#000000"
2479 ]
2480 LabelGraphics
2481 [
2482 text "New Objects"
2483 outline "#000000"
2484 fill "#FFFFFF"
2485 fontSize 16
2486 fontName "Monospace"
2487 autoSizePolicy "node_width"
2488 anchor "t"
2489 borderDistance 0.0
2490 ]
2491 LabelGraphics
2492 [
2493 text "
2494 "
2495 fontSize 14
2496 fontName "Consolas"
2497 alignment "left"
2498 anchor "tl"
2499 borderDistance 6
2500 ]
2501 ]
2502 edge
2503 [
2504 source 6
2505 target 3
2506 graphics
2507 [
2508 fill "#000000"
2509 targetArrow "standard"
2510 ]
2511 LabelGraphics
2512 [
2513 text "model reference FunctionalElement"
2514 fontSize 14
2515 fontName "Consolas"
2516 configuration "AutoFlippingLabel"
2517 model "six_pos"
2518 position "thead"
2519 ]
2520 ]
2521 edge
2522 [
2523 source 3
2524 target 6
2525 graphics
2526 [
2527 fill "#000000"
2528 width 3
2529 targetArrow "standard"
2530 ]
2531 LabelGraphics
2532 [
2533 text "rootElements reference FunctionalArchitectureModel"
2534 fontSize 14
2535 fontName "Consolas"
2536 configuration "AutoFlippingLabel"
2537 model "six_pos"
2538 position "thead"
2539 ]
2540 ]
2541 edge
2542 [
2543 source 6
2544 target 1
2545 graphics
2546 [
2547 fill "#000000"
2548 targetArrow "standard"
2549 ]
2550 LabelGraphics
2551 [
2552 text "type attribute Function"
2553 fontSize 14
2554 fontName "Consolas"
2555 configuration "AutoFlippingLabel"
2556 model "six_pos"
2557 position "thead"
2558 ]
2559 ]
2560]
2561graph
2562[
2563 node
2564 [
2565 id 0
2566 graphics
2567 [
2568 w 226.60000000000002
2569 h 40
2570 type "rectangle"
2571 fill "#FFFFFF"
2572 fill2 "#FFFFFF"
2573 outline "#000000"
2574 ]
2575 LabelGraphics
2576 [
2577 text "Root literal FunctionType"
2578 outline "#000000"
2579 fill "#FFFFFF"
2580 fontSize 16
2581 fontName "Monospace"
2582 autoSizePolicy "node_width"
2583 anchor "t"
2584 borderDistance 0.0
2585 ]
2586 LabelGraphics
2587 [
2588 text "
2589 FunctionType enum
2590 "
2591 fontSize 14
2592 fontName "Consolas"
2593 alignment "left"
2594 anchor "tl"
2595 borderDistance 6
2596 ]
2597 ]
2598
2599 node
2600 [
2601 id 1
2602 graphics
2603 [
2604 w 297.0
2605 h 40
2606 type "rectangle"
2607 fill "#FFFFFF"
2608 fill2 "#FFFFFF"
2609 outline "#000000"
2610 ]
2611 LabelGraphics
2612 [
2613 text "Intermediate literal FunctionType"
2614 outline "#000000"
2615 fill "#FFFFFF"
2616 fontSize 16
2617 fontName "Monospace"
2618 autoSizePolicy "node_width"
2619 anchor "t"
2620 borderDistance 0.0
2621 ]
2622 LabelGraphics
2623 [
2624 text "
2625 FunctionType enum
2626 "
2627 fontSize 14
2628 fontName "Consolas"
2629 alignment "left"
2630 anchor "tl"
2631 borderDistance 6
2632 ]
2633 ]
2634
2635 node
2636 [
2637 id 2
2638 graphics
2639 [
2640 w 226.60000000000002
2641 h 40
2642 type "rectangle"
2643 fill "#FFFFFF"
2644 fill2 "#FFFFFF"
2645 outline "#000000"
2646 ]
2647 LabelGraphics
2648 [
2649 text "Leaf literal FunctionType"
2650 outline "#000000"
2651 fill "#FFFFFF"
2652 fontSize 16
2653 fontName "Monospace"
2654 autoSizePolicy "node_width"
2655 anchor "t"
2656 borderDistance 0.0
2657 ]
2658 LabelGraphics
2659 [
2660 text "
2661 FunctionType enum
2662 "
2663 fontSize 14
2664 fontName "Consolas"
2665 alignment "left"
2666 anchor "tl"
2667 borderDistance 6
2668 ]
2669 ]
2670
2671 node
2672 [
2673 id 3
2674 graphics
2675 [
2676 w 361.90000000000003
2677 h 54
2678 type "rectangle"
2679 fill "#FFFFFF"
2680 fill2 "#FFFFFF"
2681 outline "#000000"
2682 ]
2683 LabelGraphics
2684 [
2685 text "o 1"
2686 outline "#000000"
2687 fill "#FFFFFF"
2688 fontSize 16
2689 fontName "Monospace"
2690 autoSizePolicy "node_width"
2691 anchor "t"
2692 borderDistance 0.0
2693 ]
2694 LabelGraphics
2695 [
2696 text "
2697 FunctionalArchitectureModel class DefinedPart
2698 FunctionalArchitectureModel class
2699 "
2700 fontSize 14
2701 fontName "Consolas"
2702 alignment "left"
2703 anchor "tl"
2704 borderDistance 6
2705 ]
2706 ]
2707
2708 node
2709 [
2710 id 4
2711 graphics
2712 [
2713 w 41.800000000000004
2714 h 26
2715 type "rectangle"
2716 fill "#FFFFFF"
2717 fill2 "#FFFFFF"
2718 outline "#000000"
2719 ]
2720 LabelGraphics
2721 [
2722 text "true"
2723 outline "#000000"
2724 fill "#FFFFFF"
2725 fontSize 16
2726 fontName "Monospace"
2727 autoSizePolicy "node_width"
2728 anchor "t"
2729 borderDistance 0.0
2730 ]
2731 LabelGraphics
2732 [
2733 text "
2734 "
2735 fontSize 14
2736 fontName "Consolas"
2737 alignment "left"
2738 anchor "tl"
2739 borderDistance 6
2740 ]
2741 ]
2742
2743 node
2744 [
2745 id 5
2746 graphics
2747 [
2748 w 50.6
2749 h 26
2750 type "rectangle"
2751 fill "#FFFFFF"
2752 fill2 "#FFFFFF"
2753 outline "#000000"
2754 ]
2755 LabelGraphics
2756 [
2757 text "false"
2758 outline "#000000"
2759 fill "#FFFFFF"
2760 fontSize 16
2761 fontName "Monospace"
2762 autoSizePolicy "node_width"
2763 anchor "t"
2764 borderDistance 0.0
2765 ]
2766 LabelGraphics
2767 [
2768 text "
2769 "
2770 fontSize 14
2771 fontName "Consolas"
2772 alignment "left"
2773 anchor "tl"
2774 borderDistance 6
2775 ]
2776 ]
2777
2778 node
2779 [
2780 id 6
2781 graphics
2782 [
2783 w 192.50000000000003
2784 h 54
2785 type "rectangle"
2786 fill "#FFFFFF"
2787 fill2 "#FFFFFF"
2788 outline "#000000"
2789 ]
2790 LabelGraphics
2791 [
2792 text "null"
2793 outline "#000000"
2794 fill "#FFFFFF"
2795 fontSize 16
2796 fontName "Monospace"
2797 autoSizePolicy "node_width"
2798 anchor "t"
2799 borderDistance 0.0
2800 ]
2801 LabelGraphics
2802 [
2803 text "
2804 FunctionalElement class
2805 Function class
2806 "
2807 fontSize 14
2808 fontName "Consolas"
2809 alignment "left"
2810 anchor "tl"
2811 borderDistance 6
2812 ]
2813 ]
2814
2815 node
2816 [
2817 id 7
2818 graphics
2819 [
2820 w 112.2
2821 h 26
2822 type "rectangle"
2823 fill "#FFFFFF"
2824 fill2 "#FFFFFF"
2825 outline "#000000"
2826 ]
2827 LabelGraphics
2828 [
2829 text "New Integers"
2830 outline "#000000"
2831 fill "#FFFFFF"
2832 fontSize 16
2833 fontName "Monospace"
2834 autoSizePolicy "node_width"
2835 anchor "t"
2836 borderDistance 0.0
2837 ]
2838 LabelGraphics
2839 [
2840 text "
2841 "
2842 fontSize 14
2843 fontName "Consolas"
2844 alignment "left"
2845 anchor "tl"
2846 borderDistance 6
2847 ]
2848 ]
2849
2850 node
2851 [
2852 id 8
2853 graphics
2854 [
2855 w 85.80000000000001
2856 h 26
2857 type "rectangle"
2858 fill "#FFFFFF"
2859 fill2 "#FFFFFF"
2860 outline "#000000"
2861 ]
2862 LabelGraphics
2863 [
2864 text "New Reals"
2865 outline "#000000"
2866 fill "#FFFFFF"
2867 fontSize 16
2868 fontName "Monospace"
2869 autoSizePolicy "node_width"
2870 anchor "t"
2871 borderDistance 0.0
2872 ]
2873 LabelGraphics
2874 [
2875 text "
2876 "
2877 fontSize 14
2878 fontName "Consolas"
2879 alignment "left"
2880 anchor "tl"
2881 borderDistance 6
2882 ]
2883 ]
2884
2885 node
2886 [
2887 id 9
2888 graphics
2889 [
2890 w 103.4
2891 h 26
2892 type "rectangle"
2893 fill "#FFFFFF"
2894 fill2 "#FFFFFF"
2895 outline "#000000"
2896 ]
2897 LabelGraphics
2898 [
2899 text "New Strings"
2900 outline "#000000"
2901 fill "#FFFFFF"
2902 fontSize 16
2903 fontName "Monospace"
2904 autoSizePolicy "node_width"
2905 anchor "t"
2906 borderDistance 0.0
2907 ]
2908 LabelGraphics
2909 [
2910 text "
2911 "
2912 fontSize 14
2913 fontName "Consolas"
2914 alignment "left"
2915 anchor "tl"
2916 borderDistance 6
2917 ]
2918 ]
2919
2920 node
2921 [
2922 id 10
2923 graphics
2924 [
2925 w 103.4
2926 h 26
2927 type "rectangle"
2928 fill "#FFFFFF"
2929 fill2 "#FFFFFF"
2930 outline "#000000"
2931 ]
2932 LabelGraphics
2933 [
2934 text "New Objects"
2935 outline "#000000"
2936 fill "#FFFFFF"
2937 fontSize 16
2938 fontName "Monospace"
2939 autoSizePolicy "node_width"
2940 anchor "t"
2941 borderDistance 0.0
2942 ]
2943 LabelGraphics
2944 [
2945 text "
2946 "
2947 fontSize 14
2948 fontName "Consolas"
2949 alignment "left"
2950 anchor "tl"
2951 borderDistance 6
2952 ]
2953 ]
2954 edge
2955 [
2956 source 6
2957 target 3
2958 graphics
2959 [
2960 fill "#000000"
2961 targetArrow "standard"
2962 ]
2963 LabelGraphics
2964 [
2965 text "model reference FunctionalElement"
2966 fontSize 14
2967 fontName "Consolas"
2968 configuration "AutoFlippingLabel"
2969 model "six_pos"
2970 position "thead"
2971 ]
2972 ]
2973 edge
2974 [
2975 source 3
2976 target 6
2977 graphics
2978 [
2979 fill "#000000"
2980 width 3
2981 targetArrow "standard"
2982 ]
2983 LabelGraphics
2984 [
2985 text "rootElements reference FunctionalArchitectureModel"
2986 fontSize 14
2987 fontName "Consolas"
2988 configuration "AutoFlippingLabel"
2989 model "six_pos"
2990 position "thead"
2991 ]
2992 ]
2993 edge
2994 [
2995 source 6
2996 target 2
2997 graphics
2998 [
2999 fill "#000000"
3000 targetArrow "standard"
3001 ]
3002 LabelGraphics
3003 [
3004 text "type attribute Function"
3005 fontSize 14
3006 fontName "Consolas"
3007 configuration "AutoFlippingLabel"
3008 model "six_pos"
3009 position "thead"
3010 ]
3011 ]
3012]
3013graph
3014[
3015 node
3016 [
3017 id 0
3018 graphics
3019 [
3020 w 226.60000000000002
3021 h 40
3022 type "rectangle"
3023 fill "#FFFFFF"
3024 fill2 "#FFFFFF"
3025 outline "#000000"
3026 ]
3027 LabelGraphics
3028 [
3029 text "Root literal FunctionType"
3030 outline "#000000"
3031 fill "#FFFFFF"
3032 fontSize 16
3033 fontName "Monospace"
3034 autoSizePolicy "node_width"
3035 anchor "t"
3036 borderDistance 0.0
3037 ]
3038 LabelGraphics
3039 [
3040 text "
3041 FunctionType enum
3042 "
3043 fontSize 14
3044 fontName "Consolas"
3045 alignment "left"
3046 anchor "tl"
3047 borderDistance 6
3048 ]
3049 ]
3050
3051 node
3052 [
3053 id 1
3054 graphics
3055 [
3056 w 297.0
3057 h 40
3058 type "rectangle"
3059 fill "#FFFFFF"
3060 fill2 "#FFFFFF"
3061 outline "#000000"
3062 ]
3063 LabelGraphics
3064 [
3065 text "Intermediate literal FunctionType"
3066 outline "#000000"
3067 fill "#FFFFFF"
3068 fontSize 16
3069 fontName "Monospace"
3070 autoSizePolicy "node_width"
3071 anchor "t"
3072 borderDistance 0.0
3073 ]
3074 LabelGraphics
3075 [
3076 text "
3077 FunctionType enum
3078 "
3079 fontSize 14
3080 fontName "Consolas"
3081 alignment "left"
3082 anchor "tl"
3083 borderDistance 6
3084 ]
3085 ]
3086
3087 node
3088 [
3089 id 2
3090 graphics
3091 [
3092 w 226.60000000000002
3093 h 40
3094 type "rectangle"
3095 fill "#FFFFFF"
3096 fill2 "#FFFFFF"
3097 outline "#000000"
3098 ]
3099 LabelGraphics
3100 [
3101 text "Leaf literal FunctionType"
3102 outline "#000000"
3103 fill "#FFFFFF"
3104 fontSize 16
3105 fontName "Monospace"
3106 autoSizePolicy "node_width"
3107 anchor "t"
3108 borderDistance 0.0
3109 ]
3110 LabelGraphics
3111 [
3112 text "
3113 FunctionType enum
3114 "
3115 fontSize 14
3116 fontName "Consolas"
3117 alignment "left"
3118 anchor "tl"
3119 borderDistance 6
3120 ]
3121 ]
3122
3123 node
3124 [
3125 id 3
3126 graphics
3127 [
3128 w 361.90000000000003
3129 h 54
3130 type "rectangle"
3131 fill "#FFFFFF"
3132 fill2 "#FFFFFF"
3133 outline "#000000"
3134 ]
3135 LabelGraphics
3136 [
3137 text "o 1"
3138 outline "#000000"
3139 fill "#FFFFFF"
3140 fontSize 16
3141 fontName "Monospace"
3142 autoSizePolicy "node_width"
3143 anchor "t"
3144 borderDistance 0.0
3145 ]
3146 LabelGraphics
3147 [
3148 text "
3149 FunctionalArchitectureModel class DefinedPart
3150 FunctionalArchitectureModel class
3151 "
3152 fontSize 14
3153 fontName "Consolas"
3154 alignment "left"
3155 anchor "tl"
3156 borderDistance 6
3157 ]
3158 ]
3159
3160 node
3161 [
3162 id 4
3163 graphics
3164 [
3165 w 41.800000000000004
3166 h 26
3167 type "rectangle"
3168 fill "#FFFFFF"
3169 fill2 "#FFFFFF"
3170 outline "#000000"
3171 ]
3172 LabelGraphics
3173 [
3174 text "true"
3175 outline "#000000"
3176 fill "#FFFFFF"
3177 fontSize 16
3178 fontName "Monospace"
3179 autoSizePolicy "node_width"
3180 anchor "t"
3181 borderDistance 0.0
3182 ]
3183 LabelGraphics
3184 [
3185 text "
3186 "
3187 fontSize 14
3188 fontName "Consolas"
3189 alignment "left"
3190 anchor "tl"
3191 borderDistance 6
3192 ]
3193 ]
3194
3195 node
3196 [
3197 id 5
3198 graphics
3199 [
3200 w 50.6
3201 h 26
3202 type "rectangle"
3203 fill "#FFFFFF"
3204 fill2 "#FFFFFF"
3205 outline "#000000"
3206 ]
3207 LabelGraphics
3208 [
3209 text "false"
3210 outline "#000000"
3211 fill "#FFFFFF"
3212 fontSize 16
3213 fontName "Monospace"
3214 autoSizePolicy "node_width"
3215 anchor "t"
3216 borderDistance 0.0
3217 ]
3218 LabelGraphics
3219 [
3220 text "
3221 "
3222 fontSize 14
3223 fontName "Consolas"
3224 alignment "left"
3225 anchor "tl"
3226 borderDistance 6
3227 ]
3228 ]
3229
3230 node
3231 [
3232 id 6
3233 graphics
3234 [
3235 w 192.50000000000003
3236 h 54
3237 type "rectangle"
3238 fill "#FFFFFF"
3239 fill2 "#FFFFFF"
3240 outline "#000000"
3241 ]
3242 LabelGraphics
3243 [
3244 text "null"
3245 outline "#000000"
3246 fill "#FFFFFF"
3247 fontSize 16
3248 fontName "Monospace"
3249 autoSizePolicy "node_width"
3250 anchor "t"
3251 borderDistance 0.0
3252 ]
3253 LabelGraphics
3254 [
3255 text "
3256 FunctionalElement class
3257 Function class
3258 "
3259 fontSize 14
3260 fontName "Consolas"
3261 alignment "left"
3262 anchor "tl"
3263 borderDistance 6
3264 ]
3265 ]
3266
3267 node
3268 [
3269 id 7
3270 graphics
3271 [
3272 w 112.2
3273 h 26
3274 type "rectangle"
3275 fill "#FFFFFF"
3276 fill2 "#FFFFFF"
3277 outline "#000000"
3278 ]
3279 LabelGraphics
3280 [
3281 text "New Integers"
3282 outline "#000000"
3283 fill "#FFFFFF"
3284 fontSize 16
3285 fontName "Monospace"
3286 autoSizePolicy "node_width"
3287 anchor "t"
3288 borderDistance 0.0
3289 ]
3290 LabelGraphics
3291 [
3292 text "
3293 "
3294 fontSize 14
3295 fontName "Consolas"
3296 alignment "left"
3297 anchor "tl"
3298 borderDistance 6
3299 ]
3300 ]
3301
3302 node
3303 [
3304 id 8
3305 graphics
3306 [
3307 w 85.80000000000001
3308 h 26
3309 type "rectangle"
3310 fill "#FFFFFF"
3311 fill2 "#FFFFFF"
3312 outline "#000000"
3313 ]
3314 LabelGraphics
3315 [
3316 text "New Reals"
3317 outline "#000000"
3318 fill "#FFFFFF"
3319 fontSize 16
3320 fontName "Monospace"
3321 autoSizePolicy "node_width"
3322 anchor "t"
3323 borderDistance 0.0
3324 ]
3325 LabelGraphics
3326 [
3327 text "
3328 "
3329 fontSize 14
3330 fontName "Consolas"
3331 alignment "left"
3332 anchor "tl"
3333 borderDistance 6
3334 ]
3335 ]
3336
3337 node
3338 [
3339 id 9
3340 graphics
3341 [
3342 w 103.4
3343 h 26
3344 type "rectangle"
3345 fill "#FFFFFF"
3346 fill2 "#FFFFFF"
3347 outline "#000000"
3348 ]
3349 LabelGraphics
3350 [
3351 text "New Strings"
3352 outline "#000000"
3353 fill "#FFFFFF"
3354 fontSize 16
3355 fontName "Monospace"
3356 autoSizePolicy "node_width"
3357 anchor "t"
3358 borderDistance 0.0
3359 ]
3360 LabelGraphics
3361 [
3362 text "
3363 "
3364 fontSize 14
3365 fontName "Consolas"
3366 alignment "left"
3367 anchor "tl"
3368 borderDistance 6
3369 ]
3370 ]
3371
3372 node
3373 [
3374 id 10
3375 graphics
3376 [
3377 w 103.4
3378 h 26
3379 type "rectangle"
3380 fill "#FFFFFF"
3381 fill2 "#FFFFFF"
3382 outline "#000000"
3383 ]
3384 LabelGraphics
3385 [
3386 text "New Objects"
3387 outline "#000000"
3388 fill "#FFFFFF"
3389 fontSize 16
3390 fontName "Monospace"
3391 autoSizePolicy "node_width"
3392 anchor "t"
3393 borderDistance 0.0
3394 ]
3395 LabelGraphics
3396 [
3397 text "
3398 "
3399 fontSize 14
3400 fontName "Consolas"
3401 alignment "left"
3402 anchor "tl"
3403 borderDistance 6
3404 ]
3405 ]
3406 edge
3407 [
3408 source 6
3409 target 3
3410 graphics
3411 [
3412 fill "#000000"
3413 targetArrow "standard"
3414 ]
3415 LabelGraphics
3416 [
3417 text "model reference FunctionalElement"
3418 fontSize 14
3419 fontName "Consolas"
3420 configuration "AutoFlippingLabel"
3421 model "six_pos"
3422 position "thead"
3423 ]
3424 ]
3425 edge
3426 [
3427 source 3
3428 target 6
3429 graphics
3430 [
3431 fill "#000000"
3432 width 3
3433 targetArrow "standard"
3434 ]
3435 LabelGraphics
3436 [
3437 text "rootElements reference FunctionalArchitectureModel"
3438 fontSize 14
3439 fontName "Consolas"
3440 configuration "AutoFlippingLabel"
3441 model "six_pos"
3442 position "thead"
3443 ]
3444 ]
3445 edge
3446 [
3447 source 6
3448 target 1
3449 graphics
3450 [
3451 fill "#000000"
3452 targetArrow "standard"
3453 ]
3454 LabelGraphics
3455 [
3456 text "type attribute Function"
3457 fontSize 14
3458 fontName "Consolas"
3459 configuration "AutoFlippingLabel"
3460 model "six_pos"
3461 position "thead"
3462 ]
3463 ]
3464]
3465graph
3466[
3467 node
3468 [
3469 id 0
3470 graphics
3471 [
3472 w 226.60000000000002
3473 h 40
3474 type "rectangle"
3475 fill "#FFFFFF"
3476 fill2 "#FFFFFF"
3477 outline "#000000"
3478 ]
3479 LabelGraphics
3480 [
3481 text "Root literal FunctionType"
3482 outline "#000000"
3483 fill "#FFFFFF"
3484 fontSize 16
3485 fontName "Monospace"
3486 autoSizePolicy "node_width"
3487 anchor "t"
3488 borderDistance 0.0
3489 ]
3490 LabelGraphics
3491 [
3492 text "
3493 FunctionType enum
3494 "
3495 fontSize 14
3496 fontName "Consolas"
3497 alignment "left"
3498 anchor "tl"
3499 borderDistance 6
3500 ]
3501 ]
3502
3503 node
3504 [
3505 id 1
3506 graphics
3507 [
3508 w 297.0
3509 h 40
3510 type "rectangle"
3511 fill "#FFFFFF"
3512 fill2 "#FFFFFF"
3513 outline "#000000"
3514 ]
3515 LabelGraphics
3516 [
3517 text "Intermediate literal FunctionType"
3518 outline "#000000"
3519 fill "#FFFFFF"
3520 fontSize 16
3521 fontName "Monospace"
3522 autoSizePolicy "node_width"
3523 anchor "t"
3524 borderDistance 0.0
3525 ]
3526 LabelGraphics
3527 [
3528 text "
3529 FunctionType enum
3530 "
3531 fontSize 14
3532 fontName "Consolas"
3533 alignment "left"
3534 anchor "tl"
3535 borderDistance 6
3536 ]
3537 ]
3538
3539 node
3540 [
3541 id 2
3542 graphics
3543 [
3544 w 226.60000000000002
3545 h 40
3546 type "rectangle"
3547 fill "#FFFFFF"
3548 fill2 "#FFFFFF"
3549 outline "#000000"
3550 ]
3551 LabelGraphics
3552 [
3553 text "Leaf literal FunctionType"
3554 outline "#000000"
3555 fill "#FFFFFF"
3556 fontSize 16
3557 fontName "Monospace"
3558 autoSizePolicy "node_width"
3559 anchor "t"
3560 borderDistance 0.0
3561 ]
3562 LabelGraphics
3563 [
3564 text "
3565 FunctionType enum
3566 "
3567 fontSize 14
3568 fontName "Consolas"
3569 alignment "left"
3570 anchor "tl"
3571 borderDistance 6
3572 ]
3573 ]
3574
3575 node
3576 [
3577 id 3
3578 graphics
3579 [
3580 w 361.90000000000003
3581 h 54
3582 type "rectangle"
3583 fill "#FFFFFF"
3584 fill2 "#FFFFFF"
3585 outline "#000000"
3586 ]
3587 LabelGraphics
3588 [
3589 text "o 1"
3590 outline "#000000"
3591 fill "#FFFFFF"
3592 fontSize 16
3593 fontName "Monospace"
3594 autoSizePolicy "node_width"
3595 anchor "t"
3596 borderDistance 0.0
3597 ]
3598 LabelGraphics
3599 [
3600 text "
3601 FunctionalArchitectureModel class DefinedPart
3602 FunctionalArchitectureModel class
3603 "
3604 fontSize 14
3605 fontName "Consolas"
3606 alignment "left"
3607 anchor "tl"
3608 borderDistance 6
3609 ]
3610 ]
3611
3612 node
3613 [
3614 id 4
3615 graphics
3616 [
3617 w 41.800000000000004
3618 h 26
3619 type "rectangle"
3620 fill "#FFFFFF"
3621 fill2 "#FFFFFF"
3622 outline "#000000"
3623 ]
3624 LabelGraphics
3625 [
3626 text "true"
3627 outline "#000000"
3628 fill "#FFFFFF"
3629 fontSize 16
3630 fontName "Monospace"
3631 autoSizePolicy "node_width"
3632 anchor "t"
3633 borderDistance 0.0
3634 ]
3635 LabelGraphics
3636 [
3637 text "
3638 "
3639 fontSize 14
3640 fontName "Consolas"
3641 alignment "left"
3642 anchor "tl"
3643 borderDistance 6
3644 ]
3645 ]
3646
3647 node
3648 [
3649 id 5
3650 graphics
3651 [
3652 w 50.6
3653 h 26
3654 type "rectangle"
3655 fill "#FFFFFF"
3656 fill2 "#FFFFFF"
3657 outline "#000000"
3658 ]
3659 LabelGraphics
3660 [
3661 text "false"
3662 outline "#000000"
3663 fill "#FFFFFF"
3664 fontSize 16
3665 fontName "Monospace"
3666 autoSizePolicy "node_width"
3667 anchor "t"
3668 borderDistance 0.0
3669 ]
3670 LabelGraphics
3671 [
3672 text "
3673 "
3674 fontSize 14
3675 fontName "Consolas"
3676 alignment "left"
3677 anchor "tl"
3678 borderDistance 6
3679 ]
3680 ]
3681
3682 node
3683 [
3684 id 6
3685 graphics
3686 [
3687 w 192.50000000000003
3688 h 54
3689 type "rectangle"
3690 fill "#FFFFFF"
3691 fill2 "#FFFFFF"
3692 outline "#000000"
3693 ]
3694 LabelGraphics
3695 [
3696 text "null"
3697 outline "#000000"
3698 fill "#FFFFFF"
3699 fontSize 16
3700 fontName "Monospace"
3701 autoSizePolicy "node_width"
3702 anchor "t"
3703 borderDistance 0.0
3704 ]
3705 LabelGraphics
3706 [
3707 text "
3708 FunctionalElement class
3709 Function class
3710 "
3711 fontSize 14
3712 fontName "Consolas"
3713 alignment "left"
3714 anchor "tl"
3715 borderDistance 6
3716 ]
3717 ]
3718
3719 node
3720 [
3721 id 7
3722 graphics
3723 [
3724 w 112.2
3725 h 26
3726 type "rectangle"
3727 fill "#FFFFFF"
3728 fill2 "#FFFFFF"
3729 outline "#000000"
3730 ]
3731 LabelGraphics
3732 [
3733 text "New Integers"
3734 outline "#000000"
3735 fill "#FFFFFF"
3736 fontSize 16
3737 fontName "Monospace"
3738 autoSizePolicy "node_width"
3739 anchor "t"
3740 borderDistance 0.0
3741 ]
3742 LabelGraphics
3743 [
3744 text "
3745 "
3746 fontSize 14
3747 fontName "Consolas"
3748 alignment "left"
3749 anchor "tl"
3750 borderDistance 6
3751 ]
3752 ]
3753
3754 node
3755 [
3756 id 8
3757 graphics
3758 [
3759 w 85.80000000000001
3760 h 26
3761 type "rectangle"
3762 fill "#FFFFFF"
3763 fill2 "#FFFFFF"
3764 outline "#000000"
3765 ]
3766 LabelGraphics
3767 [
3768 text "New Reals"
3769 outline "#000000"
3770 fill "#FFFFFF"
3771 fontSize 16
3772 fontName "Monospace"
3773 autoSizePolicy "node_width"
3774 anchor "t"
3775 borderDistance 0.0
3776 ]
3777 LabelGraphics
3778 [
3779 text "
3780 "
3781 fontSize 14
3782 fontName "Consolas"
3783 alignment "left"
3784 anchor "tl"
3785 borderDistance 6
3786 ]
3787 ]
3788
3789 node
3790 [
3791 id 9
3792 graphics
3793 [
3794 w 103.4
3795 h 26
3796 type "rectangle"
3797 fill "#FFFFFF"
3798 fill2 "#FFFFFF"
3799 outline "#000000"
3800 ]
3801 LabelGraphics
3802 [
3803 text "New Strings"
3804 outline "#000000"
3805 fill "#FFFFFF"
3806 fontSize 16
3807 fontName "Monospace"
3808 autoSizePolicy "node_width"
3809 anchor "t"
3810 borderDistance 0.0
3811 ]
3812 LabelGraphics
3813 [
3814 text "
3815 "
3816 fontSize 14
3817 fontName "Consolas"
3818 alignment "left"
3819 anchor "tl"
3820 borderDistance 6
3821 ]
3822 ]
3823
3824 node
3825 [
3826 id 10
3827 graphics
3828 [
3829 w 103.4
3830 h 26
3831 type "rectangle"
3832 fill "#FFFFFF"
3833 fill2 "#FFFFFF"
3834 outline "#000000"
3835 ]
3836 LabelGraphics
3837 [
3838 text "New Objects"
3839 outline "#000000"
3840 fill "#FFFFFF"
3841 fontSize 16
3842 fontName "Monospace"
3843 autoSizePolicy "node_width"
3844 anchor "t"
3845 borderDistance 0.0
3846 ]
3847 LabelGraphics
3848 [
3849 text "
3850 "
3851 fontSize 14
3852 fontName "Consolas"
3853 alignment "left"
3854 anchor "tl"
3855 borderDistance 6
3856 ]
3857 ]
3858 edge
3859 [
3860 source 3
3861 target 6
3862 graphics
3863 [
3864 fill "#000000"
3865 width 3
3866 targetArrow "standard"
3867 ]
3868 LabelGraphics
3869 [
3870 text "rootElements reference FunctionalArchitectureModel"
3871 fontSize 14
3872 fontName "Consolas"
3873 configuration "AutoFlippingLabel"
3874 model "six_pos"
3875 position "thead"
3876 ]
3877 ]
3878]
3879graph
3880[
3881 node
3882 [
3883 id 0
3884 graphics
3885 [
3886 w 226.60000000000002
3887 h 40
3888 type "rectangle"
3889 fill "#FFFFFF"
3890 fill2 "#FFFFFF"
3891 outline "#000000"
3892 ]
3893 LabelGraphics
3894 [
3895 text "Root literal FunctionType"
3896 outline "#000000"
3897 fill "#FFFFFF"
3898 fontSize 16
3899 fontName "Monospace"
3900 autoSizePolicy "node_width"
3901 anchor "t"
3902 borderDistance 0.0
3903 ]
3904 LabelGraphics
3905 [
3906 text "
3907 FunctionType enum
3908 "
3909 fontSize 14
3910 fontName "Consolas"
3911 alignment "left"
3912 anchor "tl"
3913 borderDistance 6
3914 ]
3915 ]
3916
3917 node
3918 [
3919 id 1
3920 graphics
3921 [
3922 w 297.0
3923 h 40
3924 type "rectangle"
3925 fill "#FFFFFF"
3926 fill2 "#FFFFFF"
3927 outline "#000000"
3928 ]
3929 LabelGraphics
3930 [
3931 text "Intermediate literal FunctionType"
3932 outline "#000000"
3933 fill "#FFFFFF"
3934 fontSize 16
3935 fontName "Monospace"
3936 autoSizePolicy "node_width"
3937 anchor "t"
3938 borderDistance 0.0
3939 ]
3940 LabelGraphics
3941 [
3942 text "
3943 FunctionType enum
3944 "
3945 fontSize 14
3946 fontName "Consolas"
3947 alignment "left"
3948 anchor "tl"
3949 borderDistance 6
3950 ]
3951 ]
3952
3953 node
3954 [
3955 id 2
3956 graphics
3957 [
3958 w 226.60000000000002
3959 h 40
3960 type "rectangle"
3961 fill "#FFFFFF"
3962 fill2 "#FFFFFF"
3963 outline "#000000"
3964 ]
3965 LabelGraphics
3966 [
3967 text "Leaf literal FunctionType"
3968 outline "#000000"
3969 fill "#FFFFFF"
3970 fontSize 16
3971 fontName "Monospace"
3972 autoSizePolicy "node_width"
3973 anchor "t"
3974 borderDistance 0.0
3975 ]
3976 LabelGraphics
3977 [
3978 text "
3979 FunctionType enum
3980 "
3981 fontSize 14
3982 fontName "Consolas"
3983 alignment "left"
3984 anchor "tl"
3985 borderDistance 6
3986 ]
3987 ]
3988
3989 node
3990 [
3991 id 3
3992 graphics
3993 [
3994 w 361.90000000000003
3995 h 54
3996 type "rectangle"
3997 fill "#FFFFFF"
3998 fill2 "#FFFFFF"
3999 outline "#000000"
4000 ]
4001 LabelGraphics
4002 [
4003 text "o 1"
4004 outline "#000000"
4005 fill "#FFFFFF"
4006 fontSize 16
4007 fontName "Monospace"
4008 autoSizePolicy "node_width"
4009 anchor "t"
4010 borderDistance 0.0
4011 ]
4012 LabelGraphics
4013 [
4014 text "
4015 FunctionalArchitectureModel class DefinedPart
4016 FunctionalArchitectureModel class
4017 "
4018 fontSize 14
4019 fontName "Consolas"
4020 alignment "left"
4021 anchor "tl"
4022 borderDistance 6
4023 ]
4024 ]
4025
4026 node
4027 [
4028 id 4
4029 graphics
4030 [
4031 w 41.800000000000004
4032 h 26
4033 type "rectangle"
4034 fill "#FFFFFF"
4035 fill2 "#FFFFFF"
4036 outline "#000000"
4037 ]
4038 LabelGraphics
4039 [
4040 text "true"
4041 outline "#000000"
4042 fill "#FFFFFF"
4043 fontSize 16
4044 fontName "Monospace"
4045 autoSizePolicy "node_width"
4046 anchor "t"
4047 borderDistance 0.0
4048 ]
4049 LabelGraphics
4050 [
4051 text "
4052 "
4053 fontSize 14
4054 fontName "Consolas"
4055 alignment "left"
4056 anchor "tl"
4057 borderDistance 6
4058 ]
4059 ]
4060
4061 node
4062 [
4063 id 5
4064 graphics
4065 [
4066 w 50.6
4067 h 26
4068 type "rectangle"
4069 fill "#FFFFFF"
4070 fill2 "#FFFFFF"
4071 outline "#000000"
4072 ]
4073 LabelGraphics
4074 [
4075 text "false"
4076 outline "#000000"
4077 fill "#FFFFFF"
4078 fontSize 16
4079 fontName "Monospace"
4080 autoSizePolicy "node_width"
4081 anchor "t"
4082 borderDistance 0.0
4083 ]
4084 LabelGraphics
4085 [
4086 text "
4087 "
4088 fontSize 14
4089 fontName "Consolas"
4090 alignment "left"
4091 anchor "tl"
4092 borderDistance 6
4093 ]
4094 ]
4095
4096 node
4097 [
4098 id 6
4099 graphics
4100 [
4101 w 192.50000000000003
4102 h 54
4103 type "rectangle"
4104 fill "#FFFFFF"
4105 fill2 "#FFFFFF"
4106 outline "#000000"
4107 ]
4108 LabelGraphics
4109 [
4110 text "null"
4111 outline "#000000"
4112 fill "#FFFFFF"
4113 fontSize 16
4114 fontName "Monospace"
4115 autoSizePolicy "node_width"
4116 anchor "t"
4117 borderDistance 0.0
4118 ]
4119 LabelGraphics
4120 [
4121 text "
4122 FunctionalElement class
4123 Function class
4124 "
4125 fontSize 14
4126 fontName "Consolas"
4127 alignment "left"
4128 anchor "tl"
4129 borderDistance 6
4130 ]
4131 ]
4132
4133 node
4134 [
4135 id 7
4136 graphics
4137 [
4138 w 112.2
4139 h 26
4140 type "rectangle"
4141 fill "#FFFFFF"
4142 fill2 "#FFFFFF"
4143 outline "#000000"
4144 ]
4145 LabelGraphics
4146 [
4147 text "New Integers"
4148 outline "#000000"
4149 fill "#FFFFFF"
4150 fontSize 16
4151 fontName "Monospace"
4152 autoSizePolicy "node_width"
4153 anchor "t"
4154 borderDistance 0.0
4155 ]
4156 LabelGraphics
4157 [
4158 text "
4159 "
4160 fontSize 14
4161 fontName "Consolas"
4162 alignment "left"
4163 anchor "tl"
4164 borderDistance 6
4165 ]
4166 ]
4167
4168 node
4169 [
4170 id 8
4171 graphics
4172 [
4173 w 85.80000000000001
4174 h 26
4175 type "rectangle"
4176 fill "#FFFFFF"
4177 fill2 "#FFFFFF"
4178 outline "#000000"
4179 ]
4180 LabelGraphics
4181 [
4182 text "New Reals"
4183 outline "#000000"
4184 fill "#FFFFFF"
4185 fontSize 16
4186 fontName "Monospace"
4187 autoSizePolicy "node_width"
4188 anchor "t"
4189 borderDistance 0.0
4190 ]
4191 LabelGraphics
4192 [
4193 text "
4194 "
4195 fontSize 14
4196 fontName "Consolas"
4197 alignment "left"
4198 anchor "tl"
4199 borderDistance 6
4200 ]
4201 ]
4202
4203 node
4204 [
4205 id 9
4206 graphics
4207 [
4208 w 103.4
4209 h 26
4210 type "rectangle"
4211 fill "#FFFFFF"
4212 fill2 "#FFFFFF"
4213 outline "#000000"
4214 ]
4215 LabelGraphics
4216 [
4217 text "New Strings"
4218 outline "#000000"
4219 fill "#FFFFFF"
4220 fontSize 16
4221 fontName "Monospace"
4222 autoSizePolicy "node_width"
4223 anchor "t"
4224 borderDistance 0.0
4225 ]
4226 LabelGraphics
4227 [
4228 text "
4229 "
4230 fontSize 14
4231 fontName "Consolas"
4232 alignment "left"
4233 anchor "tl"
4234 borderDistance 6
4235 ]
4236 ]
4237
4238 node
4239 [
4240 id 10
4241 graphics
4242 [
4243 w 103.4
4244 h 26
4245 type "rectangle"
4246 fill "#FFFFFF"
4247 fill2 "#FFFFFF"
4248 outline "#000000"
4249 ]
4250 LabelGraphics
4251 [
4252 text "New Objects"
4253 outline "#000000"
4254 fill "#FFFFFF"
4255 fontSize 16
4256 fontName "Monospace"
4257 autoSizePolicy "node_width"
4258 anchor "t"
4259 borderDistance 0.0
4260 ]
4261 LabelGraphics
4262 [
4263 text "
4264 "
4265 fontSize 14
4266 fontName "Consolas"
4267 alignment "left"
4268 anchor "tl"
4269 borderDistance 6
4270 ]
4271 ]
4272 edge
4273 [
4274 source 6
4275 target 3
4276 graphics
4277 [
4278 fill "#000000"
4279 targetArrow "standard"
4280 ]
4281 LabelGraphics
4282 [
4283 text "model reference FunctionalElement"
4284 fontSize 14
4285 fontName "Consolas"
4286 configuration "AutoFlippingLabel"
4287 model "six_pos"
4288 position "thead"
4289 ]
4290 ]
4291 edge
4292 [
4293 source 3
4294 target 6
4295 graphics
4296 [
4297 fill "#000000"
4298 width 3
4299 targetArrow "standard"
4300 ]
4301 LabelGraphics
4302 [
4303 text "rootElements reference FunctionalArchitectureModel"
4304 fontSize 14
4305 fontName "Consolas"
4306 configuration "AutoFlippingLabel"
4307 model "six_pos"
4308 position "thead"
4309 ]
4310 ]
4311 edge
4312 [
4313 source 6
4314 target 2
4315 graphics
4316 [
4317 fill "#000000"
4318 targetArrow "standard"
4319 ]
4320 LabelGraphics
4321 [
4322 text "type attribute Function"
4323 fontSize 14
4324 fontName "Consolas"
4325 configuration "AutoFlippingLabel"
4326 model "six_pos"
4327 position "thead"
4328 ]
4329 ]
4330]
4331graph
4332[
4333 node
4334 [
4335 id 0
4336 graphics
4337 [
4338 w 226.60000000000002
4339 h 40
4340 type "rectangle"
4341 fill "#FFFFFF"
4342 fill2 "#FFFFFF"
4343 outline "#000000"
4344 ]
4345 LabelGraphics
4346 [
4347 text "Root literal FunctionType"
4348 outline "#000000"
4349 fill "#FFFFFF"
4350 fontSize 16
4351 fontName "Monospace"
4352 autoSizePolicy "node_width"
4353 anchor "t"
4354 borderDistance 0.0
4355 ]
4356 LabelGraphics
4357 [
4358 text "
4359 FunctionType enum
4360 "
4361 fontSize 14
4362 fontName "Consolas"
4363 alignment "left"
4364 anchor "tl"
4365 borderDistance 6
4366 ]
4367 ]
4368
4369 node
4370 [
4371 id 1
4372 graphics
4373 [
4374 w 297.0
4375 h 40
4376 type "rectangle"
4377 fill "#FFFFFF"
4378 fill2 "#FFFFFF"
4379 outline "#000000"
4380 ]
4381 LabelGraphics
4382 [
4383 text "Intermediate literal FunctionType"
4384 outline "#000000"
4385 fill "#FFFFFF"
4386 fontSize 16
4387 fontName "Monospace"
4388 autoSizePolicy "node_width"
4389 anchor "t"
4390 borderDistance 0.0
4391 ]
4392 LabelGraphics
4393 [
4394 text "
4395 FunctionType enum
4396 "
4397 fontSize 14
4398 fontName "Consolas"
4399 alignment "left"
4400 anchor "tl"
4401 borderDistance 6
4402 ]
4403 ]
4404
4405 node
4406 [
4407 id 2
4408 graphics
4409 [
4410 w 226.60000000000002
4411 h 40
4412 type "rectangle"
4413 fill "#FFFFFF"
4414 fill2 "#FFFFFF"
4415 outline "#000000"
4416 ]
4417 LabelGraphics
4418 [
4419 text "Leaf literal FunctionType"
4420 outline "#000000"
4421 fill "#FFFFFF"
4422 fontSize 16
4423 fontName "Monospace"
4424 autoSizePolicy "node_width"
4425 anchor "t"
4426 borderDistance 0.0
4427 ]
4428 LabelGraphics
4429 [
4430 text "
4431 FunctionType enum
4432 "
4433 fontSize 14
4434 fontName "Consolas"
4435 alignment "left"
4436 anchor "tl"
4437 borderDistance 6
4438 ]
4439 ]
4440
4441 node
4442 [
4443 id 3
4444 graphics
4445 [
4446 w 361.90000000000003
4447 h 54
4448 type "rectangle"
4449 fill "#FFFFFF"
4450 fill2 "#FFFFFF"
4451 outline "#000000"
4452 ]
4453 LabelGraphics
4454 [
4455 text "o 1"
4456 outline "#000000"
4457 fill "#FFFFFF"
4458 fontSize 16
4459 fontName "Monospace"
4460 autoSizePolicy "node_width"
4461 anchor "t"
4462 borderDistance 0.0
4463 ]
4464 LabelGraphics
4465 [
4466 text "
4467 FunctionalArchitectureModel class DefinedPart
4468 FunctionalArchitectureModel class
4469 "
4470 fontSize 14
4471 fontName "Consolas"
4472 alignment "left"
4473 anchor "tl"
4474 borderDistance 6
4475 ]
4476 ]
4477
4478 node
4479 [
4480 id 4
4481 graphics
4482 [
4483 w 41.800000000000004
4484 h 26
4485 type "rectangle"
4486 fill "#FFFFFF"
4487 fill2 "#FFFFFF"
4488 outline "#000000"
4489 ]
4490 LabelGraphics
4491 [
4492 text "true"
4493 outline "#000000"
4494 fill "#FFFFFF"
4495 fontSize 16
4496 fontName "Monospace"
4497 autoSizePolicy "node_width"
4498 anchor "t"
4499 borderDistance 0.0
4500 ]
4501 LabelGraphics
4502 [
4503 text "
4504 "
4505 fontSize 14
4506 fontName "Consolas"
4507 alignment "left"
4508 anchor "tl"
4509 borderDistance 6
4510 ]
4511 ]
4512
4513 node
4514 [
4515 id 5
4516 graphics
4517 [
4518 w 50.6
4519 h 26
4520 type "rectangle"
4521 fill "#FFFFFF"
4522 fill2 "#FFFFFF"
4523 outline "#000000"
4524 ]
4525 LabelGraphics
4526 [
4527 text "false"
4528 outline "#000000"
4529 fill "#FFFFFF"
4530 fontSize 16
4531 fontName "Monospace"
4532 autoSizePolicy "node_width"
4533 anchor "t"
4534 borderDistance 0.0
4535 ]
4536 LabelGraphics
4537 [
4538 text "
4539 "
4540 fontSize 14
4541 fontName "Consolas"
4542 alignment "left"
4543 anchor "tl"
4544 borderDistance 6
4545 ]
4546 ]
4547
4548 node
4549 [
4550 id 6
4551 graphics
4552 [
4553 w 192.50000000000003
4554 h 54
4555 type "rectangle"
4556 fill "#FFFFFF"
4557 fill2 "#FFFFFF"
4558 outline "#000000"
4559 ]
4560 LabelGraphics
4561 [
4562 text "null"
4563 outline "#000000"
4564 fill "#FFFFFF"
4565 fontSize 16
4566 fontName "Monospace"
4567 autoSizePolicy "node_width"
4568 anchor "t"
4569 borderDistance 0.0
4570 ]
4571 LabelGraphics
4572 [
4573 text "
4574 FunctionalElement class
4575 Function class
4576 "
4577 fontSize 14
4578 fontName "Consolas"
4579 alignment "left"
4580 anchor "tl"
4581 borderDistance 6
4582 ]
4583 ]
4584
4585 node
4586 [
4587 id 7
4588 graphics
4589 [
4590 w 112.2
4591 h 26
4592 type "rectangle"
4593 fill "#FFFFFF"
4594 fill2 "#FFFFFF"
4595 outline "#000000"
4596 ]
4597 LabelGraphics
4598 [
4599 text "New Integers"
4600 outline "#000000"
4601 fill "#FFFFFF"
4602 fontSize 16
4603 fontName "Monospace"
4604 autoSizePolicy "node_width"
4605 anchor "t"
4606 borderDistance 0.0
4607 ]
4608 LabelGraphics
4609 [
4610 text "
4611 "
4612 fontSize 14
4613 fontName "Consolas"
4614 alignment "left"
4615 anchor "tl"
4616 borderDistance 6
4617 ]
4618 ]
4619
4620 node
4621 [
4622 id 8
4623 graphics
4624 [
4625 w 85.80000000000001
4626 h 26
4627 type "rectangle"
4628 fill "#FFFFFF"
4629 fill2 "#FFFFFF"
4630 outline "#000000"
4631 ]
4632 LabelGraphics
4633 [
4634 text "New Reals"
4635 outline "#000000"
4636 fill "#FFFFFF"
4637 fontSize 16
4638 fontName "Monospace"
4639 autoSizePolicy "node_width"
4640 anchor "t"
4641 borderDistance 0.0
4642 ]
4643 LabelGraphics
4644 [
4645 text "
4646 "
4647 fontSize 14
4648 fontName "Consolas"
4649 alignment "left"
4650 anchor "tl"
4651 borderDistance 6
4652 ]
4653 ]
4654
4655 node
4656 [
4657 id 9
4658 graphics
4659 [
4660 w 103.4
4661 h 26
4662 type "rectangle"
4663 fill "#FFFFFF"
4664 fill2 "#FFFFFF"
4665 outline "#000000"
4666 ]
4667 LabelGraphics
4668 [
4669 text "New Strings"
4670 outline "#000000"
4671 fill "#FFFFFF"
4672 fontSize 16
4673 fontName "Monospace"
4674 autoSizePolicy "node_width"
4675 anchor "t"
4676 borderDistance 0.0
4677 ]
4678 LabelGraphics
4679 [
4680 text "
4681 "
4682 fontSize 14
4683 fontName "Consolas"
4684 alignment "left"
4685 anchor "tl"
4686 borderDistance 6
4687 ]
4688 ]
4689
4690 node
4691 [
4692 id 10
4693 graphics
4694 [
4695 w 103.4
4696 h 26
4697 type "rectangle"
4698 fill "#FFFFFF"
4699 fill2 "#FFFFFF"
4700 outline "#000000"
4701 ]
4702 LabelGraphics
4703 [
4704 text "New Objects"
4705 outline "#000000"
4706 fill "#FFFFFF"
4707 fontSize 16
4708 fontName "Monospace"
4709 autoSizePolicy "node_width"
4710 anchor "t"
4711 borderDistance 0.0
4712 ]
4713 LabelGraphics
4714 [
4715 text "
4716 "
4717 fontSize 14
4718 fontName "Consolas"
4719 alignment "left"
4720 anchor "tl"
4721 borderDistance 6
4722 ]
4723 ]
4724 edge
4725 [
4726 source 6
4727 target 3
4728 graphics
4729 [
4730 fill "#000000"
4731 targetArrow "standard"
4732 ]
4733 LabelGraphics
4734 [
4735 text "model reference FunctionalElement"
4736 fontSize 14
4737 fontName "Consolas"
4738 configuration "AutoFlippingLabel"
4739 model "six_pos"
4740 position "thead"
4741 ]
4742 ]
4743 edge
4744 [
4745 source 3
4746 target 6
4747 graphics
4748 [
4749 fill "#000000"
4750 width 3
4751 targetArrow "standard"
4752 ]
4753 LabelGraphics
4754 [
4755 text "rootElements reference FunctionalArchitectureModel"
4756 fontSize 14
4757 fontName "Consolas"
4758 configuration "AutoFlippingLabel"
4759 model "six_pos"
4760 position "thead"
4761 ]
4762 ]
4763 edge
4764 [
4765 source 6
4766 target 0
4767 graphics
4768 [
4769 fill "#000000"
4770 targetArrow "standard"
4771 ]
4772 LabelGraphics
4773 [
4774 text "type attribute Function"
4775 fontSize 14
4776 fontName "Consolas"
4777 configuration "AutoFlippingLabel"
4778 model "six_pos"
4779 position "thead"
4780 ]
4781 ]
4782]
4783graph
4784[
4785 node
4786 [
4787 id 0
4788 graphics
4789 [
4790 w 226.60000000000002
4791 h 40
4792 type "rectangle"
4793 fill "#FFFFFF"
4794 fill2 "#FFFFFF"
4795 outline "#000000"
4796 ]
4797 LabelGraphics
4798 [
4799 text "Root literal FunctionType"
4800 outline "#000000"
4801 fill "#FFFFFF"
4802 fontSize 16
4803 fontName "Monospace"
4804 autoSizePolicy "node_width"
4805 anchor "t"
4806 borderDistance 0.0
4807 ]
4808 LabelGraphics
4809 [
4810 text "
4811 FunctionType enum
4812 "
4813 fontSize 14
4814 fontName "Consolas"
4815 alignment "left"
4816 anchor "tl"
4817 borderDistance 6
4818 ]
4819 ]
4820
4821 node
4822 [
4823 id 1
4824 graphics
4825 [
4826 w 297.0
4827 h 40
4828 type "rectangle"
4829 fill "#FFFFFF"
4830 fill2 "#FFFFFF"
4831 outline "#000000"
4832 ]
4833 LabelGraphics
4834 [
4835 text "Intermediate literal FunctionType"
4836 outline "#000000"
4837 fill "#FFFFFF"
4838 fontSize 16
4839 fontName "Monospace"
4840 autoSizePolicy "node_width"
4841 anchor "t"
4842 borderDistance 0.0
4843 ]
4844 LabelGraphics
4845 [
4846 text "
4847 FunctionType enum
4848 "
4849 fontSize 14
4850 fontName "Consolas"
4851 alignment "left"
4852 anchor "tl"
4853 borderDistance 6
4854 ]
4855 ]
4856
4857 node
4858 [
4859 id 2
4860 graphics
4861 [
4862 w 226.60000000000002
4863 h 40
4864 type "rectangle"
4865 fill "#FFFFFF"
4866 fill2 "#FFFFFF"
4867 outline "#000000"
4868 ]
4869 LabelGraphics
4870 [
4871 text "Leaf literal FunctionType"
4872 outline "#000000"
4873 fill "#FFFFFF"
4874 fontSize 16
4875 fontName "Monospace"
4876 autoSizePolicy "node_width"
4877 anchor "t"
4878 borderDistance 0.0
4879 ]
4880 LabelGraphics
4881 [
4882 text "
4883 FunctionType enum
4884 "
4885 fontSize 14
4886 fontName "Consolas"
4887 alignment "left"
4888 anchor "tl"
4889 borderDistance 6
4890 ]
4891 ]
4892
4893 node
4894 [
4895 id 3
4896 graphics
4897 [
4898 w 361.90000000000003
4899 h 54
4900 type "rectangle"
4901 fill "#FFFFFF"
4902 fill2 "#FFFFFF"
4903 outline "#000000"
4904 ]
4905 LabelGraphics
4906 [
4907 text "o 1"
4908 outline "#000000"
4909 fill "#FFFFFF"
4910 fontSize 16
4911 fontName "Monospace"
4912 autoSizePolicy "node_width"
4913 anchor "t"
4914 borderDistance 0.0
4915 ]
4916 LabelGraphics
4917 [
4918 text "
4919 FunctionalArchitectureModel class DefinedPart
4920 FunctionalArchitectureModel class
4921 "
4922 fontSize 14
4923 fontName "Consolas"
4924 alignment "left"
4925 anchor "tl"
4926 borderDistance 6
4927 ]
4928 ]
4929
4930 node
4931 [
4932 id 4
4933 graphics
4934 [
4935 w 41.800000000000004
4936 h 26
4937 type "rectangle"
4938 fill "#FFFFFF"
4939 fill2 "#FFFFFF"
4940 outline "#000000"
4941 ]
4942 LabelGraphics
4943 [
4944 text "true"
4945 outline "#000000"
4946 fill "#FFFFFF"
4947 fontSize 16
4948 fontName "Monospace"
4949 autoSizePolicy "node_width"
4950 anchor "t"
4951 borderDistance 0.0
4952 ]
4953 LabelGraphics
4954 [
4955 text "
4956 "
4957 fontSize 14
4958 fontName "Consolas"
4959 alignment "left"
4960 anchor "tl"
4961 borderDistance 6
4962 ]
4963 ]
4964
4965 node
4966 [
4967 id 5
4968 graphics
4969 [
4970 w 50.6
4971 h 26
4972 type "rectangle"
4973 fill "#FFFFFF"
4974 fill2 "#FFFFFF"
4975 outline "#000000"
4976 ]
4977 LabelGraphics
4978 [
4979 text "false"
4980 outline "#000000"
4981 fill "#FFFFFF"
4982 fontSize 16
4983 fontName "Monospace"
4984 autoSizePolicy "node_width"
4985 anchor "t"
4986 borderDistance 0.0
4987 ]
4988 LabelGraphics
4989 [
4990 text "
4991 "
4992 fontSize 14
4993 fontName "Consolas"
4994 alignment "left"
4995 anchor "tl"
4996 borderDistance 6
4997 ]
4998 ]
4999
5000 node
5001 [
5002 id 6
5003 graphics
5004 [
5005 w 192.50000000000003
5006 h 54
5007 type "rectangle"
5008 fill "#FFFFFF"
5009 fill2 "#FFFFFF"
5010 outline "#000000"
5011 ]
5012 LabelGraphics
5013 [
5014 text "null"
5015 outline "#000000"
5016 fill "#FFFFFF"
5017 fontSize 16
5018 fontName "Monospace"
5019 autoSizePolicy "node_width"
5020 anchor "t"
5021 borderDistance 0.0
5022 ]
5023 LabelGraphics
5024 [
5025 text "
5026 FunctionalElement class
5027 Function class
5028 "
5029 fontSize 14
5030 fontName "Consolas"
5031 alignment "left"
5032 anchor "tl"
5033 borderDistance 6
5034 ]
5035 ]
5036
5037 node
5038 [
5039 id 7
5040 graphics
5041 [
5042 w 112.2
5043 h 26
5044 type "rectangle"
5045 fill "#FFFFFF"
5046 fill2 "#FFFFFF"
5047 outline "#000000"
5048 ]
5049 LabelGraphics
5050 [
5051 text "New Integers"
5052 outline "#000000"
5053 fill "#FFFFFF"
5054 fontSize 16
5055 fontName "Monospace"
5056 autoSizePolicy "node_width"
5057 anchor "t"
5058 borderDistance 0.0
5059 ]
5060 LabelGraphics
5061 [
5062 text "
5063 "
5064 fontSize 14
5065 fontName "Consolas"
5066 alignment "left"
5067 anchor "tl"
5068 borderDistance 6
5069 ]
5070 ]
5071
5072 node
5073 [
5074 id 8
5075 graphics
5076 [
5077 w 85.80000000000001
5078 h 26
5079 type "rectangle"
5080 fill "#FFFFFF"
5081 fill2 "#FFFFFF"
5082 outline "#000000"
5083 ]
5084 LabelGraphics
5085 [
5086 text "New Reals"
5087 outline "#000000"
5088 fill "#FFFFFF"
5089 fontSize 16
5090 fontName "Monospace"
5091 autoSizePolicy "node_width"
5092 anchor "t"
5093 borderDistance 0.0
5094 ]
5095 LabelGraphics
5096 [
5097 text "
5098 "
5099 fontSize 14
5100 fontName "Consolas"
5101 alignment "left"
5102 anchor "tl"
5103 borderDistance 6
5104 ]
5105 ]
5106
5107 node
5108 [
5109 id 9
5110 graphics
5111 [
5112 w 103.4
5113 h 26
5114 type "rectangle"
5115 fill "#FFFFFF"
5116 fill2 "#FFFFFF"
5117 outline "#000000"
5118 ]
5119 LabelGraphics
5120 [
5121 text "New Strings"
5122 outline "#000000"
5123 fill "#FFFFFF"
5124 fontSize 16
5125 fontName "Monospace"
5126 autoSizePolicy "node_width"
5127 anchor "t"
5128 borderDistance 0.0
5129 ]
5130 LabelGraphics
5131 [
5132 text "
5133 "
5134 fontSize 14
5135 fontName "Consolas"
5136 alignment "left"
5137 anchor "tl"
5138 borderDistance 6
5139 ]
5140 ]
5141
5142 node
5143 [
5144 id 10
5145 graphics
5146 [
5147 w 103.4
5148 h 26
5149 type "rectangle"
5150 fill "#FFFFFF"
5151 fill2 "#FFFFFF"
5152 outline "#000000"
5153 ]
5154 LabelGraphics
5155 [
5156 text "New Objects"
5157 outline "#000000"
5158 fill "#FFFFFF"
5159 fontSize 16
5160 fontName "Monospace"
5161 autoSizePolicy "node_width"
5162 anchor "t"
5163 borderDistance 0.0
5164 ]
5165 LabelGraphics
5166 [
5167 text "
5168 "
5169 fontSize 14
5170 fontName "Consolas"
5171 alignment "left"
5172 anchor "tl"
5173 borderDistance 6
5174 ]
5175 ]
5176 edge
5177 [
5178 source 6
5179 target 3
5180 graphics
5181 [
5182 fill "#000000"
5183 targetArrow "standard"
5184 ]
5185 LabelGraphics
5186 [
5187 text "model reference FunctionalElement"
5188 fontSize 14
5189 fontName "Consolas"
5190 configuration "AutoFlippingLabel"
5191 model "six_pos"
5192 position "thead"
5193 ]
5194 ]
5195 edge
5196 [
5197 source 3
5198 target 6
5199 graphics
5200 [
5201 fill "#000000"
5202 width 3
5203 targetArrow "standard"
5204 ]
5205 LabelGraphics
5206 [
5207 text "rootElements reference FunctionalArchitectureModel"
5208 fontSize 14
5209 fontName "Consolas"
5210 configuration "AutoFlippingLabel"
5211 model "six_pos"
5212 position "thead"
5213 ]
5214 ]
5215 edge
5216 [
5217 source 6
5218 target 0
5219 graphics
5220 [
5221 fill "#000000"
5222 targetArrow "standard"
5223 ]
5224 LabelGraphics
5225 [
5226 text "type attribute Function"
5227 fontSize 14
5228 fontName "Consolas"
5229 configuration "AutoFlippingLabel"
5230 model "six_pos"
5231 position "thead"
5232 ]
5233 ]
5234]
5235graph
5236[
5237 node
5238 [
5239 id 0
5240 graphics
5241 [
5242 w 226.60000000000002
5243 h 40
5244 type "rectangle"
5245 fill "#FFFFFF"
5246 fill2 "#FFFFFF"
5247 outline "#000000"
5248 ]
5249 LabelGraphics
5250 [
5251 text "Root literal FunctionType"
5252 outline "#000000"
5253 fill "#FFFFFF"
5254 fontSize 16
5255 fontName "Monospace"
5256 autoSizePolicy "node_width"
5257 anchor "t"
5258 borderDistance 0.0
5259 ]
5260 LabelGraphics
5261 [
5262 text "
5263 FunctionType enum
5264 "
5265 fontSize 14
5266 fontName "Consolas"
5267 alignment "left"
5268 anchor "tl"
5269 borderDistance 6
5270 ]
5271 ]
5272
5273 node
5274 [
5275 id 1
5276 graphics
5277 [
5278 w 297.0
5279 h 40
5280 type "rectangle"
5281 fill "#FFFFFF"
5282 fill2 "#FFFFFF"
5283 outline "#000000"
5284 ]
5285 LabelGraphics
5286 [
5287 text "Intermediate literal FunctionType"
5288 outline "#000000"
5289 fill "#FFFFFF"
5290 fontSize 16
5291 fontName "Monospace"
5292 autoSizePolicy "node_width"
5293 anchor "t"
5294 borderDistance 0.0
5295 ]
5296 LabelGraphics
5297 [
5298 text "
5299 FunctionType enum
5300 "
5301 fontSize 14
5302 fontName "Consolas"
5303 alignment "left"
5304 anchor "tl"
5305 borderDistance 6
5306 ]
5307 ]
5308
5309 node
5310 [
5311 id 2
5312 graphics
5313 [
5314 w 226.60000000000002
5315 h 40
5316 type "rectangle"
5317 fill "#FFFFFF"
5318 fill2 "#FFFFFF"
5319 outline "#000000"
5320 ]
5321 LabelGraphics
5322 [
5323 text "Leaf literal FunctionType"
5324 outline "#000000"
5325 fill "#FFFFFF"
5326 fontSize 16
5327 fontName "Monospace"
5328 autoSizePolicy "node_width"
5329 anchor "t"
5330 borderDistance 0.0
5331 ]
5332 LabelGraphics
5333 [
5334 text "
5335 FunctionType enum
5336 "
5337 fontSize 14
5338 fontName "Consolas"
5339 alignment "left"
5340 anchor "tl"
5341 borderDistance 6
5342 ]
5343 ]
5344
5345 node
5346 [
5347 id 3
5348 graphics
5349 [
5350 w 361.90000000000003
5351 h 54
5352 type "rectangle"
5353 fill "#FFFFFF"
5354 fill2 "#FFFFFF"
5355 outline "#000000"
5356 ]
5357 LabelGraphics
5358 [
5359 text "o 1"
5360 outline "#000000"
5361 fill "#FFFFFF"
5362 fontSize 16
5363 fontName "Monospace"
5364 autoSizePolicy "node_width"
5365 anchor "t"
5366 borderDistance 0.0
5367 ]
5368 LabelGraphics
5369 [
5370 text "
5371 FunctionalArchitectureModel class DefinedPart
5372 FunctionalArchitectureModel class
5373 "
5374 fontSize 14
5375 fontName "Consolas"
5376 alignment "left"
5377 anchor "tl"
5378 borderDistance 6
5379 ]
5380 ]
5381
5382 node
5383 [
5384 id 4
5385 graphics
5386 [
5387 w 41.800000000000004
5388 h 26
5389 type "rectangle"
5390 fill "#FFFFFF"
5391 fill2 "#FFFFFF"
5392 outline "#000000"
5393 ]
5394 LabelGraphics
5395 [
5396 text "true"
5397 outline "#000000"
5398 fill "#FFFFFF"
5399 fontSize 16
5400 fontName "Monospace"
5401 autoSizePolicy "node_width"
5402 anchor "t"
5403 borderDistance 0.0
5404 ]
5405 LabelGraphics
5406 [
5407 text "
5408 "
5409 fontSize 14
5410 fontName "Consolas"
5411 alignment "left"
5412 anchor "tl"
5413 borderDistance 6
5414 ]
5415 ]
5416
5417 node
5418 [
5419 id 5
5420 graphics
5421 [
5422 w 50.6
5423 h 26
5424 type "rectangle"
5425 fill "#FFFFFF"
5426 fill2 "#FFFFFF"
5427 outline "#000000"
5428 ]
5429 LabelGraphics
5430 [
5431 text "false"
5432 outline "#000000"
5433 fill "#FFFFFF"
5434 fontSize 16
5435 fontName "Monospace"
5436 autoSizePolicy "node_width"
5437 anchor "t"
5438 borderDistance 0.0
5439 ]
5440 LabelGraphics
5441 [
5442 text "
5443 "
5444 fontSize 14
5445 fontName "Consolas"
5446 alignment "left"
5447 anchor "tl"
5448 borderDistance 6
5449 ]
5450 ]
5451
5452 node
5453 [
5454 id 6
5455 graphics
5456 [
5457 w 192.50000000000003
5458 h 54
5459 type "rectangle"
5460 fill "#FFFFFF"
5461 fill2 "#FFFFFF"
5462 outline "#000000"
5463 ]
5464 LabelGraphics
5465 [
5466 text "null"
5467 outline "#000000"
5468 fill "#FFFFFF"
5469 fontSize 16
5470 fontName "Monospace"
5471 autoSizePolicy "node_width"
5472 anchor "t"
5473 borderDistance 0.0
5474 ]
5475 LabelGraphics
5476 [
5477 text "
5478 FunctionalElement class
5479 Function class
5480 "
5481 fontSize 14
5482 fontName "Consolas"
5483 alignment "left"
5484 anchor "tl"
5485 borderDistance 6
5486 ]
5487 ]
5488
5489 node
5490 [
5491 id 7
5492 graphics
5493 [
5494 w 112.2
5495 h 26
5496 type "rectangle"
5497 fill "#FFFFFF"
5498 fill2 "#FFFFFF"
5499 outline "#000000"
5500 ]
5501 LabelGraphics
5502 [
5503 text "New Integers"
5504 outline "#000000"
5505 fill "#FFFFFF"
5506 fontSize 16
5507 fontName "Monospace"
5508 autoSizePolicy "node_width"
5509 anchor "t"
5510 borderDistance 0.0
5511 ]
5512 LabelGraphics
5513 [
5514 text "
5515 "
5516 fontSize 14
5517 fontName "Consolas"
5518 alignment "left"
5519 anchor "tl"
5520 borderDistance 6
5521 ]
5522 ]
5523
5524 node
5525 [
5526 id 8
5527 graphics
5528 [
5529 w 85.80000000000001
5530 h 26
5531 type "rectangle"
5532 fill "#FFFFFF"
5533 fill2 "#FFFFFF"
5534 outline "#000000"
5535 ]
5536 LabelGraphics
5537 [
5538 text "New Reals"
5539 outline "#000000"
5540 fill "#FFFFFF"
5541 fontSize 16
5542 fontName "Monospace"
5543 autoSizePolicy "node_width"
5544 anchor "t"
5545 borderDistance 0.0
5546 ]
5547 LabelGraphics
5548 [
5549 text "
5550 "
5551 fontSize 14
5552 fontName "Consolas"
5553 alignment "left"
5554 anchor "tl"
5555 borderDistance 6
5556 ]
5557 ]
5558
5559 node
5560 [
5561 id 9
5562 graphics
5563 [
5564 w 103.4
5565 h 26
5566 type "rectangle"
5567 fill "#FFFFFF"
5568 fill2 "#FFFFFF"
5569 outline "#000000"
5570 ]
5571 LabelGraphics
5572 [
5573 text "New Strings"
5574 outline "#000000"
5575 fill "#FFFFFF"
5576 fontSize 16
5577 fontName "Monospace"
5578 autoSizePolicy "node_width"
5579 anchor "t"
5580 borderDistance 0.0
5581 ]
5582 LabelGraphics
5583 [
5584 text "
5585 "
5586 fontSize 14
5587 fontName "Consolas"
5588 alignment "left"
5589 anchor "tl"
5590 borderDistance 6
5591 ]
5592 ]
5593
5594 node
5595 [
5596 id 10
5597 graphics
5598 [
5599 w 103.4
5600 h 26
5601 type "rectangle"
5602 fill "#FFFFFF"
5603 fill2 "#FFFFFF"
5604 outline "#000000"
5605 ]
5606 LabelGraphics
5607 [
5608 text "New Objects"
5609 outline "#000000"
5610 fill "#FFFFFF"
5611 fontSize 16
5612 fontName "Monospace"
5613 autoSizePolicy "node_width"
5614 anchor "t"
5615 borderDistance 0.0
5616 ]
5617 LabelGraphics
5618 [
5619 text "
5620 "
5621 fontSize 14
5622 fontName "Consolas"
5623 alignment "left"
5624 anchor "tl"
5625 borderDistance 6
5626 ]
5627 ]
5628 edge
5629 [
5630 source 3
5631 target 6
5632 graphics
5633 [
5634 fill "#000000"
5635 width 3
5636 targetArrow "standard"
5637 ]
5638 LabelGraphics
5639 [
5640 text "rootElements reference FunctionalArchitectureModel"
5641 fontSize 14
5642 fontName "Consolas"
5643 configuration "AutoFlippingLabel"
5644 model "six_pos"
5645 position "thead"
5646 ]
5647 ]
5648]
5649graph
5650[
5651 node
5652 [
5653 id 0
5654 graphics
5655 [
5656 w 226.60000000000002
5657 h 40
5658 type "rectangle"
5659 fill "#FFFFFF"
5660 fill2 "#FFFFFF"
5661 outline "#000000"
5662 ]
5663 LabelGraphics
5664 [
5665 text "Root literal FunctionType"
5666 outline "#000000"
5667 fill "#FFFFFF"
5668 fontSize 16
5669 fontName "Monospace"
5670 autoSizePolicy "node_width"
5671 anchor "t"
5672 borderDistance 0.0
5673 ]
5674 LabelGraphics
5675 [
5676 text "
5677 FunctionType enum
5678 "
5679 fontSize 14
5680 fontName "Consolas"
5681 alignment "left"
5682 anchor "tl"
5683 borderDistance 6
5684 ]
5685 ]
5686
5687 node
5688 [
5689 id 1
5690 graphics
5691 [
5692 w 297.0
5693 h 40
5694 type "rectangle"
5695 fill "#FFFFFF"
5696 fill2 "#FFFFFF"
5697 outline "#000000"
5698 ]
5699 LabelGraphics
5700 [
5701 text "Intermediate literal FunctionType"
5702 outline "#000000"
5703 fill "#FFFFFF"
5704 fontSize 16
5705 fontName "Monospace"
5706 autoSizePolicy "node_width"
5707 anchor "t"
5708 borderDistance 0.0
5709 ]
5710 LabelGraphics
5711 [
5712 text "
5713 FunctionType enum
5714 "
5715 fontSize 14
5716 fontName "Consolas"
5717 alignment "left"
5718 anchor "tl"
5719 borderDistance 6
5720 ]
5721 ]
5722
5723 node
5724 [
5725 id 2
5726 graphics
5727 [
5728 w 226.60000000000002
5729 h 40
5730 type "rectangle"
5731 fill "#FFFFFF"
5732 fill2 "#FFFFFF"
5733 outline "#000000"
5734 ]
5735 LabelGraphics
5736 [
5737 text "Leaf literal FunctionType"
5738 outline "#000000"
5739 fill "#FFFFFF"
5740 fontSize 16
5741 fontName "Monospace"
5742 autoSizePolicy "node_width"
5743 anchor "t"
5744 borderDistance 0.0
5745 ]
5746 LabelGraphics
5747 [
5748 text "
5749 FunctionType enum
5750 "
5751 fontSize 14
5752 fontName "Consolas"
5753 alignment "left"
5754 anchor "tl"
5755 borderDistance 6
5756 ]
5757 ]
5758
5759 node
5760 [
5761 id 3
5762 graphics
5763 [
5764 w 361.90000000000003
5765 h 54
5766 type "rectangle"
5767 fill "#FFFFFF"
5768 fill2 "#FFFFFF"
5769 outline "#000000"
5770 ]
5771 LabelGraphics
5772 [
5773 text "o 1"
5774 outline "#000000"
5775 fill "#FFFFFF"
5776 fontSize 16
5777 fontName "Monospace"
5778 autoSizePolicy "node_width"
5779 anchor "t"
5780 borderDistance 0.0
5781 ]
5782 LabelGraphics
5783 [
5784 text "
5785 FunctionalArchitectureModel class DefinedPart
5786 FunctionalArchitectureModel class
5787 "
5788 fontSize 14
5789 fontName "Consolas"
5790 alignment "left"
5791 anchor "tl"
5792 borderDistance 6
5793 ]
5794 ]
5795
5796 node
5797 [
5798 id 4
5799 graphics
5800 [
5801 w 41.800000000000004
5802 h 26
5803 type "rectangle"
5804 fill "#FFFFFF"
5805 fill2 "#FFFFFF"
5806 outline "#000000"
5807 ]
5808 LabelGraphics
5809 [
5810 text "true"
5811 outline "#000000"
5812 fill "#FFFFFF"
5813 fontSize 16
5814 fontName "Monospace"
5815 autoSizePolicy "node_width"
5816 anchor "t"
5817 borderDistance 0.0
5818 ]
5819 LabelGraphics
5820 [
5821 text "
5822 "
5823 fontSize 14
5824 fontName "Consolas"
5825 alignment "left"
5826 anchor "tl"
5827 borderDistance 6
5828 ]
5829 ]
5830
5831 node
5832 [
5833 id 5
5834 graphics
5835 [
5836 w 50.6
5837 h 26
5838 type "rectangle"
5839 fill "#FFFFFF"
5840 fill2 "#FFFFFF"
5841 outline "#000000"
5842 ]
5843 LabelGraphics
5844 [
5845 text "false"
5846 outline "#000000"
5847 fill "#FFFFFF"
5848 fontSize 16
5849 fontName "Monospace"
5850 autoSizePolicy "node_width"
5851 anchor "t"
5852 borderDistance 0.0
5853 ]
5854 LabelGraphics
5855 [
5856 text "
5857 "
5858 fontSize 14
5859 fontName "Consolas"
5860 alignment "left"
5861 anchor "tl"
5862 borderDistance 6
5863 ]
5864 ]
5865
5866 node
5867 [
5868 id 6
5869 graphics
5870 [
5871 w 192.50000000000003
5872 h 54
5873 type "rectangle"
5874 fill "#FFFFFF"
5875 fill2 "#FFFFFF"
5876 outline "#000000"
5877 ]
5878 LabelGraphics
5879 [
5880 text "null"
5881 outline "#000000"
5882 fill "#FFFFFF"
5883 fontSize 16
5884 fontName "Monospace"
5885 autoSizePolicy "node_width"
5886 anchor "t"
5887 borderDistance 0.0
5888 ]
5889 LabelGraphics
5890 [
5891 text "
5892 FunctionalElement class
5893 Function class
5894 "
5895 fontSize 14
5896 fontName "Consolas"
5897 alignment "left"
5898 anchor "tl"
5899 borderDistance 6
5900 ]
5901 ]
5902
5903 node
5904 [
5905 id 7
5906 graphics
5907 [
5908 w 112.2
5909 h 26
5910 type "rectangle"
5911 fill "#FFFFFF"
5912 fill2 "#FFFFFF"
5913 outline "#000000"
5914 ]
5915 LabelGraphics
5916 [
5917 text "New Integers"
5918 outline "#000000"
5919 fill "#FFFFFF"
5920 fontSize 16
5921 fontName "Monospace"
5922 autoSizePolicy "node_width"
5923 anchor "t"
5924 borderDistance 0.0
5925 ]
5926 LabelGraphics
5927 [
5928 text "
5929 "
5930 fontSize 14
5931 fontName "Consolas"
5932 alignment "left"
5933 anchor "tl"
5934 borderDistance 6
5935 ]
5936 ]
5937
5938 node
5939 [
5940 id 8
5941 graphics
5942 [
5943 w 85.80000000000001
5944 h 26
5945 type "rectangle"
5946 fill "#FFFFFF"
5947 fill2 "#FFFFFF"
5948 outline "#000000"
5949 ]
5950 LabelGraphics
5951 [
5952 text "New Reals"
5953 outline "#000000"
5954 fill "#FFFFFF"
5955 fontSize 16
5956 fontName "Monospace"
5957 autoSizePolicy "node_width"
5958 anchor "t"
5959 borderDistance 0.0
5960 ]
5961 LabelGraphics
5962 [
5963 text "
5964 "
5965 fontSize 14
5966 fontName "Consolas"
5967 alignment "left"
5968 anchor "tl"
5969 borderDistance 6
5970 ]
5971 ]
5972
5973 node
5974 [
5975 id 9
5976 graphics
5977 [
5978 w 103.4
5979 h 26
5980 type "rectangle"
5981 fill "#FFFFFF"
5982 fill2 "#FFFFFF"
5983 outline "#000000"
5984 ]
5985 LabelGraphics
5986 [
5987 text "New Strings"
5988 outline "#000000"
5989 fill "#FFFFFF"
5990 fontSize 16
5991 fontName "Monospace"
5992 autoSizePolicy "node_width"
5993 anchor "t"
5994 borderDistance 0.0
5995 ]
5996 LabelGraphics
5997 [
5998 text "
5999 "
6000 fontSize 14
6001 fontName "Consolas"
6002 alignment "left"
6003 anchor "tl"
6004 borderDistance 6
6005 ]
6006 ]
6007
6008 node
6009 [
6010 id 10
6011 graphics
6012 [
6013 w 103.4
6014 h 26
6015 type "rectangle"
6016 fill "#FFFFFF"
6017 fill2 "#FFFFFF"
6018 outline "#000000"
6019 ]
6020 LabelGraphics
6021 [
6022 text "New Objects"
6023 outline "#000000"
6024 fill "#FFFFFF"
6025 fontSize 16
6026 fontName "Monospace"
6027 autoSizePolicy "node_width"
6028 anchor "t"
6029 borderDistance 0.0
6030 ]
6031 LabelGraphics
6032 [
6033 text "
6034 "
6035 fontSize 14
6036 fontName "Consolas"
6037 alignment "left"
6038 anchor "tl"
6039 borderDistance 6
6040 ]
6041 ]
6042 edge
6043 [
6044 source 3
6045 target 6
6046 graphics
6047 [
6048 fill "#000000"
6049 width 3
6050 targetArrow "standard"
6051 ]
6052 LabelGraphics
6053 [
6054 text "rootElements reference FunctionalArchitectureModel"
6055 fontSize 14
6056 fontName "Consolas"
6057 configuration "AutoFlippingLabel"
6058 model "six_pos"
6059 position "thead"
6060 ]
6061 ]
6062]
6063graph
6064[
6065 node
6066 [
6067 id 0
6068 graphics
6069 [
6070 w 226.60000000000002
6071 h 40
6072 type "rectangle"
6073 fill "#FFFFFF"
6074 fill2 "#FFFFFF"
6075 outline "#000000"
6076 ]
6077 LabelGraphics
6078 [
6079 text "Root literal FunctionType"
6080 outline "#000000"
6081 fill "#FFFFFF"
6082 fontSize 16
6083 fontName "Monospace"
6084 autoSizePolicy "node_width"
6085 anchor "t"
6086 borderDistance 0.0
6087 ]
6088 LabelGraphics
6089 [
6090 text "
6091 FunctionType enum
6092 "
6093 fontSize 14
6094 fontName "Consolas"
6095 alignment "left"
6096 anchor "tl"
6097 borderDistance 6
6098 ]
6099 ]
6100
6101 node
6102 [
6103 id 1
6104 graphics
6105 [
6106 w 297.0
6107 h 40
6108 type "rectangle"
6109 fill "#FFFFFF"
6110 fill2 "#FFFFFF"
6111 outline "#000000"
6112 ]
6113 LabelGraphics
6114 [
6115 text "Intermediate literal FunctionType"
6116 outline "#000000"
6117 fill "#FFFFFF"
6118 fontSize 16
6119 fontName "Monospace"
6120 autoSizePolicy "node_width"
6121 anchor "t"
6122 borderDistance 0.0
6123 ]
6124 LabelGraphics
6125 [
6126 text "
6127 FunctionType enum
6128 "
6129 fontSize 14
6130 fontName "Consolas"
6131 alignment "left"
6132 anchor "tl"
6133 borderDistance 6
6134 ]
6135 ]
6136
6137 node
6138 [
6139 id 2
6140 graphics
6141 [
6142 w 226.60000000000002
6143 h 40
6144 type "rectangle"
6145 fill "#FFFFFF"
6146 fill2 "#FFFFFF"
6147 outline "#000000"
6148 ]
6149 LabelGraphics
6150 [
6151 text "Leaf literal FunctionType"
6152 outline "#000000"
6153 fill "#FFFFFF"
6154 fontSize 16
6155 fontName "Monospace"
6156 autoSizePolicy "node_width"
6157 anchor "t"
6158 borderDistance 0.0
6159 ]
6160 LabelGraphics
6161 [
6162 text "
6163 FunctionType enum
6164 "
6165 fontSize 14
6166 fontName "Consolas"
6167 alignment "left"
6168 anchor "tl"
6169 borderDistance 6
6170 ]
6171 ]
6172
6173 node
6174 [
6175 id 3
6176 graphics
6177 [
6178 w 361.90000000000003
6179 h 54
6180 type "rectangle"
6181 fill "#FFFFFF"
6182 fill2 "#FFFFFF"
6183 outline "#000000"
6184 ]
6185 LabelGraphics
6186 [
6187 text "o 1"
6188 outline "#000000"
6189 fill "#FFFFFF"
6190 fontSize 16
6191 fontName "Monospace"
6192 autoSizePolicy "node_width"
6193 anchor "t"
6194 borderDistance 0.0
6195 ]
6196 LabelGraphics
6197 [
6198 text "
6199 FunctionalArchitectureModel class DefinedPart
6200 FunctionalArchitectureModel class
6201 "
6202 fontSize 14
6203 fontName "Consolas"
6204 alignment "left"
6205 anchor "tl"
6206 borderDistance 6
6207 ]
6208 ]
6209
6210 node
6211 [
6212 id 4
6213 graphics
6214 [
6215 w 41.800000000000004
6216 h 26
6217 type "rectangle"
6218 fill "#FFFFFF"
6219 fill2 "#FFFFFF"
6220 outline "#000000"
6221 ]
6222 LabelGraphics
6223 [
6224 text "true"
6225 outline "#000000"
6226 fill "#FFFFFF"
6227 fontSize 16
6228 fontName "Monospace"
6229 autoSizePolicy "node_width"
6230 anchor "t"
6231 borderDistance 0.0
6232 ]
6233 LabelGraphics
6234 [
6235 text "
6236 "
6237 fontSize 14
6238 fontName "Consolas"
6239 alignment "left"
6240 anchor "tl"
6241 borderDistance 6
6242 ]
6243 ]
6244
6245 node
6246 [
6247 id 5
6248 graphics
6249 [
6250 w 50.6
6251 h 26
6252 type "rectangle"
6253 fill "#FFFFFF"
6254 fill2 "#FFFFFF"
6255 outline "#000000"
6256 ]
6257 LabelGraphics
6258 [
6259 text "false"
6260 outline "#000000"
6261 fill "#FFFFFF"
6262 fontSize 16
6263 fontName "Monospace"
6264 autoSizePolicy "node_width"
6265 anchor "t"
6266 borderDistance 0.0
6267 ]
6268 LabelGraphics
6269 [
6270 text "
6271 "
6272 fontSize 14
6273 fontName "Consolas"
6274 alignment "left"
6275 anchor "tl"
6276 borderDistance 6
6277 ]
6278 ]
6279
6280 node
6281 [
6282 id 6
6283 graphics
6284 [
6285 w 192.50000000000003
6286 h 54
6287 type "rectangle"
6288 fill "#FFFFFF"
6289 fill2 "#FFFFFF"
6290 outline "#000000"
6291 ]
6292 LabelGraphics
6293 [
6294 text "null"
6295 outline "#000000"
6296 fill "#FFFFFF"
6297 fontSize 16
6298 fontName "Monospace"
6299 autoSizePolicy "node_width"
6300 anchor "t"
6301 borderDistance 0.0
6302 ]
6303 LabelGraphics
6304 [
6305 text "
6306 FunctionalElement class
6307 Function class
6308 "
6309 fontSize 14
6310 fontName "Consolas"
6311 alignment "left"
6312 anchor "tl"
6313 borderDistance 6
6314 ]
6315 ]
6316
6317 node
6318 [
6319 id 7
6320 graphics
6321 [
6322 w 112.2
6323 h 26
6324 type "rectangle"
6325 fill "#FFFFFF"
6326 fill2 "#FFFFFF"
6327 outline "#000000"
6328 ]
6329 LabelGraphics
6330 [
6331 text "New Integers"
6332 outline "#000000"
6333 fill "#FFFFFF"
6334 fontSize 16
6335 fontName "Monospace"
6336 autoSizePolicy "node_width"
6337 anchor "t"
6338 borderDistance 0.0
6339 ]
6340 LabelGraphics
6341 [
6342 text "
6343 "
6344 fontSize 14
6345 fontName "Consolas"
6346 alignment "left"
6347 anchor "tl"
6348 borderDistance 6
6349 ]
6350 ]
6351
6352 node
6353 [
6354 id 8
6355 graphics
6356 [
6357 w 85.80000000000001
6358 h 26
6359 type "rectangle"
6360 fill "#FFFFFF"
6361 fill2 "#FFFFFF"
6362 outline "#000000"
6363 ]
6364 LabelGraphics
6365 [
6366 text "New Reals"
6367 outline "#000000"
6368 fill "#FFFFFF"
6369 fontSize 16
6370 fontName "Monospace"
6371 autoSizePolicy "node_width"
6372 anchor "t"
6373 borderDistance 0.0
6374 ]
6375 LabelGraphics
6376 [
6377 text "
6378 "
6379 fontSize 14
6380 fontName "Consolas"
6381 alignment "left"
6382 anchor "tl"
6383 borderDistance 6
6384 ]
6385 ]
6386
6387 node
6388 [
6389 id 9
6390 graphics
6391 [
6392 w 103.4
6393 h 26
6394 type "rectangle"
6395 fill "#FFFFFF"
6396 fill2 "#FFFFFF"
6397 outline "#000000"
6398 ]
6399 LabelGraphics
6400 [
6401 text "New Strings"
6402 outline "#000000"
6403 fill "#FFFFFF"
6404 fontSize 16
6405 fontName "Monospace"
6406 autoSizePolicy "node_width"
6407 anchor "t"
6408 borderDistance 0.0
6409 ]
6410 LabelGraphics
6411 [
6412 text "
6413 "
6414 fontSize 14
6415 fontName "Consolas"
6416 alignment "left"
6417 anchor "tl"
6418 borderDistance 6
6419 ]
6420 ]
6421
6422 node
6423 [
6424 id 10
6425 graphics
6426 [
6427 w 103.4
6428 h 26
6429 type "rectangle"
6430 fill "#FFFFFF"
6431 fill2 "#FFFFFF"
6432 outline "#000000"
6433 ]
6434 LabelGraphics
6435 [
6436 text "New Objects"
6437 outline "#000000"
6438 fill "#FFFFFF"
6439 fontSize 16
6440 fontName "Monospace"
6441 autoSizePolicy "node_width"
6442 anchor "t"
6443 borderDistance 0.0
6444 ]
6445 LabelGraphics
6446 [
6447 text "
6448 "
6449 fontSize 14
6450 fontName "Consolas"
6451 alignment "left"
6452 anchor "tl"
6453 borderDistance 6
6454 ]
6455 ]
6456 edge
6457 [
6458 source 6
6459 target 3
6460 graphics
6461 [
6462 fill "#000000"
6463 targetArrow "standard"
6464 ]
6465 LabelGraphics
6466 [
6467 text "model reference FunctionalElement"
6468 fontSize 14
6469 fontName "Consolas"
6470 configuration "AutoFlippingLabel"
6471 model "six_pos"
6472 position "thead"
6473 ]
6474 ]
6475 edge
6476 [
6477 source 3
6478 target 6
6479 graphics
6480 [
6481 fill "#000000"
6482 width 3
6483 targetArrow "standard"
6484 ]
6485 LabelGraphics
6486 [
6487 text "rootElements reference FunctionalArchitectureModel"
6488 fontSize 14
6489 fontName "Consolas"
6490 configuration "AutoFlippingLabel"
6491 model "six_pos"
6492 position "thead"
6493 ]
6494 ]
6495 edge
6496 [
6497 source 6
6498 target 1
6499 graphics
6500 [
6501 fill "#000000"
6502 targetArrow "standard"
6503 ]
6504 LabelGraphics
6505 [
6506 text "type attribute Function"
6507 fontSize 14
6508 fontName "Consolas"
6509 configuration "AutoFlippingLabel"
6510 model "six_pos"
6511 position "thead"
6512 ]
6513 ]
6514]
6515graph
6516[
6517 node
6518 [
6519 id 0
6520 graphics
6521 [
6522 w 254.10000000000002
6523 h 110
6524 type "rectangle"
6525 fill "#FFFFFF"
6526 fill2 "#FFFFFF"
6527 outline "#000000"
6528 ]
6529 LabelGraphics
6530 [
6531 text "o 1"
6532 outline "#000000"
6533 fill "#FFFFFF"
6534 fontSize 16
6535 fontName "Monospace"
6536 autoSizePolicy "node_width"
6537 anchor "t"
6538 borderDistance 0.0
6539 ]
6540 LabelGraphics
6541 [
6542 text "
6543 EModelElement class DefinedPart
6544 ENamedElement class DefinedPart
6545 EPackage class DefinedPart
6546 EModelElement class
6547 ENamedElement class
6548 EPackage class
6549 "
6550 fontSize 14
6551 fontName "Consolas"
6552 alignment "left"
6553 anchor "tl"
6554 borderDistance 6
6555 ]
6556 ]
6557
6558 node
6559 [
6560 id 1
6561 graphics
6562 [
6563 w 41.800000000000004
6564 h 26
6565 type "rectangle"
6566 fill "#FFFFFF"
6567 fill2 "#FFFFFF"
6568 outline "#000000"
6569 ]
6570 LabelGraphics
6571 [
6572 text "true"
6573 outline "#000000"
6574 fill "#FFFFFF"
6575 fontSize 16
6576 fontName "Monospace"
6577 autoSizePolicy "node_width"
6578 anchor "t"
6579 borderDistance 0.0
6580 ]
6581 LabelGraphics
6582 [
6583 text "
6584 "
6585 fontSize 14
6586 fontName "Consolas"
6587 alignment "left"
6588 anchor "tl"
6589 borderDistance 6
6590 ]
6591 ]
6592
6593 node
6594 [
6595 id 2
6596 graphics
6597 [
6598 w 50.6
6599 h 26
6600 type "rectangle"
6601 fill "#FFFFFF"
6602 fill2 "#FFFFFF"
6603 outline "#000000"
6604 ]
6605 LabelGraphics
6606 [
6607 text "false"
6608 outline "#000000"
6609 fill "#FFFFFF"
6610 fontSize 16
6611 fontName "Monospace"
6612 autoSizePolicy "node_width"
6613 anchor "t"
6614 borderDistance 0.0
6615 ]
6616 LabelGraphics
6617 [
6618 text "
6619 "
6620 fontSize 14
6621 fontName "Consolas"
6622 alignment "left"
6623 anchor "tl"
6624 borderDistance 6
6625 ]
6626 ]
6627
6628 node
6629 [
6630 id 3
6631 graphics
6632 [
6633 w 24.200000000000003
6634 h 26
6635 type "rectangle"
6636 fill "#FFFFFF"
6637 fill2 "#FFFFFF"
6638 outline "#000000"
6639 ]
6640 LabelGraphics
6641 [
6642 text "-1"
6643 outline "#000000"
6644 fill "#FFFFFF"
6645 fontSize 16
6646 fontName "Monospace"
6647 autoSizePolicy "node_width"
6648 anchor "t"
6649 borderDistance 0.0
6650 ]
6651 LabelGraphics
6652 [
6653 text "
6654 "
6655 fontSize 14
6656 fontName "Consolas"
6657 alignment "left"
6658 anchor "tl"
6659 borderDistance 6
6660 ]
6661 ]
6662
6663 node
6664 [
6665 id 4
6666 graphics
6667 [
6668 w 15.400000000000002
6669 h 26
6670 type "rectangle"
6671 fill "#FFFFFF"
6672 fill2 "#FFFFFF"
6673 outline "#000000"
6674 ]
6675 LabelGraphics
6676 [
6677 text "0"
6678 outline "#000000"
6679 fill "#FFFFFF"
6680 fontSize 16
6681 fontName "Monospace"
6682 autoSizePolicy "node_width"
6683 anchor "t"
6684 borderDistance 0.0
6685 ]
6686 LabelGraphics
6687 [
6688 text "
6689 "
6690 fontSize 14
6691 fontName "Consolas"
6692 alignment "left"
6693 anchor "tl"
6694 borderDistance 6
6695 ]
6696 ]
6697
6698 node
6699 [
6700 id 5
6701 graphics
6702 [
6703 w 15.400000000000002
6704 h 26
6705 type "rectangle"
6706 fill "#FFFFFF"
6707 fill2 "#FFFFFF"
6708 outline "#000000"
6709 ]
6710 LabelGraphics
6711 [
6712 text "1"
6713 outline "#000000"
6714 fill "#FFFFFF"
6715 fontSize 16
6716 fontName "Monospace"
6717 autoSizePolicy "node_width"
6718 anchor "t"
6719 borderDistance 0.0
6720 ]
6721 LabelGraphics
6722 [
6723 text "
6724 "
6725 fontSize 14
6726 fontName "Consolas"
6727 alignment "left"
6728 anchor "tl"
6729 borderDistance 6
6730 ]
6731 ]
6732
6733 node
6734 [
6735 id 6
6736 graphics
6737 [
6738 w 33.0
6739 h 26
6740 type "rectangle"
6741 fill "#FFFFFF"
6742 fill2 "#FFFFFF"
6743 outline "#000000"
6744 ]
6745 LabelGraphics
6746 [
6747 text ""A""
6748 outline "#000000"
6749 fill "#FFFFFF"
6750 fontSize 16
6751 fontName "Monospace"
6752 autoSizePolicy "node_width"
6753 anchor "t"
6754 borderDistance 0.0
6755 ]
6756 LabelGraphics
6757 [
6758 text "
6759 "
6760 fontSize 14
6761 fontName "Consolas"
6762 alignment "left"
6763 anchor "tl"
6764 borderDistance 6
6765 ]
6766 ]
6767
6768 node
6769 [
6770 id 7
6771 graphics
6772 [
6773 w 33.0
6774 h 26
6775 type "rectangle"
6776 fill "#FFFFFF"
6777 fill2 "#FFFFFF"
6778 outline "#000000"
6779 ]
6780 LabelGraphics
6781 [
6782 text ""B""
6783 outline "#000000"
6784 fill "#FFFFFF"
6785 fontSize 16
6786 fontName "Monospace"
6787 autoSizePolicy "node_width"
6788 anchor "t"
6789 borderDistance 0.0
6790 ]
6791 LabelGraphics
6792 [
6793 text "
6794 "
6795 fontSize 14
6796 fontName "Consolas"
6797 alignment "left"
6798 anchor "tl"
6799 borderDistance 6
6800 ]
6801 ]
6802
6803 node
6804 [
6805 id 8
6806 graphics
6807 [
6808 w 94.60000000000001
6809 h 26
6810 type "rectangle"
6811 fill "#FFFFFF"
6812 fill2 "#FFFFFF"
6813 outline "#000000"
6814 ]
6815 LabelGraphics
6816 [
6817 text ""nsPrefix""
6818 outline "#000000"
6819 fill "#FFFFFF"
6820 fontSize 16
6821 fontName "Monospace"
6822 autoSizePolicy "node_width"
6823 anchor "t"
6824 borderDistance 0.0
6825 ]
6826 LabelGraphics
6827 [
6828 text "
6829 "
6830 fontSize 14
6831 fontName "Consolas"
6832 alignment "left"
6833 anchor "tl"
6834 borderDistance 6
6835 ]
6836 ]
6837
6838 node
6839 [
6840 id 9
6841 graphics
6842 [
6843 w 68.2
6844 h 26
6845 type "rectangle"
6846 fill "#FFFFFF"
6847 fill2 "#FFFFFF"
6848 outline "#000000"
6849 ]
6850 LabelGraphics
6851 [
6852 text ""nsUri""
6853 outline "#000000"
6854 fill "#FFFFFF"
6855 fontSize 16
6856 fontName "Monospace"
6857 autoSizePolicy "node_width"
6858 anchor "t"
6859 borderDistance 0.0
6860 ]
6861 LabelGraphics
6862 [
6863 text "
6864 "
6865 fontSize 14
6866 fontName "Consolas"
6867 alignment "left"
6868 anchor "tl"
6869 borderDistance 6
6870 ]
6871 ]
6872
6873 node
6874 [
6875 id 10
6876 graphics
6877 [
6878 w 121.00000000000001
6879 h 26
6880 type "rectangle"
6881 fill "#FFFFFF"
6882 fill2 "#FFFFFF"
6883 outline "#000000"
6884 ]
6885 LabelGraphics
6886 [
6887 text ""packageName""
6888 outline "#000000"
6889 fill "#FFFFFF"
6890 fontSize 16
6891 fontName "Monospace"
6892 autoSizePolicy "node_width"
6893 anchor "t"
6894 borderDistance 0.0
6895 ]
6896 LabelGraphics
6897 [
6898 text "
6899 "
6900 fontSize 14
6901 fontName "Consolas"
6902 alignment "left"
6903 anchor "tl"
6904 borderDistance 6
6905 ]
6906 ]
6907
6908 node
6909 [
6910 id 11
6911 graphics
6912 [
6913 w 269.5
6914 h 124
6915 type "rectangle"
6916 fill "#FFFFFF"
6917 fill2 "#FFFFFF"
6918 outline "#000000"
6919 ]
6920 LabelGraphics
6921 [
6922 text "null"
6923 outline "#000000"
6924 fill "#FFFFFF"
6925 fontSize 16
6926 fontName "Monospace"
6927 autoSizePolicy "node_width"
6928 anchor "t"
6929 borderDistance 0.0
6930 ]
6931 LabelGraphics
6932 [
6933 text "
6934 EClassifier class
6935 EDataType class
6936 EEnum class
6937 EModelElement class
6938 ENamedElement class
6939 EModelElement class UndefinedPart
6940 ENamedElement class UndefinedPart
6941 "
6942 fontSize 14
6943 fontName "Consolas"
6944 alignment "left"
6945 anchor "tl"
6946 borderDistance 6
6947 ]
6948 ]
6949
6950 node
6951 [
6952 id 12
6953 graphics
6954 [
6955 w 269.5
6956 h 124
6957 type "rectangle"
6958 fill "#FFFFFF"
6959 fill2 "#FFFFFF"
6960 outline "#000000"
6961 ]
6962 LabelGraphics
6963 [
6964 text "null"
6965 outline "#000000"
6966 fill "#FFFFFF"
6967 fontSize 16
6968 fontName "Monospace"
6969 autoSizePolicy "node_width"
6970 anchor "t"
6971 borderDistance 0.0
6972 ]
6973 LabelGraphics
6974 [
6975 text "
6976 EClassifier class
6977 EDataType class
6978 EEnum class
6979 EModelElement class
6980 ENamedElement class
6981 EModelElement class UndefinedPart
6982 ENamedElement class UndefinedPart
6983 "
6984 fontSize 14
6985 fontName "Consolas"
6986 alignment "left"
6987 anchor "tl"
6988 borderDistance 6
6989 ]
6990 ]
6991
6992 node
6993 [
6994 id 13
6995 graphics
6996 [
6997 w 269.5
6998 h 110
6999 type "rectangle"
7000 fill "#FFFFFF"
7001 fill2 "#FFFFFF"
7002 outline "#000000"
7003 ]
7004 LabelGraphics
7005 [
7006 text "null"
7007 outline "#000000"
7008 fill "#FFFFFF"
7009 fontSize 16
7010 fontName "Monospace"
7011 autoSizePolicy "node_width"
7012 anchor "t"
7013 borderDistance 0.0
7014 ]
7015 LabelGraphics
7016 [
7017 text "
7018 EModelElement class
7019 ENamedElement class
7020 EPackage class
7021 EModelElement class UndefinedPart
7022 ENamedElement class UndefinedPart
7023 EPackage class UndefinedPart
7024 "
7025 fontSize 14
7026 fontName "Consolas"
7027 alignment "left"
7028 anchor "tl"
7029 borderDistance 6
7030 ]
7031 ]
7032
7033 node
7034 [
7035 id 14
7036 graphics
7037 [
7038 w 269.5
7039 h 124
7040 type "rectangle"
7041 fill "#FFFFFF"
7042 fill2 "#FFFFFF"
7043 outline "#000000"
7044 ]
7045 LabelGraphics
7046 [
7047 text "null"
7048 outline "#000000"
7049 fill "#FFFFFF"
7050 fontSize 16
7051 fontName "Monospace"
7052 autoSizePolicy "node_width"
7053 anchor "t"
7054 borderDistance 0.0
7055 ]
7056 LabelGraphics
7057 [
7058 text "
7059 EClassifier class
7060 EDataType class
7061 EEnum class
7062 EModelElement class
7063 ENamedElement class
7064 EModelElement class UndefinedPart
7065 ENamedElement class UndefinedPart
7066 "
7067 fontSize 14
7068 fontName "Consolas"
7069 alignment "left"
7070 anchor "tl"
7071 borderDistance 6
7072 ]
7073 ]
7074
7075 node
7076 [
7077 id 15
7078 graphics
7079 [
7080 w 269.5
7081 h 124
7082 type "rectangle"
7083 fill "#FFFFFF"
7084 fill2 "#FFFFFF"
7085 outline "#000000"
7086 ]
7087 LabelGraphics
7088 [
7089 text "null"
7090 outline "#000000"
7091 fill "#FFFFFF"
7092 fontSize 16
7093 fontName "Monospace"
7094 autoSizePolicy "node_width"
7095 anchor "t"
7096 borderDistance 0.0
7097 ]
7098 LabelGraphics
7099 [
7100 text "
7101 EClassifier class
7102 EDataType class
7103 EEnum class
7104 EModelElement class
7105 ENamedElement class
7106 EModelElement class UndefinedPart
7107 ENamedElement class UndefinedPart
7108 "
7109 fontSize 14
7110 fontName "Consolas"
7111 alignment "left"
7112 anchor "tl"
7113 borderDistance 6
7114 ]
7115 ]
7116
7117 node
7118 [
7119 id 16
7120 graphics
7121 [
7122 w 112.2
7123 h 26
7124 type "rectangle"
7125 fill "#FFFFFF"
7126 fill2 "#FFFFFF"
7127 outline "#000000"
7128 ]
7129 LabelGraphics
7130 [
7131 text "New Integers"
7132 outline "#000000"
7133 fill "#FFFFFF"
7134 fontSize 16
7135 fontName "Monospace"
7136 autoSizePolicy "node_width"
7137 anchor "t"
7138 borderDistance 0.0
7139 ]
7140 LabelGraphics
7141 [
7142 text "
7143 "
7144 fontSize 14
7145 fontName "Consolas"
7146 alignment "left"
7147 anchor "tl"
7148 borderDistance 6
7149 ]
7150 ]
7151
7152 node
7153 [
7154 id 17
7155 graphics
7156 [
7157 w 85.80000000000001
7158 h 26
7159 type "rectangle"
7160 fill "#FFFFFF"
7161 fill2 "#FFFFFF"
7162 outline "#000000"
7163 ]
7164 LabelGraphics
7165 [
7166 text "New Reals"
7167 outline "#000000"
7168 fill "#FFFFFF"
7169 fontSize 16
7170 fontName "Monospace"
7171 autoSizePolicy "node_width"
7172 anchor "t"
7173 borderDistance 0.0
7174 ]
7175 LabelGraphics
7176 [
7177 text "
7178 "
7179 fontSize 14
7180 fontName "Consolas"
7181 alignment "left"
7182 anchor "tl"
7183 borderDistance 6
7184 ]
7185 ]
7186
7187 node
7188 [
7189 id 18
7190 graphics
7191 [
7192 w 103.4
7193 h 26
7194 type "rectangle"
7195 fill "#FFFFFF"
7196 fill2 "#FFFFFF"
7197 outline "#000000"
7198 ]
7199 LabelGraphics
7200 [
7201 text "New Strings"
7202 outline "#000000"
7203 fill "#FFFFFF"
7204 fontSize 16
7205 fontName "Monospace"
7206 autoSizePolicy "node_width"
7207 anchor "t"
7208 borderDistance 0.0
7209 ]
7210 LabelGraphics
7211 [
7212 text "
7213 "
7214 fontSize 14
7215 fontName "Consolas"
7216 alignment "left"
7217 anchor "tl"
7218 borderDistance 6
7219 ]
7220 ]
7221
7222 node
7223 [
7224 id 19
7225 graphics
7226 [
7227 w 103.4
7228 h 26
7229 type "rectangle"
7230 fill "#FFFFFF"
7231 fill2 "#FFFFFF"
7232 outline "#000000"
7233 ]
7234 LabelGraphics
7235 [
7236 text "New Objects"
7237 outline "#000000"
7238 fill "#FFFFFF"
7239 fontSize 16
7240 fontName "Monospace"
7241 autoSizePolicy "node_width"
7242 anchor "t"
7243 borderDistance 0.0
7244 ]
7245 LabelGraphics
7246 [
7247 text "
7248 "
7249 fontSize 14
7250 fontName "Consolas"
7251 alignment "left"
7252 anchor "tl"
7253 borderDistance 6
7254 ]
7255 ]
7256 edge
7257 [
7258 source 11
7259 target 0
7260 graphics
7261 [
7262 fill "#000000"
7263 targetArrow "standard"
7264 ]
7265 LabelGraphics
7266 [
7267 text "ePackage reference EClassifier"
7268 fontSize 14
7269 fontName "Consolas"
7270 configuration "AutoFlippingLabel"
7271 model "six_pos"
7272 position "thead"
7273 ]
7274 ]
7275 edge
7276 [
7277 source 12
7278 target 0
7279 graphics
7280 [
7281 fill "#000000"
7282 targetArrow "standard"
7283 ]
7284 LabelGraphics
7285 [
7286 text "ePackage reference EClassifier"
7287 fontSize 14
7288 fontName "Consolas"
7289 configuration "AutoFlippingLabel"
7290 model "six_pos"
7291 position "thead"
7292 ]
7293 ]
7294 edge
7295 [
7296 source 14
7297 target 0
7298 graphics
7299 [
7300 fill "#000000"
7301 targetArrow "standard"
7302 ]
7303 LabelGraphics
7304 [
7305 text "ePackage reference EClassifier"
7306 fontSize 14
7307 fontName "Consolas"
7308 configuration "AutoFlippingLabel"
7309 model "six_pos"
7310 position "thead"
7311 ]
7312 ]
7313 edge
7314 [
7315 source 15
7316 target 13
7317 graphics
7318 [
7319 fill "#000000"
7320 targetArrow "standard"
7321 ]
7322 LabelGraphics
7323 [
7324 text "ePackage reference EClassifier"
7325 fontSize 14
7326 fontName "Consolas"
7327 configuration "AutoFlippingLabel"
7328 model "six_pos"
7329 position "thead"
7330 ]
7331 ]
7332 edge
7333 [
7334 source 0
7335 target 11
7336 graphics
7337 [
7338 fill "#000000"
7339 width 3
7340 targetArrow "standard"
7341 ]
7342 LabelGraphics
7343 [
7344 text "eClassifiers reference EPackage"
7345 fontSize 14
7346 fontName "Consolas"
7347 configuration "AutoFlippingLabel"
7348 model "six_pos"
7349 position "thead"
7350 ]
7351 ]
7352 edge
7353 [
7354 source 0
7355 target 12
7356 graphics
7357 [
7358 fill "#000000"
7359 width 3
7360 targetArrow "standard"
7361 ]
7362 LabelGraphics
7363 [
7364 text "eClassifiers reference EPackage"
7365 fontSize 14
7366 fontName "Consolas"
7367 configuration "AutoFlippingLabel"
7368 model "six_pos"
7369 position "thead"
7370 ]
7371 ]
7372 edge
7373 [
7374 source 0
7375 target 14
7376 graphics
7377 [
7378 fill "#000000"
7379 width 3
7380 targetArrow "standard"
7381 ]
7382 LabelGraphics
7383 [
7384 text "eClassifiers reference EPackage"
7385 fontSize 14
7386 fontName "Consolas"
7387 configuration "AutoFlippingLabel"
7388 model "six_pos"
7389 position "thead"
7390 ]
7391 ]
7392 edge
7393 [
7394 source 13
7395 target 15
7396 graphics
7397 [
7398 fill "#000000"
7399 width 3
7400 targetArrow "standard"
7401 ]
7402 LabelGraphics
7403 [
7404 text "eClassifiers reference EPackage"
7405 fontSize 14
7406 fontName "Consolas"
7407 configuration "AutoFlippingLabel"
7408 model "six_pos"
7409 position "thead"
7410 ]
7411 ]
7412 edge
7413 [
7414 source 0
7415 target 13
7416 graphics
7417 [
7418 fill "#000000"
7419 width 3
7420 targetArrow "standard"
7421 ]
7422 LabelGraphics
7423 [
7424 text "eSubpackages reference EPackage"
7425 fontSize 14
7426 fontName "Consolas"
7427 configuration "AutoFlippingLabel"
7428 model "six_pos"
7429 position "thead"
7430 ]
7431 ]
7432 edge
7433 [
7434 source 13
7435 target 0
7436 graphics
7437 [
7438 fill "#000000"
7439 targetArrow "standard"
7440 ]
7441 LabelGraphics
7442 [
7443 text "eSuperPackage reference EPackage"
7444 fontSize 14
7445 fontName "Consolas"
7446 configuration "AutoFlippingLabel"
7447 model "six_pos"
7448 position "thead"
7449 ]
7450 ]
7451 edge
7452 [
7453 source 12
7454 target 8
7455 graphics
7456 [
7457 fill "#000000"
7458 targetArrow "standard"
7459 ]
7460 LabelGraphics
7461 [
7462 text "instanceClassName attribute EClassifier"
7463 fontSize 14
7464 fontName "Consolas"
7465 configuration "AutoFlippingLabel"
7466 model "six_pos"
7467 position "thead"
7468 ]
7469 ]
7470 edge
7471 [
7472 source 11
7473 target 6
7474 graphics
7475 [
7476 fill "#000000"
7477 targetArrow "standard"
7478 ]
7479 LabelGraphics
7480 [
7481 text "instanceClassName attribute EClassifier"
7482 fontSize 14
7483 fontName "Consolas"
7484 configuration "AutoFlippingLabel"
7485 model "six_pos"
7486 position "thead"
7487 ]
7488 ]
7489 edge
7490 [
7491 source 11
7492 target 10
7493 graphics
7494 [
7495 fill "#000000"
7496 targetArrow "standard"
7497 ]
7498 LabelGraphics
7499 [
7500 text "instanceTypeName attribute EClassifier"
7501 fontSize 14
7502 fontName "Consolas"
7503 configuration "AutoFlippingLabel"
7504 model "six_pos"
7505 position "thead"
7506 ]
7507 ]
7508 edge
7509 [
7510 source 12
7511 target 8
7512 graphics
7513 [
7514 fill "#000000"
7515 targetArrow "standard"
7516 ]
7517 LabelGraphics
7518 [
7519 text "instanceTypeName attribute EClassifier"
7520 fontSize 14
7521 fontName "Consolas"
7522 configuration "AutoFlippingLabel"
7523 model "six_pos"
7524 position "thead"
7525 ]
7526 ]
7527 edge
7528 [
7529 source 0
7530 target 10
7531 graphics
7532 [
7533 fill "#000000"
7534 targetArrow "standard"
7535 ]
7536 LabelGraphics
7537 [
7538 text "name attribute ENamedElement"
7539 fontSize 14
7540 fontName "Consolas"
7541 configuration "AutoFlippingLabel"
7542 model "six_pos"
7543 position "thead"
7544 ]
7545 ]
7546 edge
7547 [
7548 source 12
7549 target 10
7550 graphics
7551 [
7552 fill "#000000"
7553 targetArrow "standard"
7554 ]
7555 LabelGraphics
7556 [
7557 text "name attribute ENamedElement"
7558 fontSize 14
7559 fontName "Consolas"
7560 configuration "AutoFlippingLabel"
7561 model "six_pos"
7562 position "thead"
7563 ]
7564 ]
7565 edge
7566 [
7567 source 11
7568 target 10
7569 graphics
7570 [
7571 fill "#000000"
7572 targetArrow "standard"
7573 ]
7574 LabelGraphics
7575 [
7576 text "name attribute ENamedElement"
7577 fontSize 14
7578 fontName "Consolas"
7579 configuration "AutoFlippingLabel"
7580 model "six_pos"
7581 position "thead"
7582 ]
7583 ]
7584 edge
7585 [
7586 source 13
7587 target 6
7588 graphics
7589 [
7590 fill "#000000"
7591 targetArrow "standard"
7592 ]
7593 LabelGraphics
7594 [
7595 text "name attribute ENamedElement"
7596 fontSize 14
7597 fontName "Consolas"
7598 configuration "AutoFlippingLabel"
7599 model "six_pos"
7600 position "thead"
7601 ]
7602 ]
7603 edge
7604 [
7605 source 0
7606 target 9
7607 graphics
7608 [
7609 fill "#000000"
7610 targetArrow "standard"
7611 ]
7612 LabelGraphics
7613 [
7614 text "nsURI attribute EPackage"
7615 fontSize 14
7616 fontName "Consolas"
7617 configuration "AutoFlippingLabel"
7618 model "six_pos"
7619 position "thead"
7620 ]
7621 ]
7622 edge
7623 [
7624 source 0
7625 target 8
7626 graphics
7627 [
7628 fill "#000000"
7629 targetArrow "standard"
7630 ]
7631 LabelGraphics
7632 [
7633 text "nsPrefix attribute EPackage"
7634 fontSize 14
7635 fontName "Consolas"
7636 configuration "AutoFlippingLabel"
7637 model "six_pos"
7638 position "thead"
7639 ]
7640 ]
7641]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png
new file mode 100644
index 00000000..c1d6f49f
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi
new file mode 100644
index 00000000..d9529633
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/>
4 <eClassifiers xsi:type="ecore:EEnum"/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/>
6 <eSubpackages name="A">
7 <eClassifiers xsi:type="ecore:EEnum"/>
8 </eSubpackages>
9</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml
new file mode 100644
index 00000000..f6242732
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml
@@ -0,0 +1,4762 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 226.60000000000002
9 h 40
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "Root literal FunctionType"
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 FunctionType enum
30 "
31 fontSize 14
32 fontName "Consolas"
33 alignment "left"
34 anchor "tl"
35 borderDistance 6
36 ]
37 ]
38
39 node
40 [
41 id 1
42 graphics
43 [
44 w 297.0
45 h 40
46 type "rectangle"
47 fill "#FFFFFF"
48 fill2 "#FFFFFF"
49 outline "#000000"
50 ]
51 LabelGraphics
52 [
53 text "Intermediate literal FunctionType"
54 outline "#000000"
55 fill "#FFFFFF"
56 fontSize 16
57 fontName "Monospace"
58 autoSizePolicy "node_width"
59 anchor "t"
60 borderDistance 0.0
61 ]
62 LabelGraphics
63 [
64 text "
65 FunctionType enum
66 "
67 fontSize 14
68 fontName "Consolas"
69 alignment "left"
70 anchor "tl"
71 borderDistance 6
72 ]
73 ]
74
75 node
76 [
77 id 2
78 graphics
79 [
80 w 226.60000000000002
81 h 40
82 type "rectangle"
83 fill "#FFFFFF"
84 fill2 "#FFFFFF"
85 outline "#000000"
86 ]
87 LabelGraphics
88 [
89 text "Leaf literal FunctionType"
90 outline "#000000"
91 fill "#FFFFFF"
92 fontSize 16
93 fontName "Monospace"
94 autoSizePolicy "node_width"
95 anchor "t"
96 borderDistance 0.0
97 ]
98 LabelGraphics
99 [
100 text "
101 FunctionType enum
102 "
103 fontSize 14
104 fontName "Consolas"
105 alignment "left"
106 anchor "tl"
107 borderDistance 6
108 ]
109 ]
110
111 node
112 [
113 id 3
114 graphics
115 [
116 w 361.90000000000003
117 h 54
118 type "rectangle"
119 fill "#FFFFFF"
120 fill2 "#FFFFFF"
121 outline "#000000"
122 ]
123 LabelGraphics
124 [
125 text "o 1"
126 outline "#000000"
127 fill "#FFFFFF"
128 fontSize 16
129 fontName "Monospace"
130 autoSizePolicy "node_width"
131 anchor "t"
132 borderDistance 0.0
133 ]
134 LabelGraphics
135 [
136 text "
137 FunctionalArchitectureModel class DefinedPart
138 FunctionalArchitectureModel class
139 "
140 fontSize 14
141 fontName "Consolas"
142 alignment "left"
143 anchor "tl"
144 borderDistance 6
145 ]
146 ]
147
148 node
149 [
150 id 4
151 graphics
152 [
153 w 41.800000000000004
154 h 26
155 type "rectangle"
156 fill "#FFFFFF"
157 fill2 "#FFFFFF"
158 outline "#000000"
159 ]
160 LabelGraphics
161 [
162 text "true"
163 outline "#000000"
164 fill "#FFFFFF"
165 fontSize 16
166 fontName "Monospace"
167 autoSizePolicy "node_width"
168 anchor "t"
169 borderDistance 0.0
170 ]
171 LabelGraphics
172 [
173 text "
174 "
175 fontSize 14
176 fontName "Consolas"
177 alignment "left"
178 anchor "tl"
179 borderDistance 6
180 ]
181 ]
182
183 node
184 [
185 id 5
186 graphics
187 [
188 w 50.6
189 h 26
190 type "rectangle"
191 fill "#FFFFFF"
192 fill2 "#FFFFFF"
193 outline "#000000"
194 ]
195 LabelGraphics
196 [
197 text "false"
198 outline "#000000"
199 fill "#FFFFFF"
200 fontSize 16
201 fontName "Monospace"
202 autoSizePolicy "node_width"
203 anchor "t"
204 borderDistance 0.0
205 ]
206 LabelGraphics
207 [
208 text "
209 "
210 fontSize 14
211 fontName "Consolas"
212 alignment "left"
213 anchor "tl"
214 borderDistance 6
215 ]
216 ]
217
218 node
219 [
220 id 6
221 graphics
222 [
223 w 192.50000000000003
224 h 54
225 type "rectangle"
226 fill "#FFFFFF"
227 fill2 "#FFFFFF"
228 outline "#000000"
229 ]
230 LabelGraphics
231 [
232 text "null"
233 outline "#000000"
234 fill "#FFFFFF"
235 fontSize 16
236 fontName "Monospace"
237 autoSizePolicy "node_width"
238 anchor "t"
239 borderDistance 0.0
240 ]
241 LabelGraphics
242 [
243 text "
244 FunctionalElement class
245 Function class
246 "
247 fontSize 14
248 fontName "Consolas"
249 alignment "left"
250 anchor "tl"
251 borderDistance 6
252 ]
253 ]
254
255 node
256 [
257 id 7
258 graphics
259 [
260 w 112.2
261 h 26
262 type "rectangle"
263 fill "#FFFFFF"
264 fill2 "#FFFFFF"
265 outline "#000000"
266 ]
267 LabelGraphics
268 [
269 text "New Integers"
270 outline "#000000"
271 fill "#FFFFFF"
272 fontSize 16
273 fontName "Monospace"
274 autoSizePolicy "node_width"
275 anchor "t"
276 borderDistance 0.0
277 ]
278 LabelGraphics
279 [
280 text "
281 "
282 fontSize 14
283 fontName "Consolas"
284 alignment "left"
285 anchor "tl"
286 borderDistance 6
287 ]
288 ]
289
290 node
291 [
292 id 8
293 graphics
294 [
295 w 85.80000000000001
296 h 26
297 type "rectangle"
298 fill "#FFFFFF"
299 fill2 "#FFFFFF"
300 outline "#000000"
301 ]
302 LabelGraphics
303 [
304 text "New Reals"
305 outline "#000000"
306 fill "#FFFFFF"
307 fontSize 16
308 fontName "Monospace"
309 autoSizePolicy "node_width"
310 anchor "t"
311 borderDistance 0.0
312 ]
313 LabelGraphics
314 [
315 text "
316 "
317 fontSize 14
318 fontName "Consolas"
319 alignment "left"
320 anchor "tl"
321 borderDistance 6
322 ]
323 ]
324
325 node
326 [
327 id 9
328 graphics
329 [
330 w 103.4
331 h 26
332 type "rectangle"
333 fill "#FFFFFF"
334 fill2 "#FFFFFF"
335 outline "#000000"
336 ]
337 LabelGraphics
338 [
339 text "New Strings"
340 outline "#000000"
341 fill "#FFFFFF"
342 fontSize 16
343 fontName "Monospace"
344 autoSizePolicy "node_width"
345 anchor "t"
346 borderDistance 0.0
347 ]
348 LabelGraphics
349 [
350 text "
351 "
352 fontSize 14
353 fontName "Consolas"
354 alignment "left"
355 anchor "tl"
356 borderDistance 6
357 ]
358 ]
359
360 node
361 [
362 id 10
363 graphics
364 [
365 w 103.4
366 h 26
367 type "rectangle"
368 fill "#FFFFFF"
369 fill2 "#FFFFFF"
370 outline "#000000"
371 ]
372 LabelGraphics
373 [
374 text "New Objects"
375 outline "#000000"
376 fill "#FFFFFF"
377 fontSize 16
378 fontName "Monospace"
379 autoSizePolicy "node_width"
380 anchor "t"
381 borderDistance 0.0
382 ]
383 LabelGraphics
384 [
385 text "
386 "
387 fontSize 14
388 fontName "Consolas"
389 alignment "left"
390 anchor "tl"
391 borderDistance 6
392 ]
393 ]
394 edge
395 [
396 source 6
397 target 3
398 graphics
399 [
400 fill "#000000"
401 targetArrow "standard"
402 ]
403 LabelGraphics
404 [
405 text "model reference FunctionalElement"
406 fontSize 14
407 fontName "Consolas"
408 configuration "AutoFlippingLabel"
409 model "six_pos"
410 position "thead"
411 ]
412 ]
413 edge
414 [
415 source 3
416 target 6
417 graphics
418 [
419 fill "#000000"
420 width 3
421 targetArrow "standard"
422 ]
423 LabelGraphics
424 [
425 text "rootElements reference FunctionalArchitectureModel"
426 fontSize 14
427 fontName "Consolas"
428 configuration "AutoFlippingLabel"
429 model "six_pos"
430 position "thead"
431 ]
432 ]
433 edge
434 [
435 source 6
436 target 1
437 graphics
438 [
439 fill "#000000"
440 targetArrow "standard"
441 ]
442 LabelGraphics
443 [
444 text "type attribute Function"
445 fontSize 14
446 fontName "Consolas"
447 configuration "AutoFlippingLabel"
448 model "six_pos"
449 position "thead"
450 ]
451 ]
452]
453graph
454[
455 node
456 [
457 id 0
458 graphics
459 [
460 w 226.60000000000002
461 h 40
462 type "rectangle"
463 fill "#FFFFFF"
464 fill2 "#FFFFFF"
465 outline "#000000"
466 ]
467 LabelGraphics
468 [
469 text "Root literal FunctionType"
470 outline "#000000"
471 fill "#FFFFFF"
472 fontSize 16
473 fontName "Monospace"
474 autoSizePolicy "node_width"
475 anchor "t"
476 borderDistance 0.0
477 ]
478 LabelGraphics
479 [
480 text "
481 FunctionType enum
482 "
483 fontSize 14
484 fontName "Consolas"
485 alignment "left"
486 anchor "tl"
487 borderDistance 6
488 ]
489 ]
490
491 node
492 [
493 id 1
494 graphics
495 [
496 w 297.0
497 h 40
498 type "rectangle"
499 fill "#FFFFFF"
500 fill2 "#FFFFFF"
501 outline "#000000"
502 ]
503 LabelGraphics
504 [
505 text "Intermediate literal FunctionType"
506 outline "#000000"
507 fill "#FFFFFF"
508 fontSize 16
509 fontName "Monospace"
510 autoSizePolicy "node_width"
511 anchor "t"
512 borderDistance 0.0
513 ]
514 LabelGraphics
515 [
516 text "
517 FunctionType enum
518 "
519 fontSize 14
520 fontName "Consolas"
521 alignment "left"
522 anchor "tl"
523 borderDistance 6
524 ]
525 ]
526
527 node
528 [
529 id 2
530 graphics
531 [
532 w 226.60000000000002
533 h 40
534 type "rectangle"
535 fill "#FFFFFF"
536 fill2 "#FFFFFF"
537 outline "#000000"
538 ]
539 LabelGraphics
540 [
541 text "Leaf literal FunctionType"
542 outline "#000000"
543 fill "#FFFFFF"
544 fontSize 16
545 fontName "Monospace"
546 autoSizePolicy "node_width"
547 anchor "t"
548 borderDistance 0.0
549 ]
550 LabelGraphics
551 [
552 text "
553 FunctionType enum
554 "
555 fontSize 14
556 fontName "Consolas"
557 alignment "left"
558 anchor "tl"
559 borderDistance 6
560 ]
561 ]
562
563 node
564 [
565 id 3
566 graphics
567 [
568 w 361.90000000000003
569 h 54
570 type "rectangle"
571 fill "#FFFFFF"
572 fill2 "#FFFFFF"
573 outline "#000000"
574 ]
575 LabelGraphics
576 [
577 text "o 1"
578 outline "#000000"
579 fill "#FFFFFF"
580 fontSize 16
581 fontName "Monospace"
582 autoSizePolicy "node_width"
583 anchor "t"
584 borderDistance 0.0
585 ]
586 LabelGraphics
587 [
588 text "
589 FunctionalArchitectureModel class DefinedPart
590 FunctionalArchitectureModel class
591 "
592 fontSize 14
593 fontName "Consolas"
594 alignment "left"
595 anchor "tl"
596 borderDistance 6
597 ]
598 ]
599
600 node
601 [
602 id 4
603 graphics
604 [
605 w 41.800000000000004
606 h 26
607 type "rectangle"
608 fill "#FFFFFF"
609 fill2 "#FFFFFF"
610 outline "#000000"
611 ]
612 LabelGraphics
613 [
614 text "true"
615 outline "#000000"
616 fill "#FFFFFF"
617 fontSize 16
618 fontName "Monospace"
619 autoSizePolicy "node_width"
620 anchor "t"
621 borderDistance 0.0
622 ]
623 LabelGraphics
624 [
625 text "
626 "
627 fontSize 14
628 fontName "Consolas"
629 alignment "left"
630 anchor "tl"
631 borderDistance 6
632 ]
633 ]
634
635 node
636 [
637 id 5
638 graphics
639 [
640 w 50.6
641 h 26
642 type "rectangle"
643 fill "#FFFFFF"
644 fill2 "#FFFFFF"
645 outline "#000000"
646 ]
647 LabelGraphics
648 [
649 text "false"
650 outline "#000000"
651 fill "#FFFFFF"
652 fontSize 16
653 fontName "Monospace"
654 autoSizePolicy "node_width"
655 anchor "t"
656 borderDistance 0.0
657 ]
658 LabelGraphics
659 [
660 text "
661 "
662 fontSize 14
663 fontName "Consolas"
664 alignment "left"
665 anchor "tl"
666 borderDistance 6
667 ]
668 ]
669
670 node
671 [
672 id 6
673 graphics
674 [
675 w 192.50000000000003
676 h 54
677 type "rectangle"
678 fill "#FFFFFF"
679 fill2 "#FFFFFF"
680 outline "#000000"
681 ]
682 LabelGraphics
683 [
684 text "null"
685 outline "#000000"
686 fill "#FFFFFF"
687 fontSize 16
688 fontName "Monospace"
689 autoSizePolicy "node_width"
690 anchor "t"
691 borderDistance 0.0
692 ]
693 LabelGraphics
694 [
695 text "
696 FunctionalElement class
697 Function class
698 "
699 fontSize 14
700 fontName "Consolas"
701 alignment "left"
702 anchor "tl"
703 borderDistance 6
704 ]
705 ]
706
707 node
708 [
709 id 7
710 graphics
711 [
712 w 112.2
713 h 26
714 type "rectangle"
715 fill "#FFFFFF"
716 fill2 "#FFFFFF"
717 outline "#000000"
718 ]
719 LabelGraphics
720 [
721 text "New Integers"
722 outline "#000000"
723 fill "#FFFFFF"
724 fontSize 16
725 fontName "Monospace"
726 autoSizePolicy "node_width"
727 anchor "t"
728 borderDistance 0.0
729 ]
730 LabelGraphics
731 [
732 text "
733 "
734 fontSize 14
735 fontName "Consolas"
736 alignment "left"
737 anchor "tl"
738 borderDistance 6
739 ]
740 ]
741
742 node
743 [
744 id 8
745 graphics
746 [
747 w 85.80000000000001
748 h 26
749 type "rectangle"
750 fill "#FFFFFF"
751 fill2 "#FFFFFF"
752 outline "#000000"
753 ]
754 LabelGraphics
755 [
756 text "New Reals"
757 outline "#000000"
758 fill "#FFFFFF"
759 fontSize 16
760 fontName "Monospace"
761 autoSizePolicy "node_width"
762 anchor "t"
763 borderDistance 0.0
764 ]
765 LabelGraphics
766 [
767 text "
768 "
769 fontSize 14
770 fontName "Consolas"
771 alignment "left"
772 anchor "tl"
773 borderDistance 6
774 ]
775 ]
776
777 node
778 [
779 id 9
780 graphics
781 [
782 w 103.4
783 h 26
784 type "rectangle"
785 fill "#FFFFFF"
786 fill2 "#FFFFFF"
787 outline "#000000"
788 ]
789 LabelGraphics
790 [
791 text "New Strings"
792 outline "#000000"
793 fill "#FFFFFF"
794 fontSize 16
795 fontName "Monospace"
796 autoSizePolicy "node_width"
797 anchor "t"
798 borderDistance 0.0
799 ]
800 LabelGraphics
801 [
802 text "
803 "
804 fontSize 14
805 fontName "Consolas"
806 alignment "left"
807 anchor "tl"
808 borderDistance 6
809 ]
810 ]
811
812 node
813 [
814 id 10
815 graphics
816 [
817 w 103.4
818 h 26
819 type "rectangle"
820 fill "#FFFFFF"
821 fill2 "#FFFFFF"
822 outline "#000000"
823 ]
824 LabelGraphics
825 [
826 text "New Objects"
827 outline "#000000"
828 fill "#FFFFFF"
829 fontSize 16
830 fontName "Monospace"
831 autoSizePolicy "node_width"
832 anchor "t"
833 borderDistance 0.0
834 ]
835 LabelGraphics
836 [
837 text "
838 "
839 fontSize 14
840 fontName "Consolas"
841 alignment "left"
842 anchor "tl"
843 borderDistance 6
844 ]
845 ]
846 edge
847 [
848 source 6
849 target 3
850 graphics
851 [
852 fill "#000000"
853 targetArrow "standard"
854 ]
855 LabelGraphics
856 [
857 text "model reference FunctionalElement"
858 fontSize 14
859 fontName "Consolas"
860 configuration "AutoFlippingLabel"
861 model "six_pos"
862 position "thead"
863 ]
864 ]
865 edge
866 [
867 source 3
868 target 6
869 graphics
870 [
871 fill "#000000"
872 width 3
873 targetArrow "standard"
874 ]
875 LabelGraphics
876 [
877 text "rootElements reference FunctionalArchitectureModel"
878 fontSize 14
879 fontName "Consolas"
880 configuration "AutoFlippingLabel"
881 model "six_pos"
882 position "thead"
883 ]
884 ]
885 edge
886 [
887 source 6
888 target 2
889 graphics
890 [
891 fill "#000000"
892 targetArrow "standard"
893 ]
894 LabelGraphics
895 [
896 text "type attribute Function"
897 fontSize 14
898 fontName "Consolas"
899 configuration "AutoFlippingLabel"
900 model "six_pos"
901 position "thead"
902 ]
903 ]
904]
905graph
906[
907 node
908 [
909 id 0
910 graphics
911 [
912 w 226.60000000000002
913 h 40
914 type "rectangle"
915 fill "#FFFFFF"
916 fill2 "#FFFFFF"
917 outline "#000000"
918 ]
919 LabelGraphics
920 [
921 text "Root literal FunctionType"
922 outline "#000000"
923 fill "#FFFFFF"
924 fontSize 16
925 fontName "Monospace"
926 autoSizePolicy "node_width"
927 anchor "t"
928 borderDistance 0.0
929 ]
930 LabelGraphics
931 [
932 text "
933 FunctionType enum
934 "
935 fontSize 14
936 fontName "Consolas"
937 alignment "left"
938 anchor "tl"
939 borderDistance 6
940 ]
941 ]
942
943 node
944 [
945 id 1
946 graphics
947 [
948 w 297.0
949 h 40
950 type "rectangle"
951 fill "#FFFFFF"
952 fill2 "#FFFFFF"
953 outline "#000000"
954 ]
955 LabelGraphics
956 [
957 text "Intermediate literal FunctionType"
958 outline "#000000"
959 fill "#FFFFFF"
960 fontSize 16
961 fontName "Monospace"
962 autoSizePolicy "node_width"
963 anchor "t"
964 borderDistance 0.0
965 ]
966 LabelGraphics
967 [
968 text "
969 FunctionType enum
970 "
971 fontSize 14
972 fontName "Consolas"
973 alignment "left"
974 anchor "tl"
975 borderDistance 6
976 ]
977 ]
978
979 node
980 [
981 id 2
982 graphics
983 [
984 w 226.60000000000002
985 h 40
986 type "rectangle"
987 fill "#FFFFFF"
988 fill2 "#FFFFFF"
989 outline "#000000"
990 ]
991 LabelGraphics
992 [
993 text "Leaf literal FunctionType"
994 outline "#000000"
995 fill "#FFFFFF"
996 fontSize 16
997 fontName "Monospace"
998 autoSizePolicy "node_width"
999 anchor "t"
1000 borderDistance 0.0
1001 ]
1002 LabelGraphics
1003 [
1004 text "
1005 FunctionType enum
1006 "
1007 fontSize 14
1008 fontName "Consolas"
1009 alignment "left"
1010 anchor "tl"
1011 borderDistance 6
1012 ]
1013 ]
1014
1015 node
1016 [
1017 id 3
1018 graphics
1019 [
1020 w 361.90000000000003
1021 h 54
1022 type "rectangle"
1023 fill "#FFFFFF"
1024 fill2 "#FFFFFF"
1025 outline "#000000"
1026 ]
1027 LabelGraphics
1028 [
1029 text "o 1"
1030 outline "#000000"
1031 fill "#FFFFFF"
1032 fontSize 16
1033 fontName "Monospace"
1034 autoSizePolicy "node_width"
1035 anchor "t"
1036 borderDistance 0.0
1037 ]
1038 LabelGraphics
1039 [
1040 text "
1041 FunctionalArchitectureModel class DefinedPart
1042 FunctionalArchitectureModel class
1043 "
1044 fontSize 14
1045 fontName "Consolas"
1046 alignment "left"
1047 anchor "tl"
1048 borderDistance 6
1049 ]
1050 ]
1051
1052 node
1053 [
1054 id 4
1055 graphics
1056 [
1057 w 41.800000000000004
1058 h 26
1059 type "rectangle"
1060 fill "#FFFFFF"
1061 fill2 "#FFFFFF"
1062 outline "#000000"
1063 ]
1064 LabelGraphics
1065 [
1066 text "true"
1067 outline "#000000"
1068 fill "#FFFFFF"
1069 fontSize 16
1070 fontName "Monospace"
1071 autoSizePolicy "node_width"
1072 anchor "t"
1073 borderDistance 0.0
1074 ]
1075 LabelGraphics
1076 [
1077 text "
1078 "
1079 fontSize 14
1080 fontName "Consolas"
1081 alignment "left"
1082 anchor "tl"
1083 borderDistance 6
1084 ]
1085 ]
1086
1087 node
1088 [
1089 id 5
1090 graphics
1091 [
1092 w 50.6
1093 h 26
1094 type "rectangle"
1095 fill "#FFFFFF"
1096 fill2 "#FFFFFF"
1097 outline "#000000"
1098 ]
1099 LabelGraphics
1100 [
1101 text "false"
1102 outline "#000000"
1103 fill "#FFFFFF"
1104 fontSize 16
1105 fontName "Monospace"
1106 autoSizePolicy "node_width"
1107 anchor "t"
1108 borderDistance 0.0
1109 ]
1110 LabelGraphics
1111 [
1112 text "
1113 "
1114 fontSize 14
1115 fontName "Consolas"
1116 alignment "left"
1117 anchor "tl"
1118 borderDistance 6
1119 ]
1120 ]
1121
1122 node
1123 [
1124 id 6
1125 graphics
1126 [
1127 w 192.50000000000003
1128 h 54
1129 type "rectangle"
1130 fill "#FFFFFF"
1131 fill2 "#FFFFFF"
1132 outline "#000000"
1133 ]
1134 LabelGraphics
1135 [
1136 text "null"
1137 outline "#000000"
1138 fill "#FFFFFF"
1139 fontSize 16
1140 fontName "Monospace"
1141 autoSizePolicy "node_width"
1142 anchor "t"
1143 borderDistance 0.0
1144 ]
1145 LabelGraphics
1146 [
1147 text "
1148 FunctionalElement class
1149 Function class
1150 "
1151 fontSize 14
1152 fontName "Consolas"
1153 alignment "left"
1154 anchor "tl"
1155 borderDistance 6
1156 ]
1157 ]
1158
1159 node
1160 [
1161 id 7
1162 graphics
1163 [
1164 w 112.2
1165 h 26
1166 type "rectangle"
1167 fill "#FFFFFF"
1168 fill2 "#FFFFFF"
1169 outline "#000000"
1170 ]
1171 LabelGraphics
1172 [
1173 text "New Integers"
1174 outline "#000000"
1175 fill "#FFFFFF"
1176 fontSize 16
1177 fontName "Monospace"
1178 autoSizePolicy "node_width"
1179 anchor "t"
1180 borderDistance 0.0
1181 ]
1182 LabelGraphics
1183 [
1184 text "
1185 "
1186 fontSize 14
1187 fontName "Consolas"
1188 alignment "left"
1189 anchor "tl"
1190 borderDistance 6
1191 ]
1192 ]
1193
1194 node
1195 [
1196 id 8
1197 graphics
1198 [
1199 w 85.80000000000001
1200 h 26
1201 type "rectangle"
1202 fill "#FFFFFF"
1203 fill2 "#FFFFFF"
1204 outline "#000000"
1205 ]
1206 LabelGraphics
1207 [
1208 text "New Reals"
1209 outline "#000000"
1210 fill "#FFFFFF"
1211 fontSize 16
1212 fontName "Monospace"
1213 autoSizePolicy "node_width"
1214 anchor "t"
1215 borderDistance 0.0
1216 ]
1217 LabelGraphics
1218 [
1219 text "
1220 "
1221 fontSize 14
1222 fontName "Consolas"
1223 alignment "left"
1224 anchor "tl"
1225 borderDistance 6
1226 ]
1227 ]
1228
1229 node
1230 [
1231 id 9
1232 graphics
1233 [
1234 w 103.4
1235 h 26
1236 type "rectangle"
1237 fill "#FFFFFF"
1238 fill2 "#FFFFFF"
1239 outline "#000000"
1240 ]
1241 LabelGraphics
1242 [
1243 text "New Strings"
1244 outline "#000000"
1245 fill "#FFFFFF"
1246 fontSize 16
1247 fontName "Monospace"
1248 autoSizePolicy "node_width"
1249 anchor "t"
1250 borderDistance 0.0
1251 ]
1252 LabelGraphics
1253 [
1254 text "
1255 "
1256 fontSize 14
1257 fontName "Consolas"
1258 alignment "left"
1259 anchor "tl"
1260 borderDistance 6
1261 ]
1262 ]
1263
1264 node
1265 [
1266 id 10
1267 graphics
1268 [
1269 w 103.4
1270 h 26
1271 type "rectangle"
1272 fill "#FFFFFF"
1273 fill2 "#FFFFFF"
1274 outline "#000000"
1275 ]
1276 LabelGraphics
1277 [
1278 text "New Objects"
1279 outline "#000000"
1280 fill "#FFFFFF"
1281 fontSize 16
1282 fontName "Monospace"
1283 autoSizePolicy "node_width"
1284 anchor "t"
1285 borderDistance 0.0
1286 ]
1287 LabelGraphics
1288 [
1289 text "
1290 "
1291 fontSize 14
1292 fontName "Consolas"
1293 alignment "left"
1294 anchor "tl"
1295 borderDistance 6
1296 ]
1297 ]
1298 edge
1299 [
1300 source 6
1301 target 3
1302 graphics
1303 [
1304 fill "#000000"
1305 targetArrow "standard"
1306 ]
1307 LabelGraphics
1308 [
1309 text "model reference FunctionalElement"
1310 fontSize 14
1311 fontName "Consolas"
1312 configuration "AutoFlippingLabel"
1313 model "six_pos"
1314 position "thead"
1315 ]
1316 ]
1317 edge
1318 [
1319 source 3
1320 target 6
1321 graphics
1322 [
1323 fill "#000000"
1324 width 3
1325 targetArrow "standard"
1326 ]
1327 LabelGraphics
1328 [
1329 text "rootElements reference FunctionalArchitectureModel"
1330 fontSize 14
1331 fontName "Consolas"
1332 configuration "AutoFlippingLabel"
1333 model "six_pos"
1334 position "thead"
1335 ]
1336 ]
1337 edge
1338 [
1339 source 6
1340 target 0
1341 graphics
1342 [
1343 fill "#000000"
1344 targetArrow "standard"
1345 ]
1346 LabelGraphics
1347 [
1348 text "type attribute Function"
1349 fontSize 14
1350 fontName "Consolas"
1351 configuration "AutoFlippingLabel"
1352 model "six_pos"
1353 position "thead"
1354 ]
1355 ]
1356]
1357graph
1358[
1359 node
1360 [
1361 id 0
1362 graphics
1363 [
1364 w 226.60000000000002
1365 h 40
1366 type "rectangle"
1367 fill "#FFFFFF"
1368 fill2 "#FFFFFF"
1369 outline "#000000"
1370 ]
1371 LabelGraphics
1372 [
1373 text "Root literal FunctionType"
1374 outline "#000000"
1375 fill "#FFFFFF"
1376 fontSize 16
1377 fontName "Monospace"
1378 autoSizePolicy "node_width"
1379 anchor "t"
1380 borderDistance 0.0
1381 ]
1382 LabelGraphics
1383 [
1384 text "
1385 FunctionType enum
1386 "
1387 fontSize 14
1388 fontName "Consolas"
1389 alignment "left"
1390 anchor "tl"
1391 borderDistance 6
1392 ]
1393 ]
1394
1395 node
1396 [
1397 id 1
1398 graphics
1399 [
1400 w 297.0
1401 h 40
1402 type "rectangle"
1403 fill "#FFFFFF"
1404 fill2 "#FFFFFF"
1405 outline "#000000"
1406 ]
1407 LabelGraphics
1408 [
1409 text "Intermediate literal FunctionType"
1410 outline "#000000"
1411 fill "#FFFFFF"
1412 fontSize 16
1413 fontName "Monospace"
1414 autoSizePolicy "node_width"
1415 anchor "t"
1416 borderDistance 0.0
1417 ]
1418 LabelGraphics
1419 [
1420 text "
1421 FunctionType enum
1422 "
1423 fontSize 14
1424 fontName "Consolas"
1425 alignment "left"
1426 anchor "tl"
1427 borderDistance 6
1428 ]
1429 ]
1430
1431 node
1432 [
1433 id 2
1434 graphics
1435 [
1436 w 226.60000000000002
1437 h 40
1438 type "rectangle"
1439 fill "#FFFFFF"
1440 fill2 "#FFFFFF"
1441 outline "#000000"
1442 ]
1443 LabelGraphics
1444 [
1445 text "Leaf literal FunctionType"
1446 outline "#000000"
1447 fill "#FFFFFF"
1448 fontSize 16
1449 fontName "Monospace"
1450 autoSizePolicy "node_width"
1451 anchor "t"
1452 borderDistance 0.0
1453 ]
1454 LabelGraphics
1455 [
1456 text "
1457 FunctionType enum
1458 "
1459 fontSize 14
1460 fontName "Consolas"
1461 alignment "left"
1462 anchor "tl"
1463 borderDistance 6
1464 ]
1465 ]
1466
1467 node
1468 [
1469 id 3
1470 graphics
1471 [
1472 w 361.90000000000003
1473 h 54
1474 type "rectangle"
1475 fill "#FFFFFF"
1476 fill2 "#FFFFFF"
1477 outline "#000000"
1478 ]
1479 LabelGraphics
1480 [
1481 text "o 1"
1482 outline "#000000"
1483 fill "#FFFFFF"
1484 fontSize 16
1485 fontName "Monospace"
1486 autoSizePolicy "node_width"
1487 anchor "t"
1488 borderDistance 0.0
1489 ]
1490 LabelGraphics
1491 [
1492 text "
1493 FunctionalArchitectureModel class DefinedPart
1494 FunctionalArchitectureModel class
1495 "
1496 fontSize 14
1497 fontName "Consolas"
1498 alignment "left"
1499 anchor "tl"
1500 borderDistance 6
1501 ]
1502 ]
1503
1504 node
1505 [
1506 id 4
1507 graphics
1508 [
1509 w 41.800000000000004
1510 h 26
1511 type "rectangle"
1512 fill "#FFFFFF"
1513 fill2 "#FFFFFF"
1514 outline "#000000"
1515 ]
1516 LabelGraphics
1517 [
1518 text "true"
1519 outline "#000000"
1520 fill "#FFFFFF"
1521 fontSize 16
1522 fontName "Monospace"
1523 autoSizePolicy "node_width"
1524 anchor "t"
1525 borderDistance 0.0
1526 ]
1527 LabelGraphics
1528 [
1529 text "
1530 "
1531 fontSize 14
1532 fontName "Consolas"
1533 alignment "left"
1534 anchor "tl"
1535 borderDistance 6
1536 ]
1537 ]
1538
1539 node
1540 [
1541 id 5
1542 graphics
1543 [
1544 w 50.6
1545 h 26
1546 type "rectangle"
1547 fill "#FFFFFF"
1548 fill2 "#FFFFFF"
1549 outline "#000000"
1550 ]
1551 LabelGraphics
1552 [
1553 text "false"
1554 outline "#000000"
1555 fill "#FFFFFF"
1556 fontSize 16
1557 fontName "Monospace"
1558 autoSizePolicy "node_width"
1559 anchor "t"
1560 borderDistance 0.0
1561 ]
1562 LabelGraphics
1563 [
1564 text "
1565 "
1566 fontSize 14
1567 fontName "Consolas"
1568 alignment "left"
1569 anchor "tl"
1570 borderDistance 6
1571 ]
1572 ]
1573
1574 node
1575 [
1576 id 6
1577 graphics
1578 [
1579 w 192.50000000000003
1580 h 54
1581 type "rectangle"
1582 fill "#FFFFFF"
1583 fill2 "#FFFFFF"
1584 outline "#000000"
1585 ]
1586 LabelGraphics
1587 [
1588 text "null"
1589 outline "#000000"
1590 fill "#FFFFFF"
1591 fontSize 16
1592 fontName "Monospace"
1593 autoSizePolicy "node_width"
1594 anchor "t"
1595 borderDistance 0.0
1596 ]
1597 LabelGraphics
1598 [
1599 text "
1600 FunctionalElement class
1601 Function class
1602 "
1603 fontSize 14
1604 fontName "Consolas"
1605 alignment "left"
1606 anchor "tl"
1607 borderDistance 6
1608 ]
1609 ]
1610
1611 node
1612 [
1613 id 7
1614 graphics
1615 [
1616 w 112.2
1617 h 26
1618 type "rectangle"
1619 fill "#FFFFFF"
1620 fill2 "#FFFFFF"
1621 outline "#000000"
1622 ]
1623 LabelGraphics
1624 [
1625 text "New Integers"
1626 outline "#000000"
1627 fill "#FFFFFF"
1628 fontSize 16
1629 fontName "Monospace"
1630 autoSizePolicy "node_width"
1631 anchor "t"
1632 borderDistance 0.0
1633 ]
1634 LabelGraphics
1635 [
1636 text "
1637 "
1638 fontSize 14
1639 fontName "Consolas"
1640 alignment "left"
1641 anchor "tl"
1642 borderDistance 6
1643 ]
1644 ]
1645
1646 node
1647 [
1648 id 8
1649 graphics
1650 [
1651 w 85.80000000000001
1652 h 26
1653 type "rectangle"
1654 fill "#FFFFFF"
1655 fill2 "#FFFFFF"
1656 outline "#000000"
1657 ]
1658 LabelGraphics
1659 [
1660 text "New Reals"
1661 outline "#000000"
1662 fill "#FFFFFF"
1663 fontSize 16
1664 fontName "Monospace"
1665 autoSizePolicy "node_width"
1666 anchor "t"
1667 borderDistance 0.0
1668 ]
1669 LabelGraphics
1670 [
1671 text "
1672 "
1673 fontSize 14
1674 fontName "Consolas"
1675 alignment "left"
1676 anchor "tl"
1677 borderDistance 6
1678 ]
1679 ]
1680
1681 node
1682 [
1683 id 9
1684 graphics
1685 [
1686 w 103.4
1687 h 26
1688 type "rectangle"
1689 fill "#FFFFFF"
1690 fill2 "#FFFFFF"
1691 outline "#000000"
1692 ]
1693 LabelGraphics
1694 [
1695 text "New Strings"
1696 outline "#000000"
1697 fill "#FFFFFF"
1698 fontSize 16
1699 fontName "Monospace"
1700 autoSizePolicy "node_width"
1701 anchor "t"
1702 borderDistance 0.0
1703 ]
1704 LabelGraphics
1705 [
1706 text "
1707 "
1708 fontSize 14
1709 fontName "Consolas"
1710 alignment "left"
1711 anchor "tl"
1712 borderDistance 6
1713 ]
1714 ]
1715
1716 node
1717 [
1718 id 10
1719 graphics
1720 [
1721 w 103.4
1722 h 26
1723 type "rectangle"
1724 fill "#FFFFFF"
1725 fill2 "#FFFFFF"
1726 outline "#000000"
1727 ]
1728 LabelGraphics
1729 [
1730 text "New Objects"
1731 outline "#000000"
1732 fill "#FFFFFF"
1733 fontSize 16
1734 fontName "Monospace"
1735 autoSizePolicy "node_width"
1736 anchor "t"
1737 borderDistance 0.0
1738 ]
1739 LabelGraphics
1740 [
1741 text "
1742 "
1743 fontSize 14
1744 fontName "Consolas"
1745 alignment "left"
1746 anchor "tl"
1747 borderDistance 6
1748 ]
1749 ]
1750 edge
1751 [
1752 source 6
1753 target 3
1754 graphics
1755 [
1756 fill "#000000"
1757 targetArrow "standard"
1758 ]
1759 LabelGraphics
1760 [
1761 text "model reference FunctionalElement"
1762 fontSize 14
1763 fontName "Consolas"
1764 configuration "AutoFlippingLabel"
1765 model "six_pos"
1766 position "thead"
1767 ]
1768 ]
1769 edge
1770 [
1771 source 3
1772 target 6
1773 graphics
1774 [
1775 fill "#000000"
1776 width 3
1777 targetArrow "standard"
1778 ]
1779 LabelGraphics
1780 [
1781 text "rootElements reference FunctionalArchitectureModel"
1782 fontSize 14
1783 fontName "Consolas"
1784 configuration "AutoFlippingLabel"
1785 model "six_pos"
1786 position "thead"
1787 ]
1788 ]
1789 edge
1790 [
1791 source 6
1792 target 2
1793 graphics
1794 [
1795 fill "#000000"
1796 targetArrow "standard"
1797 ]
1798 LabelGraphics
1799 [
1800 text "type attribute Function"
1801 fontSize 14
1802 fontName "Consolas"
1803 configuration "AutoFlippingLabel"
1804 model "six_pos"
1805 position "thead"
1806 ]
1807 ]
1808]
1809graph
1810[
1811 node
1812 [
1813 id 0
1814 graphics
1815 [
1816 w 226.60000000000002
1817 h 40
1818 type "rectangle"
1819 fill "#FFFFFF"
1820 fill2 "#FFFFFF"
1821 outline "#000000"
1822 ]
1823 LabelGraphics
1824 [
1825 text "Root literal FunctionType"
1826 outline "#000000"
1827 fill "#FFFFFF"
1828 fontSize 16
1829 fontName "Monospace"
1830 autoSizePolicy "node_width"
1831 anchor "t"
1832 borderDistance 0.0
1833 ]
1834 LabelGraphics
1835 [
1836 text "
1837 FunctionType enum
1838 "
1839 fontSize 14
1840 fontName "Consolas"
1841 alignment "left"
1842 anchor "tl"
1843 borderDistance 6
1844 ]
1845 ]
1846
1847 node
1848 [
1849 id 1
1850 graphics
1851 [
1852 w 297.0
1853 h 40
1854 type "rectangle"
1855 fill "#FFFFFF"
1856 fill2 "#FFFFFF"
1857 outline "#000000"
1858 ]
1859 LabelGraphics
1860 [
1861 text "Intermediate literal FunctionType"
1862 outline "#000000"
1863 fill "#FFFFFF"
1864 fontSize 16
1865 fontName "Monospace"
1866 autoSizePolicy "node_width"
1867 anchor "t"
1868 borderDistance 0.0
1869 ]
1870 LabelGraphics
1871 [
1872 text "
1873 FunctionType enum
1874 "
1875 fontSize 14
1876 fontName "Consolas"
1877 alignment "left"
1878 anchor "tl"
1879 borderDistance 6
1880 ]
1881 ]
1882
1883 node
1884 [
1885 id 2
1886 graphics
1887 [
1888 w 226.60000000000002
1889 h 40
1890 type "rectangle"
1891 fill "#FFFFFF"
1892 fill2 "#FFFFFF"
1893 outline "#000000"
1894 ]
1895 LabelGraphics
1896 [
1897 text "Leaf literal FunctionType"
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 FunctionType enum
1910 "
1911 fontSize 14
1912 fontName "Consolas"
1913 alignment "left"
1914 anchor "tl"
1915 borderDistance 6
1916 ]
1917 ]
1918
1919 node
1920 [
1921 id 3
1922 graphics
1923 [
1924 w 361.90000000000003
1925 h 54
1926 type "rectangle"
1927 fill "#FFFFFF"
1928 fill2 "#FFFFFF"
1929 outline "#000000"
1930 ]
1931 LabelGraphics
1932 [
1933 text "o 1"
1934 outline "#000000"
1935 fill "#FFFFFF"
1936 fontSize 16
1937 fontName "Monospace"
1938 autoSizePolicy "node_width"
1939 anchor "t"
1940 borderDistance 0.0
1941 ]
1942 LabelGraphics
1943 [
1944 text "
1945 FunctionalArchitectureModel class DefinedPart
1946 FunctionalArchitectureModel class
1947 "
1948 fontSize 14
1949 fontName "Consolas"
1950 alignment "left"
1951 anchor "tl"
1952 borderDistance 6
1953 ]
1954 ]
1955
1956 node
1957 [
1958 id 4
1959 graphics
1960 [
1961 w 41.800000000000004
1962 h 26
1963 type "rectangle"
1964 fill "#FFFFFF"
1965 fill2 "#FFFFFF"
1966 outline "#000000"
1967 ]
1968 LabelGraphics
1969 [
1970 text "true"
1971 outline "#000000"
1972 fill "#FFFFFF"
1973 fontSize 16
1974 fontName "Monospace"
1975 autoSizePolicy "node_width"
1976 anchor "t"
1977 borderDistance 0.0
1978 ]
1979 LabelGraphics
1980 [
1981 text "
1982 "
1983 fontSize 14
1984 fontName "Consolas"
1985 alignment "left"
1986 anchor "tl"
1987 borderDistance 6
1988 ]
1989 ]
1990
1991 node
1992 [
1993 id 5
1994 graphics
1995 [
1996 w 50.6
1997 h 26
1998 type "rectangle"
1999 fill "#FFFFFF"
2000 fill2 "#FFFFFF"
2001 outline "#000000"
2002 ]
2003 LabelGraphics
2004 [
2005 text "false"
2006 outline "#000000"
2007 fill "#FFFFFF"
2008 fontSize 16
2009 fontName "Monospace"
2010 autoSizePolicy "node_width"
2011 anchor "t"
2012 borderDistance 0.0
2013 ]
2014 LabelGraphics
2015 [
2016 text "
2017 "
2018 fontSize 14
2019 fontName "Consolas"
2020 alignment "left"
2021 anchor "tl"
2022 borderDistance 6
2023 ]
2024 ]
2025
2026 node
2027 [
2028 id 6
2029 graphics
2030 [
2031 w 192.50000000000003
2032 h 54
2033 type "rectangle"
2034 fill "#FFFFFF"
2035 fill2 "#FFFFFF"
2036 outline "#000000"
2037 ]
2038 LabelGraphics
2039 [
2040 text "null"
2041 outline "#000000"
2042 fill "#FFFFFF"
2043 fontSize 16
2044 fontName "Monospace"
2045 autoSizePolicy "node_width"
2046 anchor "t"
2047 borderDistance 0.0
2048 ]
2049 LabelGraphics
2050 [
2051 text "
2052 FunctionalElement class
2053 Function class
2054 "
2055 fontSize 14
2056 fontName "Consolas"
2057 alignment "left"
2058 anchor "tl"
2059 borderDistance 6
2060 ]
2061 ]
2062
2063 node
2064 [
2065 id 7
2066 graphics
2067 [
2068 w 112.2
2069 h 26
2070 type "rectangle"
2071 fill "#FFFFFF"
2072 fill2 "#FFFFFF"
2073 outline "#000000"
2074 ]
2075 LabelGraphics
2076 [
2077 text "New Integers"
2078 outline "#000000"
2079 fill "#FFFFFF"
2080 fontSize 16
2081 fontName "Monospace"
2082 autoSizePolicy "node_width"
2083 anchor "t"
2084 borderDistance 0.0
2085 ]
2086 LabelGraphics
2087 [
2088 text "
2089 "
2090 fontSize 14
2091 fontName "Consolas"
2092 alignment "left"
2093 anchor "tl"
2094 borderDistance 6
2095 ]
2096 ]
2097
2098 node
2099 [
2100 id 8
2101 graphics
2102 [
2103 w 85.80000000000001
2104 h 26
2105 type "rectangle"
2106 fill "#FFFFFF"
2107 fill2 "#FFFFFF"
2108 outline "#000000"
2109 ]
2110 LabelGraphics
2111 [
2112 text "New Reals"
2113 outline "#000000"
2114 fill "#FFFFFF"
2115 fontSize 16
2116 fontName "Monospace"
2117 autoSizePolicy "node_width"
2118 anchor "t"
2119 borderDistance 0.0
2120 ]
2121 LabelGraphics
2122 [
2123 text "
2124 "
2125 fontSize 14
2126 fontName "Consolas"
2127 alignment "left"
2128 anchor "tl"
2129 borderDistance 6
2130 ]
2131 ]
2132
2133 node
2134 [
2135 id 9
2136 graphics
2137 [
2138 w 103.4
2139 h 26
2140 type "rectangle"
2141 fill "#FFFFFF"
2142 fill2 "#FFFFFF"
2143 outline "#000000"
2144 ]
2145 LabelGraphics
2146 [
2147 text "New Strings"
2148 outline "#000000"
2149 fill "#FFFFFF"
2150 fontSize 16
2151 fontName "Monospace"
2152 autoSizePolicy "node_width"
2153 anchor "t"
2154 borderDistance 0.0
2155 ]
2156 LabelGraphics
2157 [
2158 text "
2159 "
2160 fontSize 14
2161 fontName "Consolas"
2162 alignment "left"
2163 anchor "tl"
2164 borderDistance 6
2165 ]
2166 ]
2167
2168 node
2169 [
2170 id 10
2171 graphics
2172 [
2173 w 103.4
2174 h 26
2175 type "rectangle"
2176 fill "#FFFFFF"
2177 fill2 "#FFFFFF"
2178 outline "#000000"
2179 ]
2180 LabelGraphics
2181 [
2182 text "New Objects"
2183 outline "#000000"
2184 fill "#FFFFFF"
2185 fontSize 16
2186 fontName "Monospace"
2187 autoSizePolicy "node_width"
2188 anchor "t"
2189 borderDistance 0.0
2190 ]
2191 LabelGraphics
2192 [
2193 text "
2194 "
2195 fontSize 14
2196 fontName "Consolas"
2197 alignment "left"
2198 anchor "tl"
2199 borderDistance 6
2200 ]
2201 ]
2202 edge
2203 [
2204 source 6
2205 target 3
2206 graphics
2207 [
2208 fill "#000000"
2209 targetArrow "standard"
2210 ]
2211 LabelGraphics
2212 [
2213 text "model reference FunctionalElement"
2214 fontSize 14
2215 fontName "Consolas"
2216 configuration "AutoFlippingLabel"
2217 model "six_pos"
2218 position "thead"
2219 ]
2220 ]
2221 edge
2222 [
2223 source 3
2224 target 6
2225 graphics
2226 [
2227 fill "#000000"
2228 width 3
2229 targetArrow "standard"
2230 ]
2231 LabelGraphics
2232 [
2233 text "rootElements reference FunctionalArchitectureModel"
2234 fontSize 14
2235 fontName "Consolas"
2236 configuration "AutoFlippingLabel"
2237 model "six_pos"
2238 position "thead"
2239 ]
2240 ]
2241 edge
2242 [
2243 source 6
2244 target 1
2245 graphics
2246 [
2247 fill "#000000"
2248 targetArrow "standard"
2249 ]
2250 LabelGraphics
2251 [
2252 text "type attribute Function"
2253 fontSize 14
2254 fontName "Consolas"
2255 configuration "AutoFlippingLabel"
2256 model "six_pos"
2257 position "thead"
2258 ]
2259 ]
2260]
2261graph
2262[
2263 node
2264 [
2265 id 0
2266 graphics
2267 [
2268 w 226.60000000000002
2269 h 40
2270 type "rectangle"
2271 fill "#FFFFFF"
2272 fill2 "#FFFFFF"
2273 outline "#000000"
2274 ]
2275 LabelGraphics
2276 [
2277 text "Root literal FunctionType"
2278 outline "#000000"
2279 fill "#FFFFFF"
2280 fontSize 16
2281 fontName "Monospace"
2282 autoSizePolicy "node_width"
2283 anchor "t"
2284 borderDistance 0.0
2285 ]
2286 LabelGraphics
2287 [
2288 text "
2289 FunctionType enum
2290 "
2291 fontSize 14
2292 fontName "Consolas"
2293 alignment "left"
2294 anchor "tl"
2295 borderDistance 6
2296 ]
2297 ]
2298
2299 node
2300 [
2301 id 1
2302 graphics
2303 [
2304 w 297.0
2305 h 40
2306 type "rectangle"
2307 fill "#FFFFFF"
2308 fill2 "#FFFFFF"
2309 outline "#000000"
2310 ]
2311 LabelGraphics
2312 [
2313 text "Intermediate literal FunctionType"
2314 outline "#000000"
2315 fill "#FFFFFF"
2316 fontSize 16
2317 fontName "Monospace"
2318 autoSizePolicy "node_width"
2319 anchor "t"
2320 borderDistance 0.0
2321 ]
2322 LabelGraphics
2323 [
2324 text "
2325 FunctionType enum
2326 "
2327 fontSize 14
2328 fontName "Consolas"
2329 alignment "left"
2330 anchor "tl"
2331 borderDistance 6
2332 ]
2333 ]
2334
2335 node
2336 [
2337 id 2
2338 graphics
2339 [
2340 w 226.60000000000002
2341 h 40
2342 type "rectangle"
2343 fill "#FFFFFF"
2344 fill2 "#FFFFFF"
2345 outline "#000000"
2346 ]
2347 LabelGraphics
2348 [
2349 text "Leaf literal FunctionType"
2350 outline "#000000"
2351 fill "#FFFFFF"
2352 fontSize 16
2353 fontName "Monospace"
2354 autoSizePolicy "node_width"
2355 anchor "t"
2356 borderDistance 0.0
2357 ]
2358 LabelGraphics
2359 [
2360 text "
2361 FunctionType enum
2362 "
2363 fontSize 14
2364 fontName "Consolas"
2365 alignment "left"
2366 anchor "tl"
2367 borderDistance 6
2368 ]
2369 ]
2370
2371 node
2372 [
2373 id 3
2374 graphics
2375 [
2376 w 361.90000000000003
2377 h 54
2378 type "rectangle"
2379 fill "#FFFFFF"
2380 fill2 "#FFFFFF"
2381 outline "#000000"
2382 ]
2383 LabelGraphics
2384 [
2385 text "o 1"
2386 outline "#000000"
2387 fill "#FFFFFF"
2388 fontSize 16
2389 fontName "Monospace"
2390 autoSizePolicy "node_width"
2391 anchor "t"
2392 borderDistance 0.0
2393 ]
2394 LabelGraphics
2395 [
2396 text "
2397 FunctionalArchitectureModel class DefinedPart
2398 FunctionalArchitectureModel class
2399 "
2400 fontSize 14
2401 fontName "Consolas"
2402 alignment "left"
2403 anchor "tl"
2404 borderDistance 6
2405 ]
2406 ]
2407
2408 node
2409 [
2410 id 4
2411 graphics
2412 [
2413 w 41.800000000000004
2414 h 26
2415 type "rectangle"
2416 fill "#FFFFFF"
2417 fill2 "#FFFFFF"
2418 outline "#000000"
2419 ]
2420 LabelGraphics
2421 [
2422 text "true"
2423 outline "#000000"
2424 fill "#FFFFFF"
2425 fontSize 16
2426 fontName "Monospace"
2427 autoSizePolicy "node_width"
2428 anchor "t"
2429 borderDistance 0.0
2430 ]
2431 LabelGraphics
2432 [
2433 text "
2434 "
2435 fontSize 14
2436 fontName "Consolas"
2437 alignment "left"
2438 anchor "tl"
2439 borderDistance 6
2440 ]
2441 ]
2442
2443 node
2444 [
2445 id 5
2446 graphics
2447 [
2448 w 50.6
2449 h 26
2450 type "rectangle"
2451 fill "#FFFFFF"
2452 fill2 "#FFFFFF"
2453 outline "#000000"
2454 ]
2455 LabelGraphics
2456 [
2457 text "false"
2458 outline "#000000"
2459 fill "#FFFFFF"
2460 fontSize 16
2461 fontName "Monospace"
2462 autoSizePolicy "node_width"
2463 anchor "t"
2464 borderDistance 0.0
2465 ]
2466 LabelGraphics
2467 [
2468 text "
2469 "
2470 fontSize 14
2471 fontName "Consolas"
2472 alignment "left"
2473 anchor "tl"
2474 borderDistance 6
2475 ]
2476 ]
2477
2478 node
2479 [
2480 id 6
2481 graphics
2482 [
2483 w 192.50000000000003
2484 h 54
2485 type "rectangle"
2486 fill "#FFFFFF"
2487 fill2 "#FFFFFF"
2488 outline "#000000"
2489 ]
2490 LabelGraphics
2491 [
2492 text "null"
2493 outline "#000000"
2494 fill "#FFFFFF"
2495 fontSize 16
2496 fontName "Monospace"
2497 autoSizePolicy "node_width"
2498 anchor "t"
2499 borderDistance 0.0
2500 ]
2501 LabelGraphics
2502 [
2503 text "
2504 FunctionalElement class
2505 Function class
2506 "
2507 fontSize 14
2508 fontName "Consolas"
2509 alignment "left"
2510 anchor "tl"
2511 borderDistance 6
2512 ]
2513 ]
2514
2515 node
2516 [
2517 id 7
2518 graphics
2519 [
2520 w 112.2
2521 h 26
2522 type "rectangle"
2523 fill "#FFFFFF"
2524 fill2 "#FFFFFF"
2525 outline "#000000"
2526 ]
2527 LabelGraphics
2528 [
2529 text "New Integers"
2530 outline "#000000"
2531 fill "#FFFFFF"
2532 fontSize 16
2533 fontName "Monospace"
2534 autoSizePolicy "node_width"
2535 anchor "t"
2536 borderDistance 0.0
2537 ]
2538 LabelGraphics
2539 [
2540 text "
2541 "
2542 fontSize 14
2543 fontName "Consolas"
2544 alignment "left"
2545 anchor "tl"
2546 borderDistance 6
2547 ]
2548 ]
2549
2550 node
2551 [
2552 id 8
2553 graphics
2554 [
2555 w 85.80000000000001
2556 h 26
2557 type "rectangle"
2558 fill "#FFFFFF"
2559 fill2 "#FFFFFF"
2560 outline "#000000"
2561 ]
2562 LabelGraphics
2563 [
2564 text "New Reals"
2565 outline "#000000"
2566 fill "#FFFFFF"
2567 fontSize 16
2568 fontName "Monospace"
2569 autoSizePolicy "node_width"
2570 anchor "t"
2571 borderDistance 0.0
2572 ]
2573 LabelGraphics
2574 [
2575 text "
2576 "
2577 fontSize 14
2578 fontName "Consolas"
2579 alignment "left"
2580 anchor "tl"
2581 borderDistance 6
2582 ]
2583 ]
2584
2585 node
2586 [
2587 id 9
2588 graphics
2589 [
2590 w 103.4
2591 h 26
2592 type "rectangle"
2593 fill "#FFFFFF"
2594 fill2 "#FFFFFF"
2595 outline "#000000"
2596 ]
2597 LabelGraphics
2598 [
2599 text "New Strings"
2600 outline "#000000"
2601 fill "#FFFFFF"
2602 fontSize 16
2603 fontName "Monospace"
2604 autoSizePolicy "node_width"
2605 anchor "t"
2606 borderDistance 0.0
2607 ]
2608 LabelGraphics
2609 [
2610 text "
2611 "
2612 fontSize 14
2613 fontName "Consolas"
2614 alignment "left"
2615 anchor "tl"
2616 borderDistance 6
2617 ]
2618 ]
2619
2620 node
2621 [
2622 id 10
2623 graphics
2624 [
2625 w 103.4
2626 h 26
2627 type "rectangle"
2628 fill "#FFFFFF"
2629 fill2 "#FFFFFF"
2630 outline "#000000"
2631 ]
2632 LabelGraphics
2633 [
2634 text "New Objects"
2635 outline "#000000"
2636 fill "#FFFFFF"
2637 fontSize 16
2638 fontName "Monospace"
2639 autoSizePolicy "node_width"
2640 anchor "t"
2641 borderDistance 0.0
2642 ]
2643 LabelGraphics
2644 [
2645 text "
2646 "
2647 fontSize 14
2648 fontName "Consolas"
2649 alignment "left"
2650 anchor "tl"
2651 borderDistance 6
2652 ]
2653 ]
2654 edge
2655 [
2656 source 6
2657 target 3
2658 graphics
2659 [
2660 fill "#000000"
2661 targetArrow "standard"
2662 ]
2663 LabelGraphics
2664 [
2665 text "model reference FunctionalElement"
2666 fontSize 14
2667 fontName "Consolas"
2668 configuration "AutoFlippingLabel"
2669 model "six_pos"
2670 position "thead"
2671 ]
2672 ]
2673 edge
2674 [
2675 source 3
2676 target 6
2677 graphics
2678 [
2679 fill "#000000"
2680 width 3
2681 targetArrow "standard"
2682 ]
2683 LabelGraphics
2684 [
2685 text "rootElements reference FunctionalArchitectureModel"
2686 fontSize 14
2687 fontName "Consolas"
2688 configuration "AutoFlippingLabel"
2689 model "six_pos"
2690 position "thead"
2691 ]
2692 ]
2693 edge
2694 [
2695 source 6
2696 target 2
2697 graphics
2698 [
2699 fill "#000000"
2700 targetArrow "standard"
2701 ]
2702 LabelGraphics
2703 [
2704 text "type attribute Function"
2705 fontSize 14
2706 fontName "Consolas"
2707 configuration "AutoFlippingLabel"
2708 model "six_pos"
2709 position "thead"
2710 ]
2711 ]
2712]
2713graph
2714[
2715 node
2716 [
2717 id 0
2718 graphics
2719 [
2720 w 226.60000000000002
2721 h 40
2722 type "rectangle"
2723 fill "#FFFFFF"
2724 fill2 "#FFFFFF"
2725 outline "#000000"
2726 ]
2727 LabelGraphics
2728 [
2729 text "Root literal FunctionType"
2730 outline "#000000"
2731 fill "#FFFFFF"
2732 fontSize 16
2733 fontName "Monospace"
2734 autoSizePolicy "node_width"
2735 anchor "t"
2736 borderDistance 0.0
2737 ]
2738 LabelGraphics
2739 [
2740 text "
2741 FunctionType enum
2742 "
2743 fontSize 14
2744 fontName "Consolas"
2745 alignment "left"
2746 anchor "tl"
2747 borderDistance 6
2748 ]
2749 ]
2750
2751 node
2752 [
2753 id 1
2754 graphics
2755 [
2756 w 297.0
2757 h 40
2758 type "rectangle"
2759 fill "#FFFFFF"
2760 fill2 "#FFFFFF"
2761 outline "#000000"
2762 ]
2763 LabelGraphics
2764 [
2765 text "Intermediate literal FunctionType"
2766 outline "#000000"
2767 fill "#FFFFFF"
2768 fontSize 16
2769 fontName "Monospace"
2770 autoSizePolicy "node_width"
2771 anchor "t"
2772 borderDistance 0.0
2773 ]
2774 LabelGraphics
2775 [
2776 text "
2777 FunctionType enum
2778 "
2779 fontSize 14
2780 fontName "Consolas"
2781 alignment "left"
2782 anchor "tl"
2783 borderDistance 6
2784 ]
2785 ]
2786
2787 node
2788 [
2789 id 2
2790 graphics
2791 [
2792 w 226.60000000000002
2793 h 40
2794 type "rectangle"
2795 fill "#FFFFFF"
2796 fill2 "#FFFFFF"
2797 outline "#000000"
2798 ]
2799 LabelGraphics
2800 [
2801 text "Leaf literal FunctionType"
2802 outline "#000000"
2803 fill "#FFFFFF"
2804 fontSize 16
2805 fontName "Monospace"
2806 autoSizePolicy "node_width"
2807 anchor "t"
2808 borderDistance 0.0
2809 ]
2810 LabelGraphics
2811 [
2812 text "
2813 FunctionType enum
2814 "
2815 fontSize 14
2816 fontName "Consolas"
2817 alignment "left"
2818 anchor "tl"
2819 borderDistance 6
2820 ]
2821 ]
2822
2823 node
2824 [
2825 id 3
2826 graphics
2827 [
2828 w 361.90000000000003
2829 h 54
2830 type "rectangle"
2831 fill "#FFFFFF"
2832 fill2 "#FFFFFF"
2833 outline "#000000"
2834 ]
2835 LabelGraphics
2836 [
2837 text "o 1"
2838 outline "#000000"
2839 fill "#FFFFFF"
2840 fontSize 16
2841 fontName "Monospace"
2842 autoSizePolicy "node_width"
2843 anchor "t"
2844 borderDistance 0.0
2845 ]
2846 LabelGraphics
2847 [
2848 text "
2849 FunctionalArchitectureModel class DefinedPart
2850 FunctionalArchitectureModel class
2851 "
2852 fontSize 14
2853 fontName "Consolas"
2854 alignment "left"
2855 anchor "tl"
2856 borderDistance 6
2857 ]
2858 ]
2859
2860 node
2861 [
2862 id 4
2863 graphics
2864 [
2865 w 41.800000000000004
2866 h 26
2867 type "rectangle"
2868 fill "#FFFFFF"
2869 fill2 "#FFFFFF"
2870 outline "#000000"
2871 ]
2872 LabelGraphics
2873 [
2874 text "true"
2875 outline "#000000"
2876 fill "#FFFFFF"
2877 fontSize 16
2878 fontName "Monospace"
2879 autoSizePolicy "node_width"
2880 anchor "t"
2881 borderDistance 0.0
2882 ]
2883 LabelGraphics
2884 [
2885 text "
2886 "
2887 fontSize 14
2888 fontName "Consolas"
2889 alignment "left"
2890 anchor "tl"
2891 borderDistance 6
2892 ]
2893 ]
2894
2895 node
2896 [
2897 id 5
2898 graphics
2899 [
2900 w 50.6
2901 h 26
2902 type "rectangle"
2903 fill "#FFFFFF"
2904 fill2 "#FFFFFF"
2905 outline "#000000"
2906 ]
2907 LabelGraphics
2908 [
2909 text "false"
2910 outline "#000000"
2911 fill "#FFFFFF"
2912 fontSize 16
2913 fontName "Monospace"
2914 autoSizePolicy "node_width"
2915 anchor "t"
2916 borderDistance 0.0
2917 ]
2918 LabelGraphics
2919 [
2920 text "
2921 "
2922 fontSize 14
2923 fontName "Consolas"
2924 alignment "left"
2925 anchor "tl"
2926 borderDistance 6
2927 ]
2928 ]
2929
2930 node
2931 [
2932 id 6
2933 graphics
2934 [
2935 w 192.50000000000003
2936 h 54
2937 type "rectangle"
2938 fill "#FFFFFF"
2939 fill2 "#FFFFFF"
2940 outline "#000000"
2941 ]
2942 LabelGraphics
2943 [
2944 text "null"
2945 outline "#000000"
2946 fill "#FFFFFF"
2947 fontSize 16
2948 fontName "Monospace"
2949 autoSizePolicy "node_width"
2950 anchor "t"
2951 borderDistance 0.0
2952 ]
2953 LabelGraphics
2954 [
2955 text "
2956 FunctionalElement class
2957 Function class
2958 "
2959 fontSize 14
2960 fontName "Consolas"
2961 alignment "left"
2962 anchor "tl"
2963 borderDistance 6
2964 ]
2965 ]
2966
2967 node
2968 [
2969 id 7
2970 graphics
2971 [
2972 w 112.2
2973 h 26
2974 type "rectangle"
2975 fill "#FFFFFF"
2976 fill2 "#FFFFFF"
2977 outline "#000000"
2978 ]
2979 LabelGraphics
2980 [
2981 text "New Integers"
2982 outline "#000000"
2983 fill "#FFFFFF"
2984 fontSize 16
2985 fontName "Monospace"
2986 autoSizePolicy "node_width"
2987 anchor "t"
2988 borderDistance 0.0
2989 ]
2990 LabelGraphics
2991 [
2992 text "
2993 "
2994 fontSize 14
2995 fontName "Consolas"
2996 alignment "left"
2997 anchor "tl"
2998 borderDistance 6
2999 ]
3000 ]
3001
3002 node
3003 [
3004 id 8
3005 graphics
3006 [
3007 w 85.80000000000001
3008 h 26
3009 type "rectangle"
3010 fill "#FFFFFF"
3011 fill2 "#FFFFFF"
3012 outline "#000000"
3013 ]
3014 LabelGraphics
3015 [
3016 text "New Reals"
3017 outline "#000000"
3018 fill "#FFFFFF"
3019 fontSize 16
3020 fontName "Monospace"
3021 autoSizePolicy "node_width"
3022 anchor "t"
3023 borderDistance 0.0
3024 ]
3025 LabelGraphics
3026 [
3027 text "
3028 "
3029 fontSize 14
3030 fontName "Consolas"
3031 alignment "left"
3032 anchor "tl"
3033 borderDistance 6
3034 ]
3035 ]
3036
3037 node
3038 [
3039 id 9
3040 graphics
3041 [
3042 w 103.4
3043 h 26
3044 type "rectangle"
3045 fill "#FFFFFF"
3046 fill2 "#FFFFFF"
3047 outline "#000000"
3048 ]
3049 LabelGraphics
3050 [
3051 text "New Strings"
3052 outline "#000000"
3053 fill "#FFFFFF"
3054 fontSize 16
3055 fontName "Monospace"
3056 autoSizePolicy "node_width"
3057 anchor "t"
3058 borderDistance 0.0
3059 ]
3060 LabelGraphics
3061 [
3062 text "
3063 "
3064 fontSize 14
3065 fontName "Consolas"
3066 alignment "left"
3067 anchor "tl"
3068 borderDistance 6
3069 ]
3070 ]
3071
3072 node
3073 [
3074 id 10
3075 graphics
3076 [
3077 w 103.4
3078 h 26
3079 type "rectangle"
3080 fill "#FFFFFF"
3081 fill2 "#FFFFFF"
3082 outline "#000000"
3083 ]
3084 LabelGraphics
3085 [
3086 text "New Objects"
3087 outline "#000000"
3088 fill "#FFFFFF"
3089 fontSize 16
3090 fontName "Monospace"
3091 autoSizePolicy "node_width"
3092 anchor "t"
3093 borderDistance 0.0
3094 ]
3095 LabelGraphics
3096 [
3097 text "
3098 "
3099 fontSize 14
3100 fontName "Consolas"
3101 alignment "left"
3102 anchor "tl"
3103 borderDistance 6
3104 ]
3105 ]
3106 edge
3107 [
3108 source 6
3109 target 3
3110 graphics
3111 [
3112 fill "#000000"
3113 targetArrow "standard"
3114 ]
3115 LabelGraphics
3116 [
3117 text "model reference FunctionalElement"
3118 fontSize 14
3119 fontName "Consolas"
3120 configuration "AutoFlippingLabel"
3121 model "six_pos"
3122 position "thead"
3123 ]
3124 ]
3125 edge
3126 [
3127 source 3
3128 target 6
3129 graphics
3130 [
3131 fill "#000000"
3132 width 3
3133 targetArrow "standard"
3134 ]
3135 LabelGraphics
3136 [
3137 text "rootElements reference FunctionalArchitectureModel"
3138 fontSize 14
3139 fontName "Consolas"
3140 configuration "AutoFlippingLabel"
3141 model "six_pos"
3142 position "thead"
3143 ]
3144 ]
3145 edge
3146 [
3147 source 6
3148 target 2
3149 graphics
3150 [
3151 fill "#000000"
3152 targetArrow "standard"
3153 ]
3154 LabelGraphics
3155 [
3156 text "type attribute Function"
3157 fontSize 14
3158 fontName "Consolas"
3159 configuration "AutoFlippingLabel"
3160 model "six_pos"
3161 position "thead"
3162 ]
3163 ]
3164]
3165graph
3166[
3167 node
3168 [
3169 id 0
3170 graphics
3171 [
3172 w 226.60000000000002
3173 h 40
3174 type "rectangle"
3175 fill "#FFFFFF"
3176 fill2 "#FFFFFF"
3177 outline "#000000"
3178 ]
3179 LabelGraphics
3180 [
3181 text "Root literal FunctionType"
3182 outline "#000000"
3183 fill "#FFFFFF"
3184 fontSize 16
3185 fontName "Monospace"
3186 autoSizePolicy "node_width"
3187 anchor "t"
3188 borderDistance 0.0
3189 ]
3190 LabelGraphics
3191 [
3192 text "
3193 FunctionType enum
3194 "
3195 fontSize 14
3196 fontName "Consolas"
3197 alignment "left"
3198 anchor "tl"
3199 borderDistance 6
3200 ]
3201 ]
3202
3203 node
3204 [
3205 id 1
3206 graphics
3207 [
3208 w 297.0
3209 h 40
3210 type "rectangle"
3211 fill "#FFFFFF"
3212 fill2 "#FFFFFF"
3213 outline "#000000"
3214 ]
3215 LabelGraphics
3216 [
3217 text "Intermediate literal FunctionType"
3218 outline "#000000"
3219 fill "#FFFFFF"
3220 fontSize 16
3221 fontName "Monospace"
3222 autoSizePolicy "node_width"
3223 anchor "t"
3224 borderDistance 0.0
3225 ]
3226 LabelGraphics
3227 [
3228 text "
3229 FunctionType enum
3230 "
3231 fontSize 14
3232 fontName "Consolas"
3233 alignment "left"
3234 anchor "tl"
3235 borderDistance 6
3236 ]
3237 ]
3238
3239 node
3240 [
3241 id 2
3242 graphics
3243 [
3244 w 226.60000000000002
3245 h 40
3246 type "rectangle"
3247 fill "#FFFFFF"
3248 fill2 "#FFFFFF"
3249 outline "#000000"
3250 ]
3251 LabelGraphics
3252 [
3253 text "Leaf literal FunctionType"
3254 outline "#000000"
3255 fill "#FFFFFF"
3256 fontSize 16
3257 fontName "Monospace"
3258 autoSizePolicy "node_width"
3259 anchor "t"
3260 borderDistance 0.0
3261 ]
3262 LabelGraphics
3263 [
3264 text "
3265 FunctionType enum
3266 "
3267 fontSize 14
3268 fontName "Consolas"
3269 alignment "left"
3270 anchor "tl"
3271 borderDistance 6
3272 ]
3273 ]
3274
3275 node
3276 [
3277 id 3
3278 graphics
3279 [
3280 w 361.90000000000003
3281 h 54
3282 type "rectangle"
3283 fill "#FFFFFF"
3284 fill2 "#FFFFFF"
3285 outline "#000000"
3286 ]
3287 LabelGraphics
3288 [
3289 text "o 1"
3290 outline "#000000"
3291 fill "#FFFFFF"
3292 fontSize 16
3293 fontName "Monospace"
3294 autoSizePolicy "node_width"
3295 anchor "t"
3296 borderDistance 0.0
3297 ]
3298 LabelGraphics
3299 [
3300 text "
3301 FunctionalArchitectureModel class DefinedPart
3302 FunctionalArchitectureModel class
3303 "
3304 fontSize 14
3305 fontName "Consolas"
3306 alignment "left"
3307 anchor "tl"
3308 borderDistance 6
3309 ]
3310 ]
3311
3312 node
3313 [
3314 id 4
3315 graphics
3316 [
3317 w 41.800000000000004
3318 h 26
3319 type "rectangle"
3320 fill "#FFFFFF"
3321 fill2 "#FFFFFF"
3322 outline "#000000"
3323 ]
3324 LabelGraphics
3325 [
3326 text "true"
3327 outline "#000000"
3328 fill "#FFFFFF"
3329 fontSize 16
3330 fontName "Monospace"
3331 autoSizePolicy "node_width"
3332 anchor "t"
3333 borderDistance 0.0
3334 ]
3335 LabelGraphics
3336 [
3337 text "
3338 "
3339 fontSize 14
3340 fontName "Consolas"
3341 alignment "left"
3342 anchor "tl"
3343 borderDistance 6
3344 ]
3345 ]
3346
3347 node
3348 [
3349 id 5
3350 graphics
3351 [
3352 w 50.6
3353 h 26
3354 type "rectangle"
3355 fill "#FFFFFF"
3356 fill2 "#FFFFFF"
3357 outline "#000000"
3358 ]
3359 LabelGraphics
3360 [
3361 text "false"
3362 outline "#000000"
3363 fill "#FFFFFF"
3364 fontSize 16
3365 fontName "Monospace"
3366 autoSizePolicy "node_width"
3367 anchor "t"
3368 borderDistance 0.0
3369 ]
3370 LabelGraphics
3371 [
3372 text "
3373 "
3374 fontSize 14
3375 fontName "Consolas"
3376 alignment "left"
3377 anchor "tl"
3378 borderDistance 6
3379 ]
3380 ]
3381
3382 node
3383 [
3384 id 6
3385 graphics
3386 [
3387 w 192.50000000000003
3388 h 54
3389 type "rectangle"
3390 fill "#FFFFFF"
3391 fill2 "#FFFFFF"
3392 outline "#000000"
3393 ]
3394 LabelGraphics
3395 [
3396 text "null"
3397 outline "#000000"
3398 fill "#FFFFFF"
3399 fontSize 16
3400 fontName "Monospace"
3401 autoSizePolicy "node_width"
3402 anchor "t"
3403 borderDistance 0.0
3404 ]
3405 LabelGraphics
3406 [
3407 text "
3408 FunctionalElement class
3409 Function class
3410 "
3411 fontSize 14
3412 fontName "Consolas"
3413 alignment "left"
3414 anchor "tl"
3415 borderDistance 6
3416 ]
3417 ]
3418
3419 node
3420 [
3421 id 7
3422 graphics
3423 [
3424 w 112.2
3425 h 26
3426 type "rectangle"
3427 fill "#FFFFFF"
3428 fill2 "#FFFFFF"
3429 outline "#000000"
3430 ]
3431 LabelGraphics
3432 [
3433 text "New Integers"
3434 outline "#000000"
3435 fill "#FFFFFF"
3436 fontSize 16
3437 fontName "Monospace"
3438 autoSizePolicy "node_width"
3439 anchor "t"
3440 borderDistance 0.0
3441 ]
3442 LabelGraphics
3443 [
3444 text "
3445 "
3446 fontSize 14
3447 fontName "Consolas"
3448 alignment "left"
3449 anchor "tl"
3450 borderDistance 6
3451 ]
3452 ]
3453
3454 node
3455 [
3456 id 8
3457 graphics
3458 [
3459 w 85.80000000000001
3460 h 26
3461 type "rectangle"
3462 fill "#FFFFFF"
3463 fill2 "#FFFFFF"
3464 outline "#000000"
3465 ]
3466 LabelGraphics
3467 [
3468 text "New Reals"
3469 outline "#000000"
3470 fill "#FFFFFF"
3471 fontSize 16
3472 fontName "Monospace"
3473 autoSizePolicy "node_width"
3474 anchor "t"
3475 borderDistance 0.0
3476 ]
3477 LabelGraphics
3478 [
3479 text "
3480 "
3481 fontSize 14
3482 fontName "Consolas"
3483 alignment "left"
3484 anchor "tl"
3485 borderDistance 6
3486 ]
3487 ]
3488
3489 node
3490 [
3491 id 9
3492 graphics
3493 [
3494 w 103.4
3495 h 26
3496 type "rectangle"
3497 fill "#FFFFFF"
3498 fill2 "#FFFFFF"
3499 outline "#000000"
3500 ]
3501 LabelGraphics
3502 [
3503 text "New Strings"
3504 outline "#000000"
3505 fill "#FFFFFF"
3506 fontSize 16
3507 fontName "Monospace"
3508 autoSizePolicy "node_width"
3509 anchor "t"
3510 borderDistance 0.0
3511 ]
3512 LabelGraphics
3513 [
3514 text "
3515 "
3516 fontSize 14
3517 fontName "Consolas"
3518 alignment "left"
3519 anchor "tl"
3520 borderDistance 6
3521 ]
3522 ]
3523
3524 node
3525 [
3526 id 10
3527 graphics
3528 [
3529 w 103.4
3530 h 26
3531 type "rectangle"
3532 fill "#FFFFFF"
3533 fill2 "#FFFFFF"
3534 outline "#000000"
3535 ]
3536 LabelGraphics
3537 [
3538 text "New Objects"
3539 outline "#000000"
3540 fill "#FFFFFF"
3541 fontSize 16
3542 fontName "Monospace"
3543 autoSizePolicy "node_width"
3544 anchor "t"
3545 borderDistance 0.0
3546 ]
3547 LabelGraphics
3548 [
3549 text "
3550 "
3551 fontSize 14
3552 fontName "Consolas"
3553 alignment "left"
3554 anchor "tl"
3555 borderDistance 6
3556 ]
3557 ]
3558 edge
3559 [
3560 source 6
3561 target 3
3562 graphics
3563 [
3564 fill "#000000"
3565 targetArrow "standard"
3566 ]
3567 LabelGraphics
3568 [
3569 text "model reference FunctionalElement"
3570 fontSize 14
3571 fontName "Consolas"
3572 configuration "AutoFlippingLabel"
3573 model "six_pos"
3574 position "thead"
3575 ]
3576 ]
3577 edge
3578 [
3579 source 3
3580 target 6
3581 graphics
3582 [
3583 fill "#000000"
3584 width 3
3585 targetArrow "standard"
3586 ]
3587 LabelGraphics
3588 [
3589 text "rootElements reference FunctionalArchitectureModel"
3590 fontSize 14
3591 fontName "Consolas"
3592 configuration "AutoFlippingLabel"
3593 model "six_pos"
3594 position "thead"
3595 ]
3596 ]
3597 edge
3598 [
3599 source 6
3600 target 0
3601 graphics
3602 [
3603 fill "#000000"
3604 targetArrow "standard"
3605 ]
3606 LabelGraphics
3607 [
3608 text "type attribute Function"
3609 fontSize 14
3610 fontName "Consolas"
3611 configuration "AutoFlippingLabel"
3612 model "six_pos"
3613 position "thead"
3614 ]
3615 ]
3616]
3617graph
3618[
3619 node
3620 [
3621 id 0
3622 graphics
3623 [
3624 w 254.10000000000002
3625 h 110
3626 type "rectangle"
3627 fill "#FFFFFF"
3628 fill2 "#FFFFFF"
3629 outline "#000000"
3630 ]
3631 LabelGraphics
3632 [
3633 text "o 1"
3634 outline "#000000"
3635 fill "#FFFFFF"
3636 fontSize 16
3637 fontName "Monospace"
3638 autoSizePolicy "node_width"
3639 anchor "t"
3640 borderDistance 0.0
3641 ]
3642 LabelGraphics
3643 [
3644 text "
3645 EModelElement class DefinedPart
3646 ENamedElement class DefinedPart
3647 EPackage class DefinedPart
3648 EModelElement class
3649 ENamedElement class
3650 EPackage class
3651 "
3652 fontSize 14
3653 fontName "Consolas"
3654 alignment "left"
3655 anchor "tl"
3656 borderDistance 6
3657 ]
3658 ]
3659
3660 node
3661 [
3662 id 1
3663 graphics
3664 [
3665 w 41.800000000000004
3666 h 26
3667 type "rectangle"
3668 fill "#FFFFFF"
3669 fill2 "#FFFFFF"
3670 outline "#000000"
3671 ]
3672 LabelGraphics
3673 [
3674 text "true"
3675 outline "#000000"
3676 fill "#FFFFFF"
3677 fontSize 16
3678 fontName "Monospace"
3679 autoSizePolicy "node_width"
3680 anchor "t"
3681 borderDistance 0.0
3682 ]
3683 LabelGraphics
3684 [
3685 text "
3686 "
3687 fontSize 14
3688 fontName "Consolas"
3689 alignment "left"
3690 anchor "tl"
3691 borderDistance 6
3692 ]
3693 ]
3694
3695 node
3696 [
3697 id 2
3698 graphics
3699 [
3700 w 50.6
3701 h 26
3702 type "rectangle"
3703 fill "#FFFFFF"
3704 fill2 "#FFFFFF"
3705 outline "#000000"
3706 ]
3707 LabelGraphics
3708 [
3709 text "false"
3710 outline "#000000"
3711 fill "#FFFFFF"
3712 fontSize 16
3713 fontName "Monospace"
3714 autoSizePolicy "node_width"
3715 anchor "t"
3716 borderDistance 0.0
3717 ]
3718 LabelGraphics
3719 [
3720 text "
3721 "
3722 fontSize 14
3723 fontName "Consolas"
3724 alignment "left"
3725 anchor "tl"
3726 borderDistance 6
3727 ]
3728 ]
3729
3730 node
3731 [
3732 id 3
3733 graphics
3734 [
3735 w 24.200000000000003
3736 h 26
3737 type "rectangle"
3738 fill "#FFFFFF"
3739 fill2 "#FFFFFF"
3740 outline "#000000"
3741 ]
3742 LabelGraphics
3743 [
3744 text "-1"
3745 outline "#000000"
3746 fill "#FFFFFF"
3747 fontSize 16
3748 fontName "Monospace"
3749 autoSizePolicy "node_width"
3750 anchor "t"
3751 borderDistance 0.0
3752 ]
3753 LabelGraphics
3754 [
3755 text "
3756 "
3757 fontSize 14
3758 fontName "Consolas"
3759 alignment "left"
3760 anchor "tl"
3761 borderDistance 6
3762 ]
3763 ]
3764
3765 node
3766 [
3767 id 4
3768 graphics
3769 [
3770 w 15.400000000000002
3771 h 26
3772 type "rectangle"
3773 fill "#FFFFFF"
3774 fill2 "#FFFFFF"
3775 outline "#000000"
3776 ]
3777 LabelGraphics
3778 [
3779 text "0"
3780 outline "#000000"
3781 fill "#FFFFFF"
3782 fontSize 16
3783 fontName "Monospace"
3784 autoSizePolicy "node_width"
3785 anchor "t"
3786 borderDistance 0.0
3787 ]
3788 LabelGraphics
3789 [
3790 text "
3791 "
3792 fontSize 14
3793 fontName "Consolas"
3794 alignment "left"
3795 anchor "tl"
3796 borderDistance 6
3797 ]
3798 ]
3799
3800 node
3801 [
3802 id 5
3803 graphics
3804 [
3805 w 15.400000000000002
3806 h 26
3807 type "rectangle"
3808 fill "#FFFFFF"
3809 fill2 "#FFFFFF"
3810 outline "#000000"
3811 ]
3812 LabelGraphics
3813 [
3814 text "1"
3815 outline "#000000"
3816 fill "#FFFFFF"
3817 fontSize 16
3818 fontName "Monospace"
3819 autoSizePolicy "node_width"
3820 anchor "t"
3821 borderDistance 0.0
3822 ]
3823 LabelGraphics
3824 [
3825 text "
3826 "
3827 fontSize 14
3828 fontName "Consolas"
3829 alignment "left"
3830 anchor "tl"
3831 borderDistance 6
3832 ]
3833 ]
3834
3835 node
3836 [
3837 id 6
3838 graphics
3839 [
3840 w 33.0
3841 h 26
3842 type "rectangle"
3843 fill "#FFFFFF"
3844 fill2 "#FFFFFF"
3845 outline "#000000"
3846 ]
3847 LabelGraphics
3848 [
3849 text ""A""
3850 outline "#000000"
3851 fill "#FFFFFF"
3852 fontSize 16
3853 fontName "Monospace"
3854 autoSizePolicy "node_width"
3855 anchor "t"
3856 borderDistance 0.0
3857 ]
3858 LabelGraphics
3859 [
3860 text "
3861 "
3862 fontSize 14
3863 fontName "Consolas"
3864 alignment "left"
3865 anchor "tl"
3866 borderDistance 6
3867 ]
3868 ]
3869
3870 node
3871 [
3872 id 7
3873 graphics
3874 [
3875 w 33.0
3876 h 26
3877 type "rectangle"
3878 fill "#FFFFFF"
3879 fill2 "#FFFFFF"
3880 outline "#000000"
3881 ]
3882 LabelGraphics
3883 [
3884 text ""B""
3885 outline "#000000"
3886 fill "#FFFFFF"
3887 fontSize 16
3888 fontName "Monospace"
3889 autoSizePolicy "node_width"
3890 anchor "t"
3891 borderDistance 0.0
3892 ]
3893 LabelGraphics
3894 [
3895 text "
3896 "
3897 fontSize 14
3898 fontName "Consolas"
3899 alignment "left"
3900 anchor "tl"
3901 borderDistance 6
3902 ]
3903 ]
3904
3905 node
3906 [
3907 id 8
3908 graphics
3909 [
3910 w 94.60000000000001
3911 h 26
3912 type "rectangle"
3913 fill "#FFFFFF"
3914 fill2 "#FFFFFF"
3915 outline "#000000"
3916 ]
3917 LabelGraphics
3918 [
3919 text ""nsPrefix""
3920 outline "#000000"
3921 fill "#FFFFFF"
3922 fontSize 16
3923 fontName "Monospace"
3924 autoSizePolicy "node_width"
3925 anchor "t"
3926 borderDistance 0.0
3927 ]
3928 LabelGraphics
3929 [
3930 text "
3931 "
3932 fontSize 14
3933 fontName "Consolas"
3934 alignment "left"
3935 anchor "tl"
3936 borderDistance 6
3937 ]
3938 ]
3939
3940 node
3941 [
3942 id 9
3943 graphics
3944 [
3945 w 68.2
3946 h 26
3947 type "rectangle"
3948 fill "#FFFFFF"
3949 fill2 "#FFFFFF"
3950 outline "#000000"
3951 ]
3952 LabelGraphics
3953 [
3954 text ""nsUri""
3955 outline "#000000"
3956 fill "#FFFFFF"
3957 fontSize 16
3958 fontName "Monospace"
3959 autoSizePolicy "node_width"
3960 anchor "t"
3961 borderDistance 0.0
3962 ]
3963 LabelGraphics
3964 [
3965 text "
3966 "
3967 fontSize 14
3968 fontName "Consolas"
3969 alignment "left"
3970 anchor "tl"
3971 borderDistance 6
3972 ]
3973 ]
3974
3975 node
3976 [
3977 id 10
3978 graphics
3979 [
3980 w 121.00000000000001
3981 h 26
3982 type "rectangle"
3983 fill "#FFFFFF"
3984 fill2 "#FFFFFF"
3985 outline "#000000"
3986 ]
3987 LabelGraphics
3988 [
3989 text ""packageName""
3990 outline "#000000"
3991 fill "#FFFFFF"
3992 fontSize 16
3993 fontName "Monospace"
3994 autoSizePolicy "node_width"
3995 anchor "t"
3996 borderDistance 0.0
3997 ]
3998 LabelGraphics
3999 [
4000 text "
4001 "
4002 fontSize 14
4003 fontName "Consolas"
4004 alignment "left"
4005 anchor "tl"
4006 borderDistance 6
4007 ]
4008 ]
4009
4010 node
4011 [
4012 id 11
4013 graphics
4014 [
4015 w 269.5
4016 h 124
4017 type "rectangle"
4018 fill "#FFFFFF"
4019 fill2 "#FFFFFF"
4020 outline "#000000"
4021 ]
4022 LabelGraphics
4023 [
4024 text "null"
4025 outline "#000000"
4026 fill "#FFFFFF"
4027 fontSize 16
4028 fontName "Monospace"
4029 autoSizePolicy "node_width"
4030 anchor "t"
4031 borderDistance 0.0
4032 ]
4033 LabelGraphics
4034 [
4035 text "
4036 EClassifier class
4037 EDataType class
4038 EEnum class
4039 EModelElement class
4040 ENamedElement class
4041 EModelElement class UndefinedPart
4042 ENamedElement class UndefinedPart
4043 "
4044 fontSize 14
4045 fontName "Consolas"
4046 alignment "left"
4047 anchor "tl"
4048 borderDistance 6
4049 ]
4050 ]
4051
4052 node
4053 [
4054 id 12
4055 graphics
4056 [
4057 w 269.5
4058 h 124
4059 type "rectangle"
4060 fill "#FFFFFF"
4061 fill2 "#FFFFFF"
4062 outline "#000000"
4063 ]
4064 LabelGraphics
4065 [
4066 text "null"
4067 outline "#000000"
4068 fill "#FFFFFF"
4069 fontSize 16
4070 fontName "Monospace"
4071 autoSizePolicy "node_width"
4072 anchor "t"
4073 borderDistance 0.0
4074 ]
4075 LabelGraphics
4076 [
4077 text "
4078 EClassifier class
4079 EDataType class
4080 EEnum class
4081 EModelElement class
4082 ENamedElement class
4083 EModelElement class UndefinedPart
4084 ENamedElement class UndefinedPart
4085 "
4086 fontSize 14
4087 fontName "Consolas"
4088 alignment "left"
4089 anchor "tl"
4090 borderDistance 6
4091 ]
4092 ]
4093
4094 node
4095 [
4096 id 13
4097 graphics
4098 [
4099 w 269.5
4100 h 110
4101 type "rectangle"
4102 fill "#FFFFFF"
4103 fill2 "#FFFFFF"
4104 outline "#000000"
4105 ]
4106 LabelGraphics
4107 [
4108 text "null"
4109 outline "#000000"
4110 fill "#FFFFFF"
4111 fontSize 16
4112 fontName "Monospace"
4113 autoSizePolicy "node_width"
4114 anchor "t"
4115 borderDistance 0.0
4116 ]
4117 LabelGraphics
4118 [
4119 text "
4120 EModelElement class
4121 ENamedElement class
4122 EPackage class
4123 EModelElement class UndefinedPart
4124 ENamedElement class UndefinedPart
4125 EPackage class UndefinedPart
4126 "
4127 fontSize 14
4128 fontName "Consolas"
4129 alignment "left"
4130 anchor "tl"
4131 borderDistance 6
4132 ]
4133 ]
4134
4135 node
4136 [
4137 id 14
4138 graphics
4139 [
4140 w 269.5
4141 h 124
4142 type "rectangle"
4143 fill "#FFFFFF"
4144 fill2 "#FFFFFF"
4145 outline "#000000"
4146 ]
4147 LabelGraphics
4148 [
4149 text "null"
4150 outline "#000000"
4151 fill "#FFFFFF"
4152 fontSize 16
4153 fontName "Monospace"
4154 autoSizePolicy "node_width"
4155 anchor "t"
4156 borderDistance 0.0
4157 ]
4158 LabelGraphics
4159 [
4160 text "
4161 EClassifier class
4162 EDataType class
4163 EEnum class
4164 EModelElement class
4165 ENamedElement class
4166 EModelElement class UndefinedPart
4167 ENamedElement class UndefinedPart
4168 "
4169 fontSize 14
4170 fontName "Consolas"
4171 alignment "left"
4172 anchor "tl"
4173 borderDistance 6
4174 ]
4175 ]
4176
4177 node
4178 [
4179 id 15
4180 graphics
4181 [
4182 w 269.5
4183 h 124
4184 type "rectangle"
4185 fill "#FFFFFF"
4186 fill2 "#FFFFFF"
4187 outline "#000000"
4188 ]
4189 LabelGraphics
4190 [
4191 text "null"
4192 outline "#000000"
4193 fill "#FFFFFF"
4194 fontSize 16
4195 fontName "Monospace"
4196 autoSizePolicy "node_width"
4197 anchor "t"
4198 borderDistance 0.0
4199 ]
4200 LabelGraphics
4201 [
4202 text "
4203 EClassifier class
4204 EDataType class
4205 EEnum class
4206 EModelElement class
4207 ENamedElement class
4208 EModelElement class UndefinedPart
4209 ENamedElement class UndefinedPart
4210 "
4211 fontSize 14
4212 fontName "Consolas"
4213 alignment "left"
4214 anchor "tl"
4215 borderDistance 6
4216 ]
4217 ]
4218
4219 node
4220 [
4221 id 16
4222 graphics
4223 [
4224 w 112.2
4225 h 26
4226 type "rectangle"
4227 fill "#FFFFFF"
4228 fill2 "#FFFFFF"
4229 outline "#000000"
4230 ]
4231 LabelGraphics
4232 [
4233 text "New Integers"
4234 outline "#000000"
4235 fill "#FFFFFF"
4236 fontSize 16
4237 fontName "Monospace"
4238 autoSizePolicy "node_width"
4239 anchor "t"
4240 borderDistance 0.0
4241 ]
4242 LabelGraphics
4243 [
4244 text "
4245 "
4246 fontSize 14
4247 fontName "Consolas"
4248 alignment "left"
4249 anchor "tl"
4250 borderDistance 6
4251 ]
4252 ]
4253
4254 node
4255 [
4256 id 17
4257 graphics
4258 [
4259 w 85.80000000000001
4260 h 26
4261 type "rectangle"
4262 fill "#FFFFFF"
4263 fill2 "#FFFFFF"
4264 outline "#000000"
4265 ]
4266 LabelGraphics
4267 [
4268 text "New Reals"
4269 outline "#000000"
4270 fill "#FFFFFF"
4271 fontSize 16
4272 fontName "Monospace"
4273 autoSizePolicy "node_width"
4274 anchor "t"
4275 borderDistance 0.0
4276 ]
4277 LabelGraphics
4278 [
4279 text "
4280 "
4281 fontSize 14
4282 fontName "Consolas"
4283 alignment "left"
4284 anchor "tl"
4285 borderDistance 6
4286 ]
4287 ]
4288
4289 node
4290 [
4291 id 18
4292 graphics
4293 [
4294 w 103.4
4295 h 26
4296 type "rectangle"
4297 fill "#FFFFFF"
4298 fill2 "#FFFFFF"
4299 outline "#000000"
4300 ]
4301 LabelGraphics
4302 [
4303 text "New Strings"
4304 outline "#000000"
4305 fill "#FFFFFF"
4306 fontSize 16
4307 fontName "Monospace"
4308 autoSizePolicy "node_width"
4309 anchor "t"
4310 borderDistance 0.0
4311 ]
4312 LabelGraphics
4313 [
4314 text "
4315 "
4316 fontSize 14
4317 fontName "Consolas"
4318 alignment "left"
4319 anchor "tl"
4320 borderDistance 6
4321 ]
4322 ]
4323
4324 node
4325 [
4326 id 19
4327 graphics
4328 [
4329 w 103.4
4330 h 26
4331 type "rectangle"
4332 fill "#FFFFFF"
4333 fill2 "#FFFFFF"
4334 outline "#000000"
4335 ]
4336 LabelGraphics
4337 [
4338 text "New Objects"
4339 outline "#000000"
4340 fill "#FFFFFF"
4341 fontSize 16
4342 fontName "Monospace"
4343 autoSizePolicy "node_width"
4344 anchor "t"
4345 borderDistance 0.0
4346 ]
4347 LabelGraphics
4348 [
4349 text "
4350 "
4351 fontSize 14
4352 fontName "Consolas"
4353 alignment "left"
4354 anchor "tl"
4355 borderDistance 6
4356 ]
4357 ]
4358 edge
4359 [
4360 source 11
4361 target 0
4362 graphics
4363 [
4364 fill "#000000"
4365 targetArrow "standard"
4366 ]
4367 LabelGraphics
4368 [
4369 text "ePackage reference EClassifier"
4370 fontSize 14
4371 fontName "Consolas"
4372 configuration "AutoFlippingLabel"
4373 model "six_pos"
4374 position "thead"
4375 ]
4376 ]
4377 edge
4378 [
4379 source 12
4380 target 0
4381 graphics
4382 [
4383 fill "#000000"
4384 targetArrow "standard"
4385 ]
4386 LabelGraphics
4387 [
4388 text "ePackage reference EClassifier"
4389 fontSize 14
4390 fontName "Consolas"
4391 configuration "AutoFlippingLabel"
4392 model "six_pos"
4393 position "thead"
4394 ]
4395 ]
4396 edge
4397 [
4398 source 14
4399 target 0
4400 graphics
4401 [
4402 fill "#000000"
4403 targetArrow "standard"
4404 ]
4405 LabelGraphics
4406 [
4407 text "ePackage reference EClassifier"
4408 fontSize 14
4409 fontName "Consolas"
4410 configuration "AutoFlippingLabel"
4411 model "six_pos"
4412 position "thead"
4413 ]
4414 ]
4415 edge
4416 [
4417 source 15
4418 target 13
4419 graphics
4420 [
4421 fill "#000000"
4422 targetArrow "standard"
4423 ]
4424 LabelGraphics
4425 [
4426 text "ePackage reference EClassifier"
4427 fontSize 14
4428 fontName "Consolas"
4429 configuration "AutoFlippingLabel"
4430 model "six_pos"
4431 position "thead"
4432 ]
4433 ]
4434 edge
4435 [
4436 source 0
4437 target 11
4438 graphics
4439 [
4440 fill "#000000"
4441 width 3
4442 targetArrow "standard"
4443 ]
4444 LabelGraphics
4445 [
4446 text "eClassifiers reference EPackage"
4447 fontSize 14
4448 fontName "Consolas"
4449 configuration "AutoFlippingLabel"
4450 model "six_pos"
4451 position "thead"
4452 ]
4453 ]
4454 edge
4455 [
4456 source 0
4457 target 12
4458 graphics
4459 [
4460 fill "#000000"
4461 width 3
4462 targetArrow "standard"
4463 ]
4464 LabelGraphics
4465 [
4466 text "eClassifiers reference EPackage"
4467 fontSize 14
4468 fontName "Consolas"
4469 configuration "AutoFlippingLabel"
4470 model "six_pos"
4471 position "thead"
4472 ]
4473 ]
4474 edge
4475 [
4476 source 0
4477 target 14
4478 graphics
4479 [
4480 fill "#000000"
4481 width 3
4482 targetArrow "standard"
4483 ]
4484 LabelGraphics
4485 [
4486 text "eClassifiers reference EPackage"
4487 fontSize 14
4488 fontName "Consolas"
4489 configuration "AutoFlippingLabel"
4490 model "six_pos"
4491 position "thead"
4492 ]
4493 ]
4494 edge
4495 [
4496 source 13
4497 target 15
4498 graphics
4499 [
4500 fill "#000000"
4501 width 3
4502 targetArrow "standard"
4503 ]
4504 LabelGraphics
4505 [
4506 text "eClassifiers reference EPackage"
4507 fontSize 14
4508 fontName "Consolas"
4509 configuration "AutoFlippingLabel"
4510 model "six_pos"
4511 position "thead"
4512 ]
4513 ]
4514 edge
4515 [
4516 source 0
4517 target 13
4518 graphics
4519 [
4520 fill "#000000"
4521 width 3
4522 targetArrow "standard"
4523 ]
4524 LabelGraphics
4525 [
4526 text "eSubpackages reference EPackage"
4527 fontSize 14
4528 fontName "Consolas"
4529 configuration "AutoFlippingLabel"
4530 model "six_pos"
4531 position "thead"
4532 ]
4533 ]
4534 edge
4535 [
4536 source 13
4537 target 0
4538 graphics
4539 [
4540 fill "#000000"
4541 targetArrow "standard"
4542 ]
4543 LabelGraphics
4544 [
4545 text "eSuperPackage reference EPackage"
4546 fontSize 14
4547 fontName "Consolas"
4548 configuration "AutoFlippingLabel"
4549 model "six_pos"
4550 position "thead"
4551 ]
4552 ]
4553 edge
4554 [
4555 source 12
4556 target 8
4557 graphics
4558 [
4559 fill "#000000"
4560 targetArrow "standard"
4561 ]
4562 LabelGraphics
4563 [
4564 text "instanceClassName attribute EClassifier"
4565 fontSize 14
4566 fontName "Consolas"
4567 configuration "AutoFlippingLabel"
4568 model "six_pos"
4569 position "thead"
4570 ]
4571 ]
4572 edge
4573 [
4574 source 11
4575 target 6
4576 graphics
4577 [
4578 fill "#000000"
4579 targetArrow "standard"
4580 ]
4581 LabelGraphics
4582 [
4583 text "instanceClassName attribute EClassifier"
4584 fontSize 14
4585 fontName "Consolas"
4586 configuration "AutoFlippingLabel"
4587 model "six_pos"
4588 position "thead"
4589 ]
4590 ]
4591 edge
4592 [
4593 source 11
4594 target 10
4595 graphics
4596 [
4597 fill "#000000"
4598 targetArrow "standard"
4599 ]
4600 LabelGraphics
4601 [
4602 text "instanceTypeName attribute EClassifier"
4603 fontSize 14
4604 fontName "Consolas"
4605 configuration "AutoFlippingLabel"
4606 model "six_pos"
4607 position "thead"
4608 ]
4609 ]
4610 edge
4611 [
4612 source 12
4613 target 8
4614 graphics
4615 [
4616 fill "#000000"
4617 targetArrow "standard"
4618 ]
4619 LabelGraphics
4620 [
4621 text "instanceTypeName attribute EClassifier"
4622 fontSize 14
4623 fontName "Consolas"
4624 configuration "AutoFlippingLabel"
4625 model "six_pos"
4626 position "thead"
4627 ]
4628 ]
4629 edge
4630 [
4631 source 0
4632 target 10
4633 graphics
4634 [
4635 fill "#000000"
4636 targetArrow "standard"
4637 ]
4638 LabelGraphics
4639 [
4640 text "name attribute ENamedElement"
4641 fontSize 14
4642 fontName "Consolas"
4643 configuration "AutoFlippingLabel"
4644 model "six_pos"
4645 position "thead"
4646 ]
4647 ]
4648 edge
4649 [
4650 source 12
4651 target 10
4652 graphics
4653 [
4654 fill "#000000"
4655 targetArrow "standard"
4656 ]
4657 LabelGraphics
4658 [
4659 text "name attribute ENamedElement"
4660 fontSize 14
4661 fontName "Consolas"
4662 configuration "AutoFlippingLabel"
4663 model "six_pos"
4664 position "thead"
4665 ]
4666 ]
4667 edge
4668 [
4669 source 11
4670 target 10
4671 graphics
4672 [
4673 fill "#000000"
4674 targetArrow "standard"
4675 ]
4676 LabelGraphics
4677 [
4678 text "name attribute ENamedElement"
4679 fontSize 14
4680 fontName "Consolas"
4681 configuration "AutoFlippingLabel"
4682 model "six_pos"
4683 position "thead"
4684 ]
4685 ]
4686 edge
4687 [
4688 source 13
4689 target 6
4690 graphics
4691 [
4692 fill "#000000"
4693 targetArrow "standard"
4694 ]
4695 LabelGraphics
4696 [
4697 text "name attribute ENamedElement"
4698 fontSize 14
4699 fontName "Consolas"
4700 configuration "AutoFlippingLabel"
4701 model "six_pos"
4702 position "thead"
4703 ]
4704 ]
4705 edge
4706 [
4707 source 0
4708 target 9
4709 graphics
4710 [
4711 fill "#000000"
4712 targetArrow "standard"
4713 ]
4714 LabelGraphics
4715 [
4716 text "nsURI attribute EPackage"
4717 fontSize 14
4718 fontName "Consolas"
4719 configuration "AutoFlippingLabel"
4720 model "six_pos"
4721 position "thead"
4722 ]
4723 ]
4724 edge
4725 [
4726 source 13
4727 target 8
4728 graphics
4729 [
4730 fill "#000000"
4731 targetArrow "standard"
4732 ]
4733 LabelGraphics
4734 [
4735 text "nsURI attribute EPackage"
4736 fontSize 14
4737 fontName "Consolas"
4738 configuration "AutoFlippingLabel"
4739 model "six_pos"
4740 position "thead"
4741 ]
4742 ]
4743 edge
4744 [
4745 source 0
4746 target 8
4747 graphics
4748 [
4749 fill "#000000"
4750 targetArrow "standard"
4751 ]
4752 LabelGraphics
4753 [
4754 text "nsPrefix attribute EPackage"
4755 fontSize 14
4756 fontName "Consolas"
4757 configuration "AutoFlippingLabel"
4758 model "six_pos"
4759 position "thead"
4760 ]
4761 ]
4762]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png
new file mode 100644
index 00000000..e01ca46b
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi
new file mode 100644
index 00000000..c6287127
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/>
4 <eClassifiers xsi:type="ecore:EEnum"/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/>
6 <eSubpackages name="A" nsURI="nsPrefix">
7 <eClassifiers xsi:type="ecore:EEnum"/>
8 </eSubpackages>
9</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml
new file mode 100644
index 00000000..05f41ccb
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml
@@ -0,0 +1,2069 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 226.60000000000002
9 h 40
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "Root literal FunctionType"
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 FunctionType enum
30 "
31 fontSize 14
32 fontName "Consolas"
33 alignment "left"
34 anchor "tl"
35 borderDistance 6
36 ]
37 ]
38
39 node
40 [
41 id 1
42 graphics
43 [
44 w 297.0
45 h 40
46 type "rectangle"
47 fill "#FFFFFF"
48 fill2 "#FFFFFF"
49 outline "#000000"
50 ]
51 LabelGraphics
52 [
53 text "Intermediate literal FunctionType"
54 outline "#000000"
55 fill "#FFFFFF"
56 fontSize 16
57 fontName "Monospace"
58 autoSizePolicy "node_width"
59 anchor "t"
60 borderDistance 0.0
61 ]
62 LabelGraphics
63 [
64 text "
65 FunctionType enum
66 "
67 fontSize 14
68 fontName "Consolas"
69 alignment "left"
70 anchor "tl"
71 borderDistance 6
72 ]
73 ]
74
75 node
76 [
77 id 2
78 graphics
79 [
80 w 226.60000000000002
81 h 40
82 type "rectangle"
83 fill "#FFFFFF"
84 fill2 "#FFFFFF"
85 outline "#000000"
86 ]
87 LabelGraphics
88 [
89 text "Leaf literal FunctionType"
90 outline "#000000"
91 fill "#FFFFFF"
92 fontSize 16
93 fontName "Monospace"
94 autoSizePolicy "node_width"
95 anchor "t"
96 borderDistance 0.0
97 ]
98 LabelGraphics
99 [
100 text "
101 FunctionType enum
102 "
103 fontSize 14
104 fontName "Consolas"
105 alignment "left"
106 anchor "tl"
107 borderDistance 6
108 ]
109 ]
110
111 node
112 [
113 id 3
114 graphics
115 [
116 w 361.90000000000003
117 h 54
118 type "rectangle"
119 fill "#FFFFFF"
120 fill2 "#FFFFFF"
121 outline "#000000"
122 ]
123 LabelGraphics
124 [
125 text "o 1"
126 outline "#000000"
127 fill "#FFFFFF"
128 fontSize 16
129 fontName "Monospace"
130 autoSizePolicy "node_width"
131 anchor "t"
132 borderDistance 0.0
133 ]
134 LabelGraphics
135 [
136 text "
137 FunctionalArchitectureModel class DefinedPart
138 FunctionalArchitectureModel class
139 "
140 fontSize 14
141 fontName "Consolas"
142 alignment "left"
143 anchor "tl"
144 borderDistance 6
145 ]
146 ]
147
148 node
149 [
150 id 4
151 graphics
152 [
153 w 41.800000000000004
154 h 26
155 type "rectangle"
156 fill "#FFFFFF"
157 fill2 "#FFFFFF"
158 outline "#000000"
159 ]
160 LabelGraphics
161 [
162 text "true"
163 outline "#000000"
164 fill "#FFFFFF"
165 fontSize 16
166 fontName "Monospace"
167 autoSizePolicy "node_width"
168 anchor "t"
169 borderDistance 0.0
170 ]
171 LabelGraphics
172 [
173 text "
174 "
175 fontSize 14
176 fontName "Consolas"
177 alignment "left"
178 anchor "tl"
179 borderDistance 6
180 ]
181 ]
182
183 node
184 [
185 id 5
186 graphics
187 [
188 w 50.6
189 h 26
190 type "rectangle"
191 fill "#FFFFFF"
192 fill2 "#FFFFFF"
193 outline "#000000"
194 ]
195 LabelGraphics
196 [
197 text "false"
198 outline "#000000"
199 fill "#FFFFFF"
200 fontSize 16
201 fontName "Monospace"
202 autoSizePolicy "node_width"
203 anchor "t"
204 borderDistance 0.0
205 ]
206 LabelGraphics
207 [
208 text "
209 "
210 fontSize 14
211 fontName "Consolas"
212 alignment "left"
213 anchor "tl"
214 borderDistance 6
215 ]
216 ]
217
218 node
219 [
220 id 6
221 graphics
222 [
223 w 192.50000000000003
224 h 54
225 type "rectangle"
226 fill "#FFFFFF"
227 fill2 "#FFFFFF"
228 outline "#000000"
229 ]
230 LabelGraphics
231 [
232 text "null"
233 outline "#000000"
234 fill "#FFFFFF"
235 fontSize 16
236 fontName "Monospace"
237 autoSizePolicy "node_width"
238 anchor "t"
239 borderDistance 0.0
240 ]
241 LabelGraphics
242 [
243 text "
244 FunctionalElement class
245 Function class
246 "
247 fontSize 14
248 fontName "Consolas"
249 alignment "left"
250 anchor "tl"
251 borderDistance 6
252 ]
253 ]
254
255 node
256 [
257 id 7
258 graphics
259 [
260 w 112.2
261 h 26
262 type "rectangle"
263 fill "#FFFFFF"
264 fill2 "#FFFFFF"
265 outline "#000000"
266 ]
267 LabelGraphics
268 [
269 text "New Integers"
270 outline "#000000"
271 fill "#FFFFFF"
272 fontSize 16
273 fontName "Monospace"
274 autoSizePolicy "node_width"
275 anchor "t"
276 borderDistance 0.0
277 ]
278 LabelGraphics
279 [
280 text "
281 "
282 fontSize 14
283 fontName "Consolas"
284 alignment "left"
285 anchor "tl"
286 borderDistance 6
287 ]
288 ]
289
290 node
291 [
292 id 8
293 graphics
294 [
295 w 85.80000000000001
296 h 26
297 type "rectangle"
298 fill "#FFFFFF"
299 fill2 "#FFFFFF"
300 outline "#000000"
301 ]
302 LabelGraphics
303 [
304 text "New Reals"
305 outline "#000000"
306 fill "#FFFFFF"
307 fontSize 16
308 fontName "Monospace"
309 autoSizePolicy "node_width"
310 anchor "t"
311 borderDistance 0.0
312 ]
313 LabelGraphics
314 [
315 text "
316 "
317 fontSize 14
318 fontName "Consolas"
319 alignment "left"
320 anchor "tl"
321 borderDistance 6
322 ]
323 ]
324
325 node
326 [
327 id 9
328 graphics
329 [
330 w 103.4
331 h 26
332 type "rectangle"
333 fill "#FFFFFF"
334 fill2 "#FFFFFF"
335 outline "#000000"
336 ]
337 LabelGraphics
338 [
339 text "New Strings"
340 outline "#000000"
341 fill "#FFFFFF"
342 fontSize 16
343 fontName "Monospace"
344 autoSizePolicy "node_width"
345 anchor "t"
346 borderDistance 0.0
347 ]
348 LabelGraphics
349 [
350 text "
351 "
352 fontSize 14
353 fontName "Consolas"
354 alignment "left"
355 anchor "tl"
356 borderDistance 6
357 ]
358 ]
359
360 node
361 [
362 id 10
363 graphics
364 [
365 w 103.4
366 h 26
367 type "rectangle"
368 fill "#FFFFFF"
369 fill2 "#FFFFFF"
370 outline "#000000"
371 ]
372 LabelGraphics
373 [
374 text "New Objects"
375 outline "#000000"
376 fill "#FFFFFF"
377 fontSize 16
378 fontName "Monospace"
379 autoSizePolicy "node_width"
380 anchor "t"
381 borderDistance 0.0
382 ]
383 LabelGraphics
384 [
385 text "
386 "
387 fontSize 14
388 fontName "Consolas"
389 alignment "left"
390 anchor "tl"
391 borderDistance 6
392 ]
393 ]
394 edge
395 [
396 source 6
397 target 3
398 graphics
399 [
400 fill "#000000"
401 targetArrow "standard"
402 ]
403 LabelGraphics
404 [
405 text "model reference FunctionalElement"
406 fontSize 14
407 fontName "Consolas"
408 configuration "AutoFlippingLabel"
409 model "six_pos"
410 position "thead"
411 ]
412 ]
413 edge
414 [
415 source 3
416 target 6
417 graphics
418 [
419 fill "#000000"
420 width 3
421 targetArrow "standard"
422 ]
423 LabelGraphics
424 [
425 text "rootElements reference FunctionalArchitectureModel"
426 fontSize 14
427 fontName "Consolas"
428 configuration "AutoFlippingLabel"
429 model "six_pos"
430 position "thead"
431 ]
432 ]
433 edge
434 [
435 source 6
436 target 2
437 graphics
438 [
439 fill "#000000"
440 targetArrow "standard"
441 ]
442 LabelGraphics
443 [
444 text "type attribute Function"
445 fontSize 14
446 fontName "Consolas"
447 configuration "AutoFlippingLabel"
448 model "six_pos"
449 position "thead"
450 ]
451 ]
452]
453graph
454[
455 node
456 [
457 id 0
458 graphics
459 [
460 w 226.60000000000002
461 h 40
462 type "rectangle"
463 fill "#FFFFFF"
464 fill2 "#FFFFFF"
465 outline "#000000"
466 ]
467 LabelGraphics
468 [
469 text "Root literal FunctionType"
470 outline "#000000"
471 fill "#FFFFFF"
472 fontSize 16
473 fontName "Monospace"
474 autoSizePolicy "node_width"
475 anchor "t"
476 borderDistance 0.0
477 ]
478 LabelGraphics
479 [
480 text "
481 FunctionType enum
482 "
483 fontSize 14
484 fontName "Consolas"
485 alignment "left"
486 anchor "tl"
487 borderDistance 6
488 ]
489 ]
490
491 node
492 [
493 id 1
494 graphics
495 [
496 w 297.0
497 h 40
498 type "rectangle"
499 fill "#FFFFFF"
500 fill2 "#FFFFFF"
501 outline "#000000"
502 ]
503 LabelGraphics
504 [
505 text "Intermediate literal FunctionType"
506 outline "#000000"
507 fill "#FFFFFF"
508 fontSize 16
509 fontName "Monospace"
510 autoSizePolicy "node_width"
511 anchor "t"
512 borderDistance 0.0
513 ]
514 LabelGraphics
515 [
516 text "
517 FunctionType enum
518 "
519 fontSize 14
520 fontName "Consolas"
521 alignment "left"
522 anchor "tl"
523 borderDistance 6
524 ]
525 ]
526
527 node
528 [
529 id 2
530 graphics
531 [
532 w 226.60000000000002
533 h 40
534 type "rectangle"
535 fill "#FFFFFF"
536 fill2 "#FFFFFF"
537 outline "#000000"
538 ]
539 LabelGraphics
540 [
541 text "Leaf literal FunctionType"
542 outline "#000000"
543 fill "#FFFFFF"
544 fontSize 16
545 fontName "Monospace"
546 autoSizePolicy "node_width"
547 anchor "t"
548 borderDistance 0.0
549 ]
550 LabelGraphics
551 [
552 text "
553 FunctionType enum
554 "
555 fontSize 14
556 fontName "Consolas"
557 alignment "left"
558 anchor "tl"
559 borderDistance 6
560 ]
561 ]
562
563 node
564 [
565 id 3
566 graphics
567 [
568 w 361.90000000000003
569 h 54
570 type "rectangle"
571 fill "#FFFFFF"
572 fill2 "#FFFFFF"
573 outline "#000000"
574 ]
575 LabelGraphics
576 [
577 text "o 1"
578 outline "#000000"
579 fill "#FFFFFF"
580 fontSize 16
581 fontName "Monospace"
582 autoSizePolicy "node_width"
583 anchor "t"
584 borderDistance 0.0
585 ]
586 LabelGraphics
587 [
588 text "
589 FunctionalArchitectureModel class DefinedPart
590 FunctionalArchitectureModel class
591 "
592 fontSize 14
593 fontName "Consolas"
594 alignment "left"
595 anchor "tl"
596 borderDistance 6
597 ]
598 ]
599
600 node
601 [
602 id 4
603 graphics
604 [
605 w 41.800000000000004
606 h 26
607 type "rectangle"
608 fill "#FFFFFF"
609 fill2 "#FFFFFF"
610 outline "#000000"
611 ]
612 LabelGraphics
613 [
614 text "true"
615 outline "#000000"
616 fill "#FFFFFF"
617 fontSize 16
618 fontName "Monospace"
619 autoSizePolicy "node_width"
620 anchor "t"
621 borderDistance 0.0
622 ]
623 LabelGraphics
624 [
625 text "
626 "
627 fontSize 14
628 fontName "Consolas"
629 alignment "left"
630 anchor "tl"
631 borderDistance 6
632 ]
633 ]
634
635 node
636 [
637 id 5
638 graphics
639 [
640 w 50.6
641 h 26
642 type "rectangle"
643 fill "#FFFFFF"
644 fill2 "#FFFFFF"
645 outline "#000000"
646 ]
647 LabelGraphics
648 [
649 text "false"
650 outline "#000000"
651 fill "#FFFFFF"
652 fontSize 16
653 fontName "Monospace"
654 autoSizePolicy "node_width"
655 anchor "t"
656 borderDistance 0.0
657 ]
658 LabelGraphics
659 [
660 text "
661 "
662 fontSize 14
663 fontName "Consolas"
664 alignment "left"
665 anchor "tl"
666 borderDistance 6
667 ]
668 ]
669
670 node
671 [
672 id 6
673 graphics
674 [
675 w 192.50000000000003
676 h 54
677 type "rectangle"
678 fill "#FFFFFF"
679 fill2 "#FFFFFF"
680 outline "#000000"
681 ]
682 LabelGraphics
683 [
684 text "null"
685 outline "#000000"
686 fill "#FFFFFF"
687 fontSize 16
688 fontName "Monospace"
689 autoSizePolicy "node_width"
690 anchor "t"
691 borderDistance 0.0
692 ]
693 LabelGraphics
694 [
695 text "
696 FunctionalElement class
697 Function class
698 "
699 fontSize 14
700 fontName "Consolas"
701 alignment "left"
702 anchor "tl"
703 borderDistance 6
704 ]
705 ]
706
707 node
708 [
709 id 7
710 graphics
711 [
712 w 112.2
713 h 26
714 type "rectangle"
715 fill "#FFFFFF"
716 fill2 "#FFFFFF"
717 outline "#000000"
718 ]
719 LabelGraphics
720 [
721 text "New Integers"
722 outline "#000000"
723 fill "#FFFFFF"
724 fontSize 16
725 fontName "Monospace"
726 autoSizePolicy "node_width"
727 anchor "t"
728 borderDistance 0.0
729 ]
730 LabelGraphics
731 [
732 text "
733 "
734 fontSize 14
735 fontName "Consolas"
736 alignment "left"
737 anchor "tl"
738 borderDistance 6
739 ]
740 ]
741
742 node
743 [
744 id 8
745 graphics
746 [
747 w 85.80000000000001
748 h 26
749 type "rectangle"
750 fill "#FFFFFF"
751 fill2 "#FFFFFF"
752 outline "#000000"
753 ]
754 LabelGraphics
755 [
756 text "New Reals"
757 outline "#000000"
758 fill "#FFFFFF"
759 fontSize 16
760 fontName "Monospace"
761 autoSizePolicy "node_width"
762 anchor "t"
763 borderDistance 0.0
764 ]
765 LabelGraphics
766 [
767 text "
768 "
769 fontSize 14
770 fontName "Consolas"
771 alignment "left"
772 anchor "tl"
773 borderDistance 6
774 ]
775 ]
776
777 node
778 [
779 id 9
780 graphics
781 [
782 w 103.4
783 h 26
784 type "rectangle"
785 fill "#FFFFFF"
786 fill2 "#FFFFFF"
787 outline "#000000"
788 ]
789 LabelGraphics
790 [
791 text "New Strings"
792 outline "#000000"
793 fill "#FFFFFF"
794 fontSize 16
795 fontName "Monospace"
796 autoSizePolicy "node_width"
797 anchor "t"
798 borderDistance 0.0
799 ]
800 LabelGraphics
801 [
802 text "
803 "
804 fontSize 14
805 fontName "Consolas"
806 alignment "left"
807 anchor "tl"
808 borderDistance 6
809 ]
810 ]
811
812 node
813 [
814 id 10
815 graphics
816 [
817 w 103.4
818 h 26
819 type "rectangle"
820 fill "#FFFFFF"
821 fill2 "#FFFFFF"
822 outline "#000000"
823 ]
824 LabelGraphics
825 [
826 text "New Objects"
827 outline "#000000"
828 fill "#FFFFFF"
829 fontSize 16
830 fontName "Monospace"
831 autoSizePolicy "node_width"
832 anchor "t"
833 borderDistance 0.0
834 ]
835 LabelGraphics
836 [
837 text "
838 "
839 fontSize 14
840 fontName "Consolas"
841 alignment "left"
842 anchor "tl"
843 borderDistance 6
844 ]
845 ]
846 edge
847 [
848 source 6
849 target 3
850 graphics
851 [
852 fill "#000000"
853 targetArrow "standard"
854 ]
855 LabelGraphics
856 [
857 text "model reference FunctionalElement"
858 fontSize 14
859 fontName "Consolas"
860 configuration "AutoFlippingLabel"
861 model "six_pos"
862 position "thead"
863 ]
864 ]
865 edge
866 [
867 source 3
868 target 6
869 graphics
870 [
871 fill "#000000"
872 width 3
873 targetArrow "standard"
874 ]
875 LabelGraphics
876 [
877 text "rootElements reference FunctionalArchitectureModel"
878 fontSize 14
879 fontName "Consolas"
880 configuration "AutoFlippingLabel"
881 model "six_pos"
882 position "thead"
883 ]
884 ]
885 edge
886 [
887 source 6
888 target 0
889 graphics
890 [
891 fill "#000000"
892 targetArrow "standard"
893 ]
894 LabelGraphics
895 [
896 text "type attribute Function"
897 fontSize 14
898 fontName "Consolas"
899 configuration "AutoFlippingLabel"
900 model "six_pos"
901 position "thead"
902 ]
903 ]
904]
905graph
906[
907 node
908 [
909 id 0
910 graphics
911 [
912 w 254.10000000000002
913 h 110
914 type "rectangle"
915 fill "#FFFFFF"
916 fill2 "#FFFFFF"
917 outline "#000000"
918 ]
919 LabelGraphics
920 [
921 text "o 1"
922 outline "#000000"
923 fill "#FFFFFF"
924 fontSize 16
925 fontName "Monospace"
926 autoSizePolicy "node_width"
927 anchor "t"
928 borderDistance 0.0
929 ]
930 LabelGraphics
931 [
932 text "
933 EModelElement class DefinedPart
934 ENamedElement class DefinedPart
935 EPackage class DefinedPart
936 EModelElement class
937 ENamedElement class
938 EPackage class
939 "
940 fontSize 14
941 fontName "Consolas"
942 alignment "left"
943 anchor "tl"
944 borderDistance 6
945 ]
946 ]
947
948 node
949 [
950 id 1
951 graphics
952 [
953 w 41.800000000000004
954 h 26
955 type "rectangle"
956 fill "#FFFFFF"
957 fill2 "#FFFFFF"
958 outline "#000000"
959 ]
960 LabelGraphics
961 [
962 text "true"
963 outline "#000000"
964 fill "#FFFFFF"
965 fontSize 16
966 fontName "Monospace"
967 autoSizePolicy "node_width"
968 anchor "t"
969 borderDistance 0.0
970 ]
971 LabelGraphics
972 [
973 text "
974 "
975 fontSize 14
976 fontName "Consolas"
977 alignment "left"
978 anchor "tl"
979 borderDistance 6
980 ]
981 ]
982
983 node
984 [
985 id 2
986 graphics
987 [
988 w 50.6
989 h 26
990 type "rectangle"
991 fill "#FFFFFF"
992 fill2 "#FFFFFF"
993 outline "#000000"
994 ]
995 LabelGraphics
996 [
997 text "false"
998 outline "#000000"
999 fill "#FFFFFF"
1000 fontSize 16
1001 fontName "Monospace"
1002 autoSizePolicy "node_width"
1003 anchor "t"
1004 borderDistance 0.0
1005 ]
1006 LabelGraphics
1007 [
1008 text "
1009 "
1010 fontSize 14
1011 fontName "Consolas"
1012 alignment "left"
1013 anchor "tl"
1014 borderDistance 6
1015 ]
1016 ]
1017
1018 node
1019 [
1020 id 3
1021 graphics
1022 [
1023 w 24.200000000000003
1024 h 26
1025 type "rectangle"
1026 fill "#FFFFFF"
1027 fill2 "#FFFFFF"
1028 outline "#000000"
1029 ]
1030 LabelGraphics
1031 [
1032 text "-1"
1033 outline "#000000"
1034 fill "#FFFFFF"
1035 fontSize 16
1036 fontName "Monospace"
1037 autoSizePolicy "node_width"
1038 anchor "t"
1039 borderDistance 0.0
1040 ]
1041 LabelGraphics
1042 [
1043 text "
1044 "
1045 fontSize 14
1046 fontName "Consolas"
1047 alignment "left"
1048 anchor "tl"
1049 borderDistance 6
1050 ]
1051 ]
1052
1053 node
1054 [
1055 id 4
1056 graphics
1057 [
1058 w 15.400000000000002
1059 h 26
1060 type "rectangle"
1061 fill "#FFFFFF"
1062 fill2 "#FFFFFF"
1063 outline "#000000"
1064 ]
1065 LabelGraphics
1066 [
1067 text "0"
1068 outline "#000000"
1069 fill "#FFFFFF"
1070 fontSize 16
1071 fontName "Monospace"
1072 autoSizePolicy "node_width"
1073 anchor "t"
1074 borderDistance 0.0
1075 ]
1076 LabelGraphics
1077 [
1078 text "
1079 "
1080 fontSize 14
1081 fontName "Consolas"
1082 alignment "left"
1083 anchor "tl"
1084 borderDistance 6
1085 ]
1086 ]
1087
1088 node
1089 [
1090 id 5
1091 graphics
1092 [
1093 w 15.400000000000002
1094 h 26
1095 type "rectangle"
1096 fill "#FFFFFF"
1097 fill2 "#FFFFFF"
1098 outline "#000000"
1099 ]
1100 LabelGraphics
1101 [
1102 text "1"
1103 outline "#000000"
1104 fill "#FFFFFF"
1105 fontSize 16
1106 fontName "Monospace"
1107 autoSizePolicy "node_width"
1108 anchor "t"
1109 borderDistance 0.0
1110 ]
1111 LabelGraphics
1112 [
1113 text "
1114 "
1115 fontSize 14
1116 fontName "Consolas"
1117 alignment "left"
1118 anchor "tl"
1119 borderDistance 6
1120 ]
1121 ]
1122
1123 node
1124 [
1125 id 6
1126 graphics
1127 [
1128 w 33.0
1129 h 26
1130 type "rectangle"
1131 fill "#FFFFFF"
1132 fill2 "#FFFFFF"
1133 outline "#000000"
1134 ]
1135 LabelGraphics
1136 [
1137 text ""A""
1138 outline "#000000"
1139 fill "#FFFFFF"
1140 fontSize 16
1141 fontName "Monospace"
1142 autoSizePolicy "node_width"
1143 anchor "t"
1144 borderDistance 0.0
1145 ]
1146 LabelGraphics
1147 [
1148 text "
1149 "
1150 fontSize 14
1151 fontName "Consolas"
1152 alignment "left"
1153 anchor "tl"
1154 borderDistance 6
1155 ]
1156 ]
1157
1158 node
1159 [
1160 id 7
1161 graphics
1162 [
1163 w 33.0
1164 h 26
1165 type "rectangle"
1166 fill "#FFFFFF"
1167 fill2 "#FFFFFF"
1168 outline "#000000"
1169 ]
1170 LabelGraphics
1171 [
1172 text ""B""
1173 outline "#000000"
1174 fill "#FFFFFF"
1175 fontSize 16
1176 fontName "Monospace"
1177 autoSizePolicy "node_width"
1178 anchor "t"
1179 borderDistance 0.0
1180 ]
1181 LabelGraphics
1182 [
1183 text "
1184 "
1185 fontSize 14
1186 fontName "Consolas"
1187 alignment "left"
1188 anchor "tl"
1189 borderDistance 6
1190 ]
1191 ]
1192
1193 node
1194 [
1195 id 8
1196 graphics
1197 [
1198 w 94.60000000000001
1199 h 26
1200 type "rectangle"
1201 fill "#FFFFFF"
1202 fill2 "#FFFFFF"
1203 outline "#000000"
1204 ]
1205 LabelGraphics
1206 [
1207 text ""nsPrefix""
1208 outline "#000000"
1209 fill "#FFFFFF"
1210 fontSize 16
1211 fontName "Monospace"
1212 autoSizePolicy "node_width"
1213 anchor "t"
1214 borderDistance 0.0
1215 ]
1216 LabelGraphics
1217 [
1218 text "
1219 "
1220 fontSize 14
1221 fontName "Consolas"
1222 alignment "left"
1223 anchor "tl"
1224 borderDistance 6
1225 ]
1226 ]
1227
1228 node
1229 [
1230 id 9
1231 graphics
1232 [
1233 w 68.2
1234 h 26
1235 type "rectangle"
1236 fill "#FFFFFF"
1237 fill2 "#FFFFFF"
1238 outline "#000000"
1239 ]
1240 LabelGraphics
1241 [
1242 text ""nsUri""
1243 outline "#000000"
1244 fill "#FFFFFF"
1245 fontSize 16
1246 fontName "Monospace"
1247 autoSizePolicy "node_width"
1248 anchor "t"
1249 borderDistance 0.0
1250 ]
1251 LabelGraphics
1252 [
1253 text "
1254 "
1255 fontSize 14
1256 fontName "Consolas"
1257 alignment "left"
1258 anchor "tl"
1259 borderDistance 6
1260 ]
1261 ]
1262
1263 node
1264 [
1265 id 10
1266 graphics
1267 [
1268 w 121.00000000000001
1269 h 26
1270 type "rectangle"
1271 fill "#FFFFFF"
1272 fill2 "#FFFFFF"
1273 outline "#000000"
1274 ]
1275 LabelGraphics
1276 [
1277 text ""packageName""
1278 outline "#000000"
1279 fill "#FFFFFF"
1280 fontSize 16
1281 fontName "Monospace"
1282 autoSizePolicy "node_width"
1283 anchor "t"
1284 borderDistance 0.0
1285 ]
1286 LabelGraphics
1287 [
1288 text "
1289 "
1290 fontSize 14
1291 fontName "Consolas"
1292 alignment "left"
1293 anchor "tl"
1294 borderDistance 6
1295 ]
1296 ]
1297
1298 node
1299 [
1300 id 11
1301 graphics
1302 [
1303 w 269.5
1304 h 124
1305 type "rectangle"
1306 fill "#FFFFFF"
1307 fill2 "#FFFFFF"
1308 outline "#000000"
1309 ]
1310 LabelGraphics
1311 [
1312 text "null"
1313 outline "#000000"
1314 fill "#FFFFFF"
1315 fontSize 16
1316 fontName "Monospace"
1317 autoSizePolicy "node_width"
1318 anchor "t"
1319 borderDistance 0.0
1320 ]
1321 LabelGraphics
1322 [
1323 text "
1324 EClassifier class
1325 EDataType class
1326 EEnum class
1327 EModelElement class
1328 ENamedElement class
1329 EModelElement class UndefinedPart
1330 ENamedElement class UndefinedPart
1331 "
1332 fontSize 14
1333 fontName "Consolas"
1334 alignment "left"
1335 anchor "tl"
1336 borderDistance 6
1337 ]
1338 ]
1339
1340 node
1341 [
1342 id 12
1343 graphics
1344 [
1345 w 269.5
1346 h 124
1347 type "rectangle"
1348 fill "#FFFFFF"
1349 fill2 "#FFFFFF"
1350 outline "#000000"
1351 ]
1352 LabelGraphics
1353 [
1354 text "null"
1355 outline "#000000"
1356 fill "#FFFFFF"
1357 fontSize 16
1358 fontName "Monospace"
1359 autoSizePolicy "node_width"
1360 anchor "t"
1361 borderDistance 0.0
1362 ]
1363 LabelGraphics
1364 [
1365 text "
1366 EClassifier class
1367 EDataType class
1368 EEnum class
1369 EModelElement class
1370 ENamedElement class
1371 EModelElement class UndefinedPart
1372 ENamedElement class UndefinedPart
1373 "
1374 fontSize 14
1375 fontName "Consolas"
1376 alignment "left"
1377 anchor "tl"
1378 borderDistance 6
1379 ]
1380 ]
1381
1382 node
1383 [
1384 id 13
1385 graphics
1386 [
1387 w 269.5
1388 h 110
1389 type "rectangle"
1390 fill "#FFFFFF"
1391 fill2 "#FFFFFF"
1392 outline "#000000"
1393 ]
1394 LabelGraphics
1395 [
1396 text "null"
1397 outline "#000000"
1398 fill "#FFFFFF"
1399 fontSize 16
1400 fontName "Monospace"
1401 autoSizePolicy "node_width"
1402 anchor "t"
1403 borderDistance 0.0
1404 ]
1405 LabelGraphics
1406 [
1407 text "
1408 EModelElement class
1409 ENamedElement class
1410 EPackage class
1411 EModelElement class UndefinedPart
1412 ENamedElement class UndefinedPart
1413 EPackage class UndefinedPart
1414 "
1415 fontSize 14
1416 fontName "Consolas"
1417 alignment "left"
1418 anchor "tl"
1419 borderDistance 6
1420 ]
1421 ]
1422
1423 node
1424 [
1425 id 14
1426 graphics
1427 [
1428 w 269.5
1429 h 124
1430 type "rectangle"
1431 fill "#FFFFFF"
1432 fill2 "#FFFFFF"
1433 outline "#000000"
1434 ]
1435 LabelGraphics
1436 [
1437 text "null"
1438 outline "#000000"
1439 fill "#FFFFFF"
1440 fontSize 16
1441 fontName "Monospace"
1442 autoSizePolicy "node_width"
1443 anchor "t"
1444 borderDistance 0.0
1445 ]
1446 LabelGraphics
1447 [
1448 text "
1449 EClassifier class
1450 EDataType class
1451 EEnum class
1452 EModelElement class
1453 ENamedElement class
1454 EModelElement class UndefinedPart
1455 ENamedElement class UndefinedPart
1456 "
1457 fontSize 14
1458 fontName "Consolas"
1459 alignment "left"
1460 anchor "tl"
1461 borderDistance 6
1462 ]
1463 ]
1464
1465 node
1466 [
1467 id 15
1468 graphics
1469 [
1470 w 269.5
1471 h 124
1472 type "rectangle"
1473 fill "#FFFFFF"
1474 fill2 "#FFFFFF"
1475 outline "#000000"
1476 ]
1477 LabelGraphics
1478 [
1479 text "null"
1480 outline "#000000"
1481 fill "#FFFFFF"
1482 fontSize 16
1483 fontName "Monospace"
1484 autoSizePolicy "node_width"
1485 anchor "t"
1486 borderDistance 0.0
1487 ]
1488 LabelGraphics
1489 [
1490 text "
1491 EClassifier class
1492 EDataType class
1493 EEnum class
1494 EModelElement class
1495 ENamedElement class
1496 EModelElement class UndefinedPart
1497 ENamedElement class UndefinedPart
1498 "
1499 fontSize 14
1500 fontName "Consolas"
1501 alignment "left"
1502 anchor "tl"
1503 borderDistance 6
1504 ]
1505 ]
1506
1507 node
1508 [
1509 id 16
1510 graphics
1511 [
1512 w 112.2
1513 h 26
1514 type "rectangle"
1515 fill "#FFFFFF"
1516 fill2 "#FFFFFF"
1517 outline "#000000"
1518 ]
1519 LabelGraphics
1520 [
1521 text "New Integers"
1522 outline "#000000"
1523 fill "#FFFFFF"
1524 fontSize 16
1525 fontName "Monospace"
1526 autoSizePolicy "node_width"
1527 anchor "t"
1528 borderDistance 0.0
1529 ]
1530 LabelGraphics
1531 [
1532 text "
1533 "
1534 fontSize 14
1535 fontName "Consolas"
1536 alignment "left"
1537 anchor "tl"
1538 borderDistance 6
1539 ]
1540 ]
1541
1542 node
1543 [
1544 id 17
1545 graphics
1546 [
1547 w 85.80000000000001
1548 h 26
1549 type "rectangle"
1550 fill "#FFFFFF"
1551 fill2 "#FFFFFF"
1552 outline "#000000"
1553 ]
1554 LabelGraphics
1555 [
1556 text "New Reals"
1557 outline "#000000"
1558 fill "#FFFFFF"
1559 fontSize 16
1560 fontName "Monospace"
1561 autoSizePolicy "node_width"
1562 anchor "t"
1563 borderDistance 0.0
1564 ]
1565 LabelGraphics
1566 [
1567 text "
1568 "
1569 fontSize 14
1570 fontName "Consolas"
1571 alignment "left"
1572 anchor "tl"
1573 borderDistance 6
1574 ]
1575 ]
1576
1577 node
1578 [
1579 id 18
1580 graphics
1581 [
1582 w 103.4
1583 h 26
1584 type "rectangle"
1585 fill "#FFFFFF"
1586 fill2 "#FFFFFF"
1587 outline "#000000"
1588 ]
1589 LabelGraphics
1590 [
1591 text "New Strings"
1592 outline "#000000"
1593 fill "#FFFFFF"
1594 fontSize 16
1595 fontName "Monospace"
1596 autoSizePolicy "node_width"
1597 anchor "t"
1598 borderDistance 0.0
1599 ]
1600 LabelGraphics
1601 [
1602 text "
1603 "
1604 fontSize 14
1605 fontName "Consolas"
1606 alignment "left"
1607 anchor "tl"
1608 borderDistance 6
1609 ]
1610 ]
1611
1612 node
1613 [
1614 id 19
1615 graphics
1616 [
1617 w 103.4
1618 h 26
1619 type "rectangle"
1620 fill "#FFFFFF"
1621 fill2 "#FFFFFF"
1622 outline "#000000"
1623 ]
1624 LabelGraphics
1625 [
1626 text "New Objects"
1627 outline "#000000"
1628 fill "#FFFFFF"
1629 fontSize 16
1630 fontName "Monospace"
1631 autoSizePolicy "node_width"
1632 anchor "t"
1633 borderDistance 0.0
1634 ]
1635 LabelGraphics
1636 [
1637 text "
1638 "
1639 fontSize 14
1640 fontName "Consolas"
1641 alignment "left"
1642 anchor "tl"
1643 borderDistance 6
1644 ]
1645 ]
1646 edge
1647 [
1648 source 11
1649 target 0
1650 graphics
1651 [
1652 fill "#000000"
1653 targetArrow "standard"
1654 ]
1655 LabelGraphics
1656 [
1657 text "ePackage reference EClassifier"
1658 fontSize 14
1659 fontName "Consolas"
1660 configuration "AutoFlippingLabel"
1661 model "six_pos"
1662 position "thead"
1663 ]
1664 ]
1665 edge
1666 [
1667 source 12
1668 target 0
1669 graphics
1670 [
1671 fill "#000000"
1672 targetArrow "standard"
1673 ]
1674 LabelGraphics
1675 [
1676 text "ePackage reference EClassifier"
1677 fontSize 14
1678 fontName "Consolas"
1679 configuration "AutoFlippingLabel"
1680 model "six_pos"
1681 position "thead"
1682 ]
1683 ]
1684 edge
1685 [
1686 source 14
1687 target 0
1688 graphics
1689 [
1690 fill "#000000"
1691 targetArrow "standard"
1692 ]
1693 LabelGraphics
1694 [
1695 text "ePackage reference EClassifier"
1696 fontSize 14
1697 fontName "Consolas"
1698 configuration "AutoFlippingLabel"
1699 model "six_pos"
1700 position "thead"
1701 ]
1702 ]
1703 edge
1704 [
1705 source 15
1706 target 13
1707 graphics
1708 [
1709 fill "#000000"
1710 targetArrow "standard"
1711 ]
1712 LabelGraphics
1713 [
1714 text "ePackage reference EClassifier"
1715 fontSize 14
1716 fontName "Consolas"
1717 configuration "AutoFlippingLabel"
1718 model "six_pos"
1719 position "thead"
1720 ]
1721 ]
1722 edge
1723 [
1724 source 0
1725 target 11
1726 graphics
1727 [
1728 fill "#000000"
1729 width 3
1730 targetArrow "standard"
1731 ]
1732 LabelGraphics
1733 [
1734 text "eClassifiers reference EPackage"
1735 fontSize 14
1736 fontName "Consolas"
1737 configuration "AutoFlippingLabel"
1738 model "six_pos"
1739 position "thead"
1740 ]
1741 ]
1742 edge
1743 [
1744 source 0
1745 target 12
1746 graphics
1747 [
1748 fill "#000000"
1749 width 3
1750 targetArrow "standard"
1751 ]
1752 LabelGraphics
1753 [
1754 text "eClassifiers reference EPackage"
1755 fontSize 14
1756 fontName "Consolas"
1757 configuration "AutoFlippingLabel"
1758 model "six_pos"
1759 position "thead"
1760 ]
1761 ]
1762 edge
1763 [
1764 source 0
1765 target 14
1766 graphics
1767 [
1768 fill "#000000"
1769 width 3
1770 targetArrow "standard"
1771 ]
1772 LabelGraphics
1773 [
1774 text "eClassifiers reference EPackage"
1775 fontSize 14
1776 fontName "Consolas"
1777 configuration "AutoFlippingLabel"
1778 model "six_pos"
1779 position "thead"
1780 ]
1781 ]
1782 edge
1783 [
1784 source 13
1785 target 15
1786 graphics
1787 [
1788 fill "#000000"
1789 width 3
1790 targetArrow "standard"
1791 ]
1792 LabelGraphics
1793 [
1794 text "eClassifiers reference EPackage"
1795 fontSize 14
1796 fontName "Consolas"
1797 configuration "AutoFlippingLabel"
1798 model "six_pos"
1799 position "thead"
1800 ]
1801 ]
1802 edge
1803 [
1804 source 0
1805 target 13
1806 graphics
1807 [
1808 fill "#000000"
1809 width 3
1810 targetArrow "standard"
1811 ]
1812 LabelGraphics
1813 [
1814 text "eSubpackages reference EPackage"
1815 fontSize 14
1816 fontName "Consolas"
1817 configuration "AutoFlippingLabel"
1818 model "six_pos"
1819 position "thead"
1820 ]
1821 ]
1822 edge
1823 [
1824 source 13
1825 target 0
1826 graphics
1827 [
1828 fill "#000000"
1829 targetArrow "standard"
1830 ]
1831 LabelGraphics
1832 [
1833 text "eSuperPackage reference EPackage"
1834 fontSize 14
1835 fontName "Consolas"
1836 configuration "AutoFlippingLabel"
1837 model "six_pos"
1838 position "thead"
1839 ]
1840 ]
1841 edge
1842 [
1843 source 12
1844 target 8
1845 graphics
1846 [
1847 fill "#000000"
1848 targetArrow "standard"
1849 ]
1850 LabelGraphics
1851 [
1852 text "instanceClassName attribute EClassifier"
1853 fontSize 14
1854 fontName "Consolas"
1855 configuration "AutoFlippingLabel"
1856 model "six_pos"
1857 position "thead"
1858 ]
1859 ]
1860 edge
1861 [
1862 source 11
1863 target 6
1864 graphics
1865 [
1866 fill "#000000"
1867 targetArrow "standard"
1868 ]
1869 LabelGraphics
1870 [
1871 text "instanceClassName attribute EClassifier"
1872 fontSize 14
1873 fontName "Consolas"
1874 configuration "AutoFlippingLabel"
1875 model "six_pos"
1876 position "thead"
1877 ]
1878 ]
1879 edge
1880 [
1881 source 11
1882 target 10
1883 graphics
1884 [
1885 fill "#000000"
1886 targetArrow "standard"
1887 ]
1888 LabelGraphics
1889 [
1890 text "instanceTypeName attribute EClassifier"
1891 fontSize 14
1892 fontName "Consolas"
1893 configuration "AutoFlippingLabel"
1894 model "six_pos"
1895 position "thead"
1896 ]
1897 ]
1898 edge
1899 [
1900 source 12
1901 target 8
1902 graphics
1903 [
1904 fill "#000000"
1905 targetArrow "standard"
1906 ]
1907 LabelGraphics
1908 [
1909 text "instanceTypeName attribute EClassifier"
1910 fontSize 14
1911 fontName "Consolas"
1912 configuration "AutoFlippingLabel"
1913 model "six_pos"
1914 position "thead"
1915 ]
1916 ]
1917 edge
1918 [
1919 source 0
1920 target 10
1921 graphics
1922 [
1923 fill "#000000"
1924 targetArrow "standard"
1925 ]
1926 LabelGraphics
1927 [
1928 text "name attribute ENamedElement"
1929 fontSize 14
1930 fontName "Consolas"
1931 configuration "AutoFlippingLabel"
1932 model "six_pos"
1933 position "thead"
1934 ]
1935 ]
1936 edge
1937 [
1938 source 12
1939 target 10
1940 graphics
1941 [
1942 fill "#000000"
1943 targetArrow "standard"
1944 ]
1945 LabelGraphics
1946 [
1947 text "name attribute ENamedElement"
1948 fontSize 14
1949 fontName "Consolas"
1950 configuration "AutoFlippingLabel"
1951 model "six_pos"
1952 position "thead"
1953 ]
1954 ]
1955 edge
1956 [
1957 source 11
1958 target 10
1959 graphics
1960 [
1961 fill "#000000"
1962 targetArrow "standard"
1963 ]
1964 LabelGraphics
1965 [
1966 text "name attribute ENamedElement"
1967 fontSize 14
1968 fontName "Consolas"
1969 configuration "AutoFlippingLabel"
1970 model "six_pos"
1971 position "thead"
1972 ]
1973 ]
1974 edge
1975 [
1976 source 13
1977 target 6
1978 graphics
1979 [
1980 fill "#000000"
1981 targetArrow "standard"
1982 ]
1983 LabelGraphics
1984 [
1985 text "name attribute ENamedElement"
1986 fontSize 14
1987 fontName "Consolas"
1988 configuration "AutoFlippingLabel"
1989 model "six_pos"
1990 position "thead"
1991 ]
1992 ]
1993 edge
1994 [
1995 source 0
1996 target 9
1997 graphics
1998 [
1999 fill "#000000"
2000 targetArrow "standard"
2001 ]
2002 LabelGraphics
2003 [
2004 text "nsURI attribute EPackage"
2005 fontSize 14
2006 fontName "Consolas"
2007 configuration "AutoFlippingLabel"
2008 model "six_pos"
2009 position "thead"
2010 ]
2011 ]
2012 edge
2013 [
2014 source 13
2015 target 8
2016 graphics
2017 [
2018 fill "#000000"
2019 targetArrow "standard"
2020 ]
2021 LabelGraphics
2022 [
2023 text "nsURI attribute EPackage"
2024 fontSize 14
2025 fontName "Consolas"
2026 configuration "AutoFlippingLabel"
2027 model "six_pos"
2028 position "thead"
2029 ]
2030 ]
2031 edge
2032 [
2033 source 0
2034 target 8
2035 graphics
2036 [
2037 fill "#000000"
2038 targetArrow "standard"
2039 ]
2040 LabelGraphics
2041 [
2042 text "nsPrefix attribute EPackage"
2043 fontSize 14
2044 fontName "Consolas"
2045 configuration "AutoFlippingLabel"
2046 model "six_pos"
2047 position "thead"
2048 ]
2049 ]
2050 edge
2051 [
2052 source 13
2053 target 6
2054 graphics
2055 [
2056 fill "#000000"
2057 targetArrow "standard"
2058 ]
2059 LabelGraphics
2060 [
2061 text "nsPrefix attribute EPackage"
2062 fontSize 14
2063 fontName "Consolas"
2064 configuration "AutoFlippingLabel"
2065 model "six_pos"
2066 position "thead"
2067 ]
2068 ]
2069]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png
new file mode 100644
index 00000000..afaa28c2
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi
new file mode 100644
index 00000000..ef8e8e65
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/>
4 <eClassifiers xsi:type="ecore:EEnum"/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/>
6 <eSubpackages name="A" nsURI="nsPrefix" nsPrefix="A">
7 <eClassifiers xsi:type="ecore:EEnum"/>
8 </eSubpackages>
9</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml
new file mode 100644
index 00000000..d61b14d0
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml
@@ -0,0 +1,1184 @@
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 94.60000000000001
295 h 26
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text ""nsPrefix""
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 "
316 fontSize 14
317 fontName "Consolas"
318 alignment "left"
319 anchor "tl"
320 borderDistance 6
321 ]
322 ]
323
324 node
325 [
326 id 9
327 graphics
328 [
329 w 68.2
330 h 26
331 type "rectangle"
332 fill "#FFFFFF"
333 fill2 "#FFFFFF"
334 outline "#000000"
335 ]
336 LabelGraphics
337 [
338 text ""nsUri""
339 outline "#000000"
340 fill "#FFFFFF"
341 fontSize 16
342 fontName "Monospace"
343 autoSizePolicy "node_width"
344 anchor "t"
345 borderDistance 0.0
346 ]
347 LabelGraphics
348 [
349 text "
350 "
351 fontSize 14
352 fontName "Consolas"
353 alignment "left"
354 anchor "tl"
355 borderDistance 6
356 ]
357 ]
358
359 node
360 [
361 id 10
362 graphics
363 [
364 w 121.00000000000001
365 h 26
366 type "rectangle"
367 fill "#FFFFFF"
368 fill2 "#FFFFFF"
369 outline "#000000"
370 ]
371 LabelGraphics
372 [
373 text ""packageName""
374 outline "#000000"
375 fill "#FFFFFF"
376 fontSize 16
377 fontName "Monospace"
378 autoSizePolicy "node_width"
379 anchor "t"
380 borderDistance 0.0
381 ]
382 LabelGraphics
383 [
384 text "
385 "
386 fontSize 14
387 fontName "Consolas"
388 alignment "left"
389 anchor "tl"
390 borderDistance 6
391 ]
392 ]
393
394 node
395 [
396 id 11
397 graphics
398 [
399 w 269.5
400 h 124
401 type "rectangle"
402 fill "#FFFFFF"
403 fill2 "#FFFFFF"
404 outline "#000000"
405 ]
406 LabelGraphics
407 [
408 text "null"
409 outline "#000000"
410 fill "#FFFFFF"
411 fontSize 16
412 fontName "Monospace"
413 autoSizePolicy "node_width"
414 anchor "t"
415 borderDistance 0.0
416 ]
417 LabelGraphics
418 [
419 text "
420 EClassifier class
421 EDataType class
422 EEnum class
423 EModelElement class
424 ENamedElement class
425 EModelElement class UndefinedPart
426 ENamedElement class UndefinedPart
427 "
428 fontSize 14
429 fontName "Consolas"
430 alignment "left"
431 anchor "tl"
432 borderDistance 6
433 ]
434 ]
435
436 node
437 [
438 id 12
439 graphics
440 [
441 w 269.5
442 h 124
443 type "rectangle"
444 fill "#FFFFFF"
445 fill2 "#FFFFFF"
446 outline "#000000"
447 ]
448 LabelGraphics
449 [
450 text "null"
451 outline "#000000"
452 fill "#FFFFFF"
453 fontSize 16
454 fontName "Monospace"
455 autoSizePolicy "node_width"
456 anchor "t"
457 borderDistance 0.0
458 ]
459 LabelGraphics
460 [
461 text "
462 EClassifier class
463 EDataType class
464 EEnum class
465 EModelElement class
466 ENamedElement class
467 EModelElement class UndefinedPart
468 ENamedElement class UndefinedPart
469 "
470 fontSize 14
471 fontName "Consolas"
472 alignment "left"
473 anchor "tl"
474 borderDistance 6
475 ]
476 ]
477
478 node
479 [
480 id 13
481 graphics
482 [
483 w 269.5
484 h 110
485 type "rectangle"
486 fill "#FFFFFF"
487 fill2 "#FFFFFF"
488 outline "#000000"
489 ]
490 LabelGraphics
491 [
492 text "null"
493 outline "#000000"
494 fill "#FFFFFF"
495 fontSize 16
496 fontName "Monospace"
497 autoSizePolicy "node_width"
498 anchor "t"
499 borderDistance 0.0
500 ]
501 LabelGraphics
502 [
503 text "
504 EModelElement class
505 ENamedElement class
506 EPackage class
507 EModelElement class UndefinedPart
508 ENamedElement class UndefinedPart
509 EPackage class UndefinedPart
510 "
511 fontSize 14
512 fontName "Consolas"
513 alignment "left"
514 anchor "tl"
515 borderDistance 6
516 ]
517 ]
518
519 node
520 [
521 id 14
522 graphics
523 [
524 w 269.5
525 h 124
526 type "rectangle"
527 fill "#FFFFFF"
528 fill2 "#FFFFFF"
529 outline "#000000"
530 ]
531 LabelGraphics
532 [
533 text "null"
534 outline "#000000"
535 fill "#FFFFFF"
536 fontSize 16
537 fontName "Monospace"
538 autoSizePolicy "node_width"
539 anchor "t"
540 borderDistance 0.0
541 ]
542 LabelGraphics
543 [
544 text "
545 EClassifier class
546 EDataType class
547 EEnum class
548 EModelElement class
549 ENamedElement class
550 EModelElement class UndefinedPart
551 ENamedElement class UndefinedPart
552 "
553 fontSize 14
554 fontName "Consolas"
555 alignment "left"
556 anchor "tl"
557 borderDistance 6
558 ]
559 ]
560
561 node
562 [
563 id 15
564 graphics
565 [
566 w 269.5
567 h 124
568 type "rectangle"
569 fill "#FFFFFF"
570 fill2 "#FFFFFF"
571 outline "#000000"
572 ]
573 LabelGraphics
574 [
575 text "null"
576 outline "#000000"
577 fill "#FFFFFF"
578 fontSize 16
579 fontName "Monospace"
580 autoSizePolicy "node_width"
581 anchor "t"
582 borderDistance 0.0
583 ]
584 LabelGraphics
585 [
586 text "
587 EClassifier class
588 EDataType class
589 EEnum class
590 EModelElement class
591 ENamedElement class
592 EModelElement class UndefinedPart
593 ENamedElement class UndefinedPart
594 "
595 fontSize 14
596 fontName "Consolas"
597 alignment "left"
598 anchor "tl"
599 borderDistance 6
600 ]
601 ]
602
603 node
604 [
605 id 16
606 graphics
607 [
608 w 112.2
609 h 26
610 type "rectangle"
611 fill "#FFFFFF"
612 fill2 "#FFFFFF"
613 outline "#000000"
614 ]
615 LabelGraphics
616 [
617 text "New Integers"
618 outline "#000000"
619 fill "#FFFFFF"
620 fontSize 16
621 fontName "Monospace"
622 autoSizePolicy "node_width"
623 anchor "t"
624 borderDistance 0.0
625 ]
626 LabelGraphics
627 [
628 text "
629 "
630 fontSize 14
631 fontName "Consolas"
632 alignment "left"
633 anchor "tl"
634 borderDistance 6
635 ]
636 ]
637
638 node
639 [
640 id 17
641 graphics
642 [
643 w 85.80000000000001
644 h 26
645 type "rectangle"
646 fill "#FFFFFF"
647 fill2 "#FFFFFF"
648 outline "#000000"
649 ]
650 LabelGraphics
651 [
652 text "New Reals"
653 outline "#000000"
654 fill "#FFFFFF"
655 fontSize 16
656 fontName "Monospace"
657 autoSizePolicy "node_width"
658 anchor "t"
659 borderDistance 0.0
660 ]
661 LabelGraphics
662 [
663 text "
664 "
665 fontSize 14
666 fontName "Consolas"
667 alignment "left"
668 anchor "tl"
669 borderDistance 6
670 ]
671 ]
672
673 node
674 [
675 id 18
676 graphics
677 [
678 w 103.4
679 h 26
680 type "rectangle"
681 fill "#FFFFFF"
682 fill2 "#FFFFFF"
683 outline "#000000"
684 ]
685 LabelGraphics
686 [
687 text "New Strings"
688 outline "#000000"
689 fill "#FFFFFF"
690 fontSize 16
691 fontName "Monospace"
692 autoSizePolicy "node_width"
693 anchor "t"
694 borderDistance 0.0
695 ]
696 LabelGraphics
697 [
698 text "
699 "
700 fontSize 14
701 fontName "Consolas"
702 alignment "left"
703 anchor "tl"
704 borderDistance 6
705 ]
706 ]
707
708 node
709 [
710 id 19
711 graphics
712 [
713 w 103.4
714 h 26
715 type "rectangle"
716 fill "#FFFFFF"
717 fill2 "#FFFFFF"
718 outline "#000000"
719 ]
720 LabelGraphics
721 [
722 text "New Objects"
723 outline "#000000"
724 fill "#FFFFFF"
725 fontSize 16
726 fontName "Monospace"
727 autoSizePolicy "node_width"
728 anchor "t"
729 borderDistance 0.0
730 ]
731 LabelGraphics
732 [
733 text "
734 "
735 fontSize 14
736 fontName "Consolas"
737 alignment "left"
738 anchor "tl"
739 borderDistance 6
740 ]
741 ]
742 edge
743 [
744 source 11
745 target 0
746 graphics
747 [
748 fill "#000000"
749 targetArrow "standard"
750 ]
751 LabelGraphics
752 [
753 text "ePackage reference EClassifier"
754 fontSize 14
755 fontName "Consolas"
756 configuration "AutoFlippingLabel"
757 model "six_pos"
758 position "thead"
759 ]
760 ]
761 edge
762 [
763 source 12
764 target 0
765 graphics
766 [
767 fill "#000000"
768 targetArrow "standard"
769 ]
770 LabelGraphics
771 [
772 text "ePackage reference EClassifier"
773 fontSize 14
774 fontName "Consolas"
775 configuration "AutoFlippingLabel"
776 model "six_pos"
777 position "thead"
778 ]
779 ]
780 edge
781 [
782 source 14
783 target 0
784 graphics
785 [
786 fill "#000000"
787 targetArrow "standard"
788 ]
789 LabelGraphics
790 [
791 text "ePackage reference EClassifier"
792 fontSize 14
793 fontName "Consolas"
794 configuration "AutoFlippingLabel"
795 model "six_pos"
796 position "thead"
797 ]
798 ]
799 edge
800 [
801 source 15
802 target 13
803 graphics
804 [
805 fill "#000000"
806 targetArrow "standard"
807 ]
808 LabelGraphics
809 [
810 text "ePackage reference EClassifier"
811 fontSize 14
812 fontName "Consolas"
813 configuration "AutoFlippingLabel"
814 model "six_pos"
815 position "thead"
816 ]
817 ]
818 edge
819 [
820 source 0
821 target 11
822 graphics
823 [
824 fill "#000000"
825 width 3
826 targetArrow "standard"
827 ]
828 LabelGraphics
829 [
830 text "eClassifiers reference EPackage"
831 fontSize 14
832 fontName "Consolas"
833 configuration "AutoFlippingLabel"
834 model "six_pos"
835 position "thead"
836 ]
837 ]
838 edge
839 [
840 source 0
841 target 12
842 graphics
843 [
844 fill "#000000"
845 width 3
846 targetArrow "standard"
847 ]
848 LabelGraphics
849 [
850 text "eClassifiers reference EPackage"
851 fontSize 14
852 fontName "Consolas"
853 configuration "AutoFlippingLabel"
854 model "six_pos"
855 position "thead"
856 ]
857 ]
858 edge
859 [
860 source 0
861 target 14
862 graphics
863 [
864 fill "#000000"
865 width 3
866 targetArrow "standard"
867 ]
868 LabelGraphics
869 [
870 text "eClassifiers reference EPackage"
871 fontSize 14
872 fontName "Consolas"
873 configuration "AutoFlippingLabel"
874 model "six_pos"
875 position "thead"
876 ]
877 ]
878 edge
879 [
880 source 13
881 target 15
882 graphics
883 [
884 fill "#000000"
885 width 3
886 targetArrow "standard"
887 ]
888 LabelGraphics
889 [
890 text "eClassifiers reference EPackage"
891 fontSize 14
892 fontName "Consolas"
893 configuration "AutoFlippingLabel"
894 model "six_pos"
895 position "thead"
896 ]
897 ]
898 edge
899 [
900 source 0
901 target 13
902 graphics
903 [
904 fill "#000000"
905 width 3
906 targetArrow "standard"
907 ]
908 LabelGraphics
909 [
910 text "eSubpackages reference EPackage"
911 fontSize 14
912 fontName "Consolas"
913 configuration "AutoFlippingLabel"
914 model "six_pos"
915 position "thead"
916 ]
917 ]
918 edge
919 [
920 source 13
921 target 0
922 graphics
923 [
924 fill "#000000"
925 targetArrow "standard"
926 ]
927 LabelGraphics
928 [
929 text "eSuperPackage reference EPackage"
930 fontSize 14
931 fontName "Consolas"
932 configuration "AutoFlippingLabel"
933 model "six_pos"
934 position "thead"
935 ]
936 ]
937 edge
938 [
939 source 12
940 target 8
941 graphics
942 [
943 fill "#000000"
944 targetArrow "standard"
945 ]
946 LabelGraphics
947 [
948 text "instanceClassName attribute EClassifier"
949 fontSize 14
950 fontName "Consolas"
951 configuration "AutoFlippingLabel"
952 model "six_pos"
953 position "thead"
954 ]
955 ]
956 edge
957 [
958 source 11
959 target 6
960 graphics
961 [
962 fill "#000000"
963 targetArrow "standard"
964 ]
965 LabelGraphics
966 [
967 text "instanceClassName attribute EClassifier"
968 fontSize 14
969 fontName "Consolas"
970 configuration "AutoFlippingLabel"
971 model "six_pos"
972 position "thead"
973 ]
974 ]
975 edge
976 [
977 source 11
978 target 10
979 graphics
980 [
981 fill "#000000"
982 targetArrow "standard"
983 ]
984 LabelGraphics
985 [
986 text "instanceTypeName attribute EClassifier"
987 fontSize 14
988 fontName "Consolas"
989 configuration "AutoFlippingLabel"
990 model "six_pos"
991 position "thead"
992 ]
993 ]
994 edge
995 [
996 source 12
997 target 8
998 graphics
999 [
1000 fill "#000000"
1001 targetArrow "standard"
1002 ]
1003 LabelGraphics
1004 [
1005 text "instanceTypeName attribute EClassifier"
1006 fontSize 14
1007 fontName "Consolas"
1008 configuration "AutoFlippingLabel"
1009 model "six_pos"
1010 position "thead"
1011 ]
1012 ]
1013 edge
1014 [
1015 source 0
1016 target 10
1017 graphics
1018 [
1019 fill "#000000"
1020 targetArrow "standard"
1021 ]
1022 LabelGraphics
1023 [
1024 text "name attribute ENamedElement"
1025 fontSize 14
1026 fontName "Consolas"
1027 configuration "AutoFlippingLabel"
1028 model "six_pos"
1029 position "thead"
1030 ]
1031 ]
1032 edge
1033 [
1034 source 12
1035 target 10
1036 graphics
1037 [
1038 fill "#000000"
1039 targetArrow "standard"
1040 ]
1041 LabelGraphics
1042 [
1043 text "name attribute ENamedElement"
1044 fontSize 14
1045 fontName "Consolas"
1046 configuration "AutoFlippingLabel"
1047 model "six_pos"
1048 position "thead"
1049 ]
1050 ]
1051 edge
1052 [
1053 source 11
1054 target 10
1055 graphics
1056 [
1057 fill "#000000"
1058 targetArrow "standard"
1059 ]
1060 LabelGraphics
1061 [
1062 text "name attribute ENamedElement"
1063 fontSize 14
1064 fontName "Consolas"
1065 configuration "AutoFlippingLabel"
1066 model "six_pos"
1067 position "thead"
1068 ]
1069 ]
1070 edge
1071 [
1072 source 13
1073 target 6
1074 graphics
1075 [
1076 fill "#000000"
1077 targetArrow "standard"
1078 ]
1079 LabelGraphics
1080 [
1081 text "name attribute ENamedElement"
1082 fontSize 14
1083 fontName "Consolas"
1084 configuration "AutoFlippingLabel"
1085 model "six_pos"
1086 position "thead"
1087 ]
1088 ]
1089 edge
1090 [
1091 source 14
1092 target 10
1093 graphics
1094 [
1095 fill "#000000"
1096 targetArrow "standard"
1097 ]
1098 LabelGraphics
1099 [
1100 text "name attribute ENamedElement"
1101 fontSize 14
1102 fontName "Consolas"
1103 configuration "AutoFlippingLabel"
1104 model "six_pos"
1105 position "thead"
1106 ]
1107 ]
1108 edge
1109 [
1110 source 0
1111 target 9
1112 graphics
1113 [
1114 fill "#000000"
1115 targetArrow "standard"
1116 ]
1117 LabelGraphics
1118 [
1119 text "nsURI attribute EPackage"
1120 fontSize 14
1121 fontName "Consolas"
1122 configuration "AutoFlippingLabel"
1123 model "six_pos"
1124 position "thead"
1125 ]
1126 ]
1127 edge
1128 [
1129 source 13
1130 target 8
1131 graphics
1132 [
1133 fill "#000000"
1134 targetArrow "standard"
1135 ]
1136 LabelGraphics
1137 [
1138 text "nsURI attribute EPackage"
1139 fontSize 14
1140 fontName "Consolas"
1141 configuration "AutoFlippingLabel"
1142 model "six_pos"
1143 position "thead"
1144 ]
1145 ]
1146 edge
1147 [
1148 source 0
1149 target 8
1150 graphics
1151 [
1152 fill "#000000"
1153 targetArrow "standard"
1154 ]
1155 LabelGraphics
1156 [
1157 text "nsPrefix attribute EPackage"
1158 fontSize 14
1159 fontName "Consolas"
1160 configuration "AutoFlippingLabel"
1161 model "six_pos"
1162 position "thead"
1163 ]
1164 ]
1165 edge
1166 [
1167 source 13
1168 target 6
1169 graphics
1170 [
1171 fill "#000000"
1172 targetArrow "standard"
1173 ]
1174 LabelGraphics
1175 [
1176 text "nsPrefix attribute EPackage"
1177 fontSize 14
1178 fontName "Consolas"
1179 configuration "AutoFlippingLabel"
1180 model "six_pos"
1181 position "thead"
1182 ]
1183 ]
1184]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png
new file mode 100644
index 00000000..72ccb4b6
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi
new file mode 100644
index 00000000..1a10e5b6
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/>
4 <eClassifiers xsi:type="ecore:EEnum" name="packageName"/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/>
6 <eSubpackages name="A" nsURI="nsPrefix" nsPrefix="A">
7 <eClassifiers xsi:type="ecore:EEnum"/>
8 </eSubpackages>
9</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml
new file mode 100644
index 00000000..f071f63e
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml
@@ -0,0 +1,1203 @@
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 94.60000000000001
295 h 26
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text ""nsPrefix""
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 "
316 fontSize 14
317 fontName "Consolas"
318 alignment "left"
319 anchor "tl"
320 borderDistance 6
321 ]
322 ]
323
324 node
325 [
326 id 9
327 graphics
328 [
329 w 68.2
330 h 26
331 type "rectangle"
332 fill "#FFFFFF"
333 fill2 "#FFFFFF"
334 outline "#000000"
335 ]
336 LabelGraphics
337 [
338 text ""nsUri""
339 outline "#000000"
340 fill "#FFFFFF"
341 fontSize 16
342 fontName "Monospace"
343 autoSizePolicy "node_width"
344 anchor "t"
345 borderDistance 0.0
346 ]
347 LabelGraphics
348 [
349 text "
350 "
351 fontSize 14
352 fontName "Consolas"
353 alignment "left"
354 anchor "tl"
355 borderDistance 6
356 ]
357 ]
358
359 node
360 [
361 id 10
362 graphics
363 [
364 w 121.00000000000001
365 h 26
366 type "rectangle"
367 fill "#FFFFFF"
368 fill2 "#FFFFFF"
369 outline "#000000"
370 ]
371 LabelGraphics
372 [
373 text ""packageName""
374 outline "#000000"
375 fill "#FFFFFF"
376 fontSize 16
377 fontName "Monospace"
378 autoSizePolicy "node_width"
379 anchor "t"
380 borderDistance 0.0
381 ]
382 LabelGraphics
383 [
384 text "
385 "
386 fontSize 14
387 fontName "Consolas"
388 alignment "left"
389 anchor "tl"
390 borderDistance 6
391 ]
392 ]
393
394 node
395 [
396 id 11
397 graphics
398 [
399 w 269.5
400 h 124
401 type "rectangle"
402 fill "#FFFFFF"
403 fill2 "#FFFFFF"
404 outline "#000000"
405 ]
406 LabelGraphics
407 [
408 text "null"
409 outline "#000000"
410 fill "#FFFFFF"
411 fontSize 16
412 fontName "Monospace"
413 autoSizePolicy "node_width"
414 anchor "t"
415 borderDistance 0.0
416 ]
417 LabelGraphics
418 [
419 text "
420 EClassifier class
421 EDataType class
422 EEnum class
423 EModelElement class
424 ENamedElement class
425 EModelElement class UndefinedPart
426 ENamedElement class UndefinedPart
427 "
428 fontSize 14
429 fontName "Consolas"
430 alignment "left"
431 anchor "tl"
432 borderDistance 6
433 ]
434 ]
435
436 node
437 [
438 id 12
439 graphics
440 [
441 w 269.5
442 h 124
443 type "rectangle"
444 fill "#FFFFFF"
445 fill2 "#FFFFFF"
446 outline "#000000"
447 ]
448 LabelGraphics
449 [
450 text "null"
451 outline "#000000"
452 fill "#FFFFFF"
453 fontSize 16
454 fontName "Monospace"
455 autoSizePolicy "node_width"
456 anchor "t"
457 borderDistance 0.0
458 ]
459 LabelGraphics
460 [
461 text "
462 EClassifier class
463 EDataType class
464 EEnum class
465 EModelElement class
466 ENamedElement class
467 EModelElement class UndefinedPart
468 ENamedElement class UndefinedPart
469 "
470 fontSize 14
471 fontName "Consolas"
472 alignment "left"
473 anchor "tl"
474 borderDistance 6
475 ]
476 ]
477
478 node
479 [
480 id 13
481 graphics
482 [
483 w 269.5
484 h 110
485 type "rectangle"
486 fill "#FFFFFF"
487 fill2 "#FFFFFF"
488 outline "#000000"
489 ]
490 LabelGraphics
491 [
492 text "null"
493 outline "#000000"
494 fill "#FFFFFF"
495 fontSize 16
496 fontName "Monospace"
497 autoSizePolicy "node_width"
498 anchor "t"
499 borderDistance 0.0
500 ]
501 LabelGraphics
502 [
503 text "
504 EModelElement class
505 ENamedElement class
506 EPackage class
507 EModelElement class UndefinedPart
508 ENamedElement class UndefinedPart
509 EPackage class UndefinedPart
510 "
511 fontSize 14
512 fontName "Consolas"
513 alignment "left"
514 anchor "tl"
515 borderDistance 6
516 ]
517 ]
518
519 node
520 [
521 id 14
522 graphics
523 [
524 w 269.5
525 h 124
526 type "rectangle"
527 fill "#FFFFFF"
528 fill2 "#FFFFFF"
529 outline "#000000"
530 ]
531 LabelGraphics
532 [
533 text "null"
534 outline "#000000"
535 fill "#FFFFFF"
536 fontSize 16
537 fontName "Monospace"
538 autoSizePolicy "node_width"
539 anchor "t"
540 borderDistance 0.0
541 ]
542 LabelGraphics
543 [
544 text "
545 EClassifier class
546 EDataType class
547 EEnum class
548 EModelElement class
549 ENamedElement class
550 EModelElement class UndefinedPart
551 ENamedElement class UndefinedPart
552 "
553 fontSize 14
554 fontName "Consolas"
555 alignment "left"
556 anchor "tl"
557 borderDistance 6
558 ]
559 ]
560
561 node
562 [
563 id 15
564 graphics
565 [
566 w 269.5
567 h 124
568 type "rectangle"
569 fill "#FFFFFF"
570 fill2 "#FFFFFF"
571 outline "#000000"
572 ]
573 LabelGraphics
574 [
575 text "null"
576 outline "#000000"
577 fill "#FFFFFF"
578 fontSize 16
579 fontName "Monospace"
580 autoSizePolicy "node_width"
581 anchor "t"
582 borderDistance 0.0
583 ]
584 LabelGraphics
585 [
586 text "
587 EClassifier class
588 EDataType class
589 EEnum class
590 EModelElement class
591 ENamedElement class
592 EModelElement class UndefinedPart
593 ENamedElement class UndefinedPart
594 "
595 fontSize 14
596 fontName "Consolas"
597 alignment "left"
598 anchor "tl"
599 borderDistance 6
600 ]
601 ]
602
603 node
604 [
605 id 16
606 graphics
607 [
608 w 112.2
609 h 26
610 type "rectangle"
611 fill "#FFFFFF"
612 fill2 "#FFFFFF"
613 outline "#000000"
614 ]
615 LabelGraphics
616 [
617 text "New Integers"
618 outline "#000000"
619 fill "#FFFFFF"
620 fontSize 16
621 fontName "Monospace"
622 autoSizePolicy "node_width"
623 anchor "t"
624 borderDistance 0.0
625 ]
626 LabelGraphics
627 [
628 text "
629 "
630 fontSize 14
631 fontName "Consolas"
632 alignment "left"
633 anchor "tl"
634 borderDistance 6
635 ]
636 ]
637
638 node
639 [
640 id 17
641 graphics
642 [
643 w 85.80000000000001
644 h 26
645 type "rectangle"
646 fill "#FFFFFF"
647 fill2 "#FFFFFF"
648 outline "#000000"
649 ]
650 LabelGraphics
651 [
652 text "New Reals"
653 outline "#000000"
654 fill "#FFFFFF"
655 fontSize 16
656 fontName "Monospace"
657 autoSizePolicy "node_width"
658 anchor "t"
659 borderDistance 0.0
660 ]
661 LabelGraphics
662 [
663 text "
664 "
665 fontSize 14
666 fontName "Consolas"
667 alignment "left"
668 anchor "tl"
669 borderDistance 6
670 ]
671 ]
672
673 node
674 [
675 id 18
676 graphics
677 [
678 w 103.4
679 h 26
680 type "rectangle"
681 fill "#FFFFFF"
682 fill2 "#FFFFFF"
683 outline "#000000"
684 ]
685 LabelGraphics
686 [
687 text "New Strings"
688 outline "#000000"
689 fill "#FFFFFF"
690 fontSize 16
691 fontName "Monospace"
692 autoSizePolicy "node_width"
693 anchor "t"
694 borderDistance 0.0
695 ]
696 LabelGraphics
697 [
698 text "
699 "
700 fontSize 14
701 fontName "Consolas"
702 alignment "left"
703 anchor "tl"
704 borderDistance 6
705 ]
706 ]
707
708 node
709 [
710 id 19
711 graphics
712 [
713 w 103.4
714 h 26
715 type "rectangle"
716 fill "#FFFFFF"
717 fill2 "#FFFFFF"
718 outline "#000000"
719 ]
720 LabelGraphics
721 [
722 text "New Objects"
723 outline "#000000"
724 fill "#FFFFFF"
725 fontSize 16
726 fontName "Monospace"
727 autoSizePolicy "node_width"
728 anchor "t"
729 borderDistance 0.0
730 ]
731 LabelGraphics
732 [
733 text "
734 "
735 fontSize 14
736 fontName "Consolas"
737 alignment "left"
738 anchor "tl"
739 borderDistance 6
740 ]
741 ]
742 edge
743 [
744 source 11
745 target 0
746 graphics
747 [
748 fill "#000000"
749 targetArrow "standard"
750 ]
751 LabelGraphics
752 [
753 text "ePackage reference EClassifier"
754 fontSize 14
755 fontName "Consolas"
756 configuration "AutoFlippingLabel"
757 model "six_pos"
758 position "thead"
759 ]
760 ]
761 edge
762 [
763 source 12
764 target 0
765 graphics
766 [
767 fill "#000000"
768 targetArrow "standard"
769 ]
770 LabelGraphics
771 [
772 text "ePackage reference EClassifier"
773 fontSize 14
774 fontName "Consolas"
775 configuration "AutoFlippingLabel"
776 model "six_pos"
777 position "thead"
778 ]
779 ]
780 edge
781 [
782 source 14
783 target 0
784 graphics
785 [
786 fill "#000000"
787 targetArrow "standard"
788 ]
789 LabelGraphics
790 [
791 text "ePackage reference EClassifier"
792 fontSize 14
793 fontName "Consolas"
794 configuration "AutoFlippingLabel"
795 model "six_pos"
796 position "thead"
797 ]
798 ]
799 edge
800 [
801 source 15
802 target 13
803 graphics
804 [
805 fill "#000000"
806 targetArrow "standard"
807 ]
808 LabelGraphics
809 [
810 text "ePackage reference EClassifier"
811 fontSize 14
812 fontName "Consolas"
813 configuration "AutoFlippingLabel"
814 model "six_pos"
815 position "thead"
816 ]
817 ]
818 edge
819 [
820 source 0
821 target 11
822 graphics
823 [
824 fill "#000000"
825 width 3
826 targetArrow "standard"
827 ]
828 LabelGraphics
829 [
830 text "eClassifiers reference EPackage"
831 fontSize 14
832 fontName "Consolas"
833 configuration "AutoFlippingLabel"
834 model "six_pos"
835 position "thead"
836 ]
837 ]
838 edge
839 [
840 source 0
841 target 12
842 graphics
843 [
844 fill "#000000"
845 width 3
846 targetArrow "standard"
847 ]
848 LabelGraphics
849 [
850 text "eClassifiers reference EPackage"
851 fontSize 14
852 fontName "Consolas"
853 configuration "AutoFlippingLabel"
854 model "six_pos"
855 position "thead"
856 ]
857 ]
858 edge
859 [
860 source 0
861 target 14
862 graphics
863 [
864 fill "#000000"
865 width 3
866 targetArrow "standard"
867 ]
868 LabelGraphics
869 [
870 text "eClassifiers reference EPackage"
871 fontSize 14
872 fontName "Consolas"
873 configuration "AutoFlippingLabel"
874 model "six_pos"
875 position "thead"
876 ]
877 ]
878 edge
879 [
880 source 13
881 target 15
882 graphics
883 [
884 fill "#000000"
885 width 3
886 targetArrow "standard"
887 ]
888 LabelGraphics
889 [
890 text "eClassifiers reference EPackage"
891 fontSize 14
892 fontName "Consolas"
893 configuration "AutoFlippingLabel"
894 model "six_pos"
895 position "thead"
896 ]
897 ]
898 edge
899 [
900 source 0
901 target 13
902 graphics
903 [
904 fill "#000000"
905 width 3
906 targetArrow "standard"
907 ]
908 LabelGraphics
909 [
910 text "eSubpackages reference EPackage"
911 fontSize 14
912 fontName "Consolas"
913 configuration "AutoFlippingLabel"
914 model "six_pos"
915 position "thead"
916 ]
917 ]
918 edge
919 [
920 source 13
921 target 0
922 graphics
923 [
924 fill "#000000"
925 targetArrow "standard"
926 ]
927 LabelGraphics
928 [
929 text "eSuperPackage reference EPackage"
930 fontSize 14
931 fontName "Consolas"
932 configuration "AutoFlippingLabel"
933 model "six_pos"
934 position "thead"
935 ]
936 ]
937 edge
938 [
939 source 12
940 target 8
941 graphics
942 [
943 fill "#000000"
944 targetArrow "standard"
945 ]
946 LabelGraphics
947 [
948 text "instanceClassName attribute EClassifier"
949 fontSize 14
950 fontName "Consolas"
951 configuration "AutoFlippingLabel"
952 model "six_pos"
953 position "thead"
954 ]
955 ]
956 edge
957 [
958 source 11
959 target 6
960 graphics
961 [
962 fill "#000000"
963 targetArrow "standard"
964 ]
965 LabelGraphics
966 [
967 text "instanceClassName attribute EClassifier"
968 fontSize 14
969 fontName "Consolas"
970 configuration "AutoFlippingLabel"
971 model "six_pos"
972 position "thead"
973 ]
974 ]
975 edge
976 [
977 source 11
978 target 10
979 graphics
980 [
981 fill "#000000"
982 targetArrow "standard"
983 ]
984 LabelGraphics
985 [
986 text "instanceTypeName attribute EClassifier"
987 fontSize 14
988 fontName "Consolas"
989 configuration "AutoFlippingLabel"
990 model "six_pos"
991 position "thead"
992 ]
993 ]
994 edge
995 [
996 source 12
997 target 8
998 graphics
999 [
1000 fill "#000000"
1001 targetArrow "standard"
1002 ]
1003 LabelGraphics
1004 [
1005 text "instanceTypeName attribute EClassifier"
1006 fontSize 14
1007 fontName "Consolas"
1008 configuration "AutoFlippingLabel"
1009 model "six_pos"
1010 position "thead"
1011 ]
1012 ]
1013 edge
1014 [
1015 source 11
1016 target 1
1017 graphics
1018 [
1019 fill "#000000"
1020 targetArrow "standard"
1021 ]
1022 LabelGraphics
1023 [
1024 text "serializable attribute EDataType"
1025 fontSize 14
1026 fontName "Consolas"
1027 configuration "AutoFlippingLabel"
1028 model "six_pos"
1029 position "thead"
1030 ]
1031 ]
1032 edge
1033 [
1034 source 0
1035 target 10
1036 graphics
1037 [
1038 fill "#000000"
1039 targetArrow "standard"
1040 ]
1041 LabelGraphics
1042 [
1043 text "name attribute ENamedElement"
1044 fontSize 14
1045 fontName "Consolas"
1046 configuration "AutoFlippingLabel"
1047 model "six_pos"
1048 position "thead"
1049 ]
1050 ]
1051 edge
1052 [
1053 source 12
1054 target 10
1055 graphics
1056 [
1057 fill "#000000"
1058 targetArrow "standard"
1059 ]
1060 LabelGraphics
1061 [
1062 text "name attribute ENamedElement"
1063 fontSize 14
1064 fontName "Consolas"
1065 configuration "AutoFlippingLabel"
1066 model "six_pos"
1067 position "thead"
1068 ]
1069 ]
1070 edge
1071 [
1072 source 11
1073 target 10
1074 graphics
1075 [
1076 fill "#000000"
1077 targetArrow "standard"
1078 ]
1079 LabelGraphics
1080 [
1081 text "name attribute ENamedElement"
1082 fontSize 14
1083 fontName "Consolas"
1084 configuration "AutoFlippingLabel"
1085 model "six_pos"
1086 position "thead"
1087 ]
1088 ]
1089 edge
1090 [
1091 source 13
1092 target 6
1093 graphics
1094 [
1095 fill "#000000"
1096 targetArrow "standard"
1097 ]
1098 LabelGraphics
1099 [
1100 text "name attribute ENamedElement"
1101 fontSize 14
1102 fontName "Consolas"
1103 configuration "AutoFlippingLabel"
1104 model "six_pos"
1105 position "thead"
1106 ]
1107 ]
1108 edge
1109 [
1110 source 14
1111 target 10
1112 graphics
1113 [
1114 fill "#000000"
1115 targetArrow "standard"
1116 ]
1117 LabelGraphics
1118 [
1119 text "name attribute ENamedElement"
1120 fontSize 14
1121 fontName "Consolas"
1122 configuration "AutoFlippingLabel"
1123 model "six_pos"
1124 position "thead"
1125 ]
1126 ]
1127 edge
1128 [
1129 source 0
1130 target 9
1131 graphics
1132 [
1133 fill "#000000"
1134 targetArrow "standard"
1135 ]
1136 LabelGraphics
1137 [
1138 text "nsURI attribute EPackage"
1139 fontSize 14
1140 fontName "Consolas"
1141 configuration "AutoFlippingLabel"
1142 model "six_pos"
1143 position "thead"
1144 ]
1145 ]
1146 edge
1147 [
1148 source 13
1149 target 8
1150 graphics
1151 [
1152 fill "#000000"
1153 targetArrow "standard"
1154 ]
1155 LabelGraphics
1156 [
1157 text "nsURI attribute EPackage"
1158 fontSize 14
1159 fontName "Consolas"
1160 configuration "AutoFlippingLabel"
1161 model "six_pos"
1162 position "thead"
1163 ]
1164 ]
1165 edge
1166 [
1167 source 0
1168 target 8
1169 graphics
1170 [
1171 fill "#000000"
1172 targetArrow "standard"
1173 ]
1174 LabelGraphics
1175 [
1176 text "nsPrefix attribute EPackage"
1177 fontSize 14
1178 fontName "Consolas"
1179 configuration "AutoFlippingLabel"
1180 model "six_pos"
1181 position "thead"
1182 ]
1183 ]
1184 edge
1185 [
1186 source 13
1187 target 6
1188 graphics
1189 [
1190 fill "#000000"
1191 targetArrow "standard"
1192 ]
1193 LabelGraphics
1194 [
1195 text "nsPrefix attribute EPackage"
1196 fontSize 14
1197 fontName "Consolas"
1198 configuration "AutoFlippingLabel"
1199 model "six_pos"
1200 position "thead"
1201 ]
1202 ]
1203]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png
new file mode 100644
index 00000000..bb835587
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi
new file mode 100644
index 00000000..1a10e5b6
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/>
4 <eClassifiers xsi:type="ecore:EEnum" name="packageName"/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/>
6 <eSubpackages name="A" nsURI="nsPrefix" nsPrefix="A">
7 <eClassifiers xsi:type="ecore:EEnum"/>
8 </eSubpackages>
9</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv
new file mode 100644
index 00000000..0c19baf2
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv
@@ -0,0 +1,32 @@
1Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
21;1;ModelResultImpl;441;2068;2486;3217702419;62;29;140;4;0;2
3Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
41;1;ModelResultImpl;463;2860;2654;3199911479;74;37;138;5;0;3
5Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
61;1;ModelResultImpl;499;2201;2467;3339884626;68;36;141;4;0;2
7Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
81;1;ModelResultImpl;452;2821;2223;3526490298;59;27;122;5;0;2
9Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
101;1;ModelResultImpl;11;1529;1717;4396467206;87;94;100;54;17;4;0;3
11Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
121;1;ModelResultImpl;15;1411;1457;4222415279;54;68;77;36;10;4;0;5
13Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
141;1;ModelResultImpl;9;1335;1288;2769089958;64;74;31;12;1;0;2
15Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
161;1;ModelResultImpl;4;1180;1189;2923747093;50;58;26;10;1;0;1
17Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
181;1;ModelResultImpl;839;2519;2455;3266543842;68;33;193;5;0;3
19Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
201;1;ModelResultImpl;11;2019;1948;3337962573;91;104;53;16;2;0;3
21Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
221;1;ModelResultImpl;1719;3345;2829;7904668959;235;261;107;497;53;0;6
23Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
241;1;ModelResultImpl;13;1736;1740;2852471270;62;73;37;19;1;0;2
25Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
261;1;ModelResultImpl;529;2502;2857;3681787432;68;30;125;4;0;2
27Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
281;1;ModelResultImpl;788;2572;2188;3322713636;67;30;148;5;0;4
29Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
301;1;ModelResultImpl;443;2849;2573;4906642931;151;171;75;124;7;0;8
31Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
322;1;ModelResultImpl;19;4315;9042;20459725100;239;247;252;257;261;217;19;6;0;11
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/errors.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/errors.txt
new file mode 100644
index 00000000..2086fece
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/errors.txt
@@ -0,0 +1,21 @@
1Error occured (IllegalArgumentException): Class FunctionalArchitectureModel is not translated to logic!
2 hu.bme.mit.inf.dslreasoner.ecore2logic.EClassMapper_AllElementAsObject.TypeofEClass(EClassMapper_AllElementAsObject.java:63)
3 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.TypeofEClass(Ecore2Logic.java:96)
4 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation.transform(InstanceModel2PartialInterpretation.java:99)
5 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic.transform(InstanceModel2Logic.java:19)
6 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:192)
7 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
8 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
9 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
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 (IllegalArgumentException): Class FunctionalArchitectureModel is not translated to logic!
12 hu.bme.mit.inf.dslreasoner.ecore2logic.EClassMapper_AllElementAsObject.TypeofEClass(EClassMapper_AllElementAsObject.java:63)
13 hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.TypeofEClass(Ecore2Logic.java:96)
14 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation.transform(InstanceModel2PartialInterpretation.java:99)
15 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic.transform(InstanceModel2Logic.java:19)
16 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:192)
17 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
18 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
19 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
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) \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generated3valued.vql_deactivated b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generated3valued.vql_deactivated
new file mode 100644
index 00000000..6d8fc404
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generated3valued.vql_deactivated
@@ -0,0 +1,1472 @@
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 "Pseudostate class".
86 */
87private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
88 Type.name(type,"Pseudostate class");
89 find directInstanceOf(problem,interpretation,element,type);
90}
91private pattern scopeDisallowsNewPseudostate_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,"Pseudostate class");
98}
99
100/**
101 * An element may be an instance of type "Pseudostate class".
102 */
103private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
104{
105 find interpretation(problem,interpretation);
106 PartialInterpretation.newElements(interpretation,element);
107 neg find mustInstanceOfExit_class(problem,interpretation,element);
108 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
109 neg find mustInstanceOfRegion_class(problem,interpretation,element);
110 neg find mustInstanceOfTransition_class(problem,interpretation,element);
111 neg find mustInstanceOfChoice_class(problem,interpretation,element);
112 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
113 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
114 neg find mustInstanceOfEntry_class(problem,interpretation,element);
115 neg find scopeDisallowsNewPseudostate_class(problem, interpretation);
116 neg find isPrimitive(element);
117} or {
118 find interpretation(problem,interpretation);
119 PartialInterpretation.openWorldElements(interpretation,element);
120 neg find mustInstanceOfExit_class(problem,interpretation,element);
121 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
122 neg find mustInstanceOfRegion_class(problem,interpretation,element);
123 neg find mustInstanceOfTransition_class(problem,interpretation,element);
124 neg find mustInstanceOfChoice_class(problem,interpretation,element);
125 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
126 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
127 neg find mustInstanceOfEntry_class(problem,interpretation,element);
128 neg find scopeDisallowsNewPseudostate_class(problem, interpretation);
129 neg find isPrimitive(element);
130} or
131{ find mustInstanceOfPseudostate_class(problem,interpretation,element); }
132/**
133 * An element must be an instance of type "Vertex class".
134 */
135private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
136 Type.name(type,"Vertex class");
137 find directInstanceOf(problem,interpretation,element,type);
138}
139private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) {
140 find interpretation(problem,interpretation);
141 PartialInterpretation.scopes(interpretation,scope);
142 Scope.targetTypeInterpretation(scope,typeInterpretation);
143 Scope.maxNewElements(scope,0);
144 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
145 Type.name(type,"Vertex class");
146}
147
148/**
149 * An element may be an instance of type "Vertex class".
150 */
151private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
152{
153 find interpretation(problem,interpretation);
154 PartialInterpretation.newElements(interpretation,element);
155 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
156 neg find mustInstanceOfTransition_class(problem,interpretation,element);
157 neg find mustInstanceOfRegion_class(problem,interpretation,element);
158 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
159 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
160 neg find scopeDisallowsNewVertex_class(problem, interpretation);
161 neg find isPrimitive(element);
162} or {
163 find interpretation(problem,interpretation);
164 PartialInterpretation.openWorldElements(interpretation,element);
165 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
166 neg find mustInstanceOfTransition_class(problem,interpretation,element);
167 neg find mustInstanceOfRegion_class(problem,interpretation,element);
168 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
169 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
170 neg find scopeDisallowsNewVertex_class(problem, interpretation);
171 neg find isPrimitive(element);
172} or
173{ find mustInstanceOfVertex_class(problem,interpretation,element); }
174/**
175 * An element must be an instance of type "Region class".
176 */
177private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
178 Type.name(type,"Region class");
179 find directInstanceOf(problem,interpretation,element,type);
180}
181private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) {
182 find interpretation(problem,interpretation);
183 PartialInterpretation.scopes(interpretation,scope);
184 Scope.targetTypeInterpretation(scope,typeInterpretation);
185 Scope.maxNewElements(scope,0);
186 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
187 Type.name(type,"Region class");
188}
189
190/**
191 * An element may be an instance of type "Region class".
192 */
193private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
194{
195 find interpretation(problem,interpretation);
196 PartialInterpretation.newElements(interpretation,element);
197 neg find mustInstanceOfTransition_class(problem,interpretation,element);
198 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
199 neg find mustInstanceOfVertex_class(problem,interpretation,element);
200 neg find scopeDisallowsNewRegion_class(problem, interpretation);
201 neg find isPrimitive(element);
202} or {
203 find interpretation(problem,interpretation);
204 PartialInterpretation.openWorldElements(interpretation,element);
205 neg find mustInstanceOfTransition_class(problem,interpretation,element);
206 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
207 neg find mustInstanceOfVertex_class(problem,interpretation,element);
208 neg find scopeDisallowsNewRegion_class(problem, interpretation);
209 neg find isPrimitive(element);
210} or
211{ find mustInstanceOfRegion_class(problem,interpretation,element); }
212/**
213 * An element must be an instance of type "Transition class".
214 */
215private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
216 Type.name(type,"Transition class");
217 find directInstanceOf(problem,interpretation,element,type);
218}
219private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) {
220 find interpretation(problem,interpretation);
221 PartialInterpretation.scopes(interpretation,scope);
222 Scope.targetTypeInterpretation(scope,typeInterpretation);
223 Scope.maxNewElements(scope,0);
224 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
225 Type.name(type,"Transition class");
226}
227
228/**
229 * An element may be an instance of type "Transition class".
230 */
231private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
232{
233 find interpretation(problem,interpretation);
234 PartialInterpretation.newElements(interpretation,element);
235 neg find mustInstanceOfRegion_class(problem,interpretation,element);
236 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
237 neg find mustInstanceOfVertex_class(problem,interpretation,element);
238 neg find scopeDisallowsNewTransition_class(problem, interpretation);
239 neg find isPrimitive(element);
240} or {
241 find interpretation(problem,interpretation);
242 PartialInterpretation.openWorldElements(interpretation,element);
243 neg find mustInstanceOfRegion_class(problem,interpretation,element);
244 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
245 neg find mustInstanceOfVertex_class(problem,interpretation,element);
246 neg find scopeDisallowsNewTransition_class(problem, interpretation);
247 neg find isPrimitive(element);
248} or
249{ find mustInstanceOfTransition_class(problem,interpretation,element); }
250/**
251 * An element must be an instance of type "Statechart class".
252 */
253private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
254 Type.name(type,"Statechart class");
255 find directInstanceOf(problem,interpretation,element,type);
256}
257private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) {
258 find interpretation(problem,interpretation);
259 PartialInterpretation.scopes(interpretation,scope);
260 Scope.targetTypeInterpretation(scope,typeInterpretation);
261 Scope.maxNewElements(scope,0);
262 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
263 Type.name(type,"Statechart class");
264}
265
266/**
267 * An element may be an instance of type "Statechart class".
268 */
269private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
270{
271 find interpretation(problem,interpretation);
272 PartialInterpretation.newElements(interpretation,element);
273 neg find mustInstanceOfRegion_class(problem,interpretation,element);
274 neg find mustInstanceOfTransition_class(problem,interpretation,element);
275 neg find mustInstanceOfVertex_class(problem,interpretation,element);
276 neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element);
277 neg find scopeDisallowsNewStatechart_class(problem, interpretation);
278 neg find isPrimitive(element);
279} or {
280 find interpretation(problem,interpretation);
281 PartialInterpretation.openWorldElements(interpretation,element);
282 neg find mustInstanceOfRegion_class(problem,interpretation,element);
283 neg find mustInstanceOfTransition_class(problem,interpretation,element);
284 neg find mustInstanceOfVertex_class(problem,interpretation,element);
285 neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element);
286 neg find scopeDisallowsNewStatechart_class(problem, interpretation);
287 neg find isPrimitive(element);
288} or
289{ find mustInstanceOfStatechart_class(problem,interpretation,element); }
290/**
291 * An element must be an instance of type "Entry class".
292 */
293private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
294 Type.name(type,"Entry class");
295 find directInstanceOf(problem,interpretation,element,type);
296}
297private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
298 find interpretation(problem,interpretation);
299 PartialInterpretation.scopes(interpretation,scope);
300 Scope.targetTypeInterpretation(scope,typeInterpretation);
301 Scope.maxNewElements(scope,0);
302 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
303 Type.name(type,"Entry class");
304}
305
306/**
307 * An element may be an instance of type "Entry class".
308 */
309private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
310{
311 find interpretation(problem,interpretation);
312 PartialInterpretation.newElements(interpretation,element);
313 neg find mustInstanceOfExit_class(problem,interpretation,element);
314 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
315 neg find mustInstanceOfTransition_class(problem,interpretation,element);
316 neg find mustInstanceOfRegion_class(problem,interpretation,element);
317 neg find mustInstanceOfChoice_class(problem,interpretation,element);
318 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
319 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
320 neg find scopeDisallowsNewEntry_class(problem, interpretation);
321 neg find isPrimitive(element);
322} or {
323 find interpretation(problem,interpretation);
324 PartialInterpretation.openWorldElements(interpretation,element);
325 neg find mustInstanceOfExit_class(problem,interpretation,element);
326 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
327 neg find mustInstanceOfTransition_class(problem,interpretation,element);
328 neg find mustInstanceOfRegion_class(problem,interpretation,element);
329 neg find mustInstanceOfChoice_class(problem,interpretation,element);
330 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
331 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
332 neg find scopeDisallowsNewEntry_class(problem, interpretation);
333 neg find isPrimitive(element);
334} or
335{ find mustInstanceOfEntry_class(problem,interpretation,element); }
336/**
337 * An element must be an instance of type "Synchronization class".
338 */
339private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
340 Type.name(type,"Synchronization class");
341 find directInstanceOf(problem,interpretation,element,type);
342}
343private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) {
344 find interpretation(problem,interpretation);
345 PartialInterpretation.scopes(interpretation,scope);
346 Scope.targetTypeInterpretation(scope,typeInterpretation);
347 Scope.maxNewElements(scope,0);
348 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
349 Type.name(type,"Synchronization class");
350}
351
352/**
353 * An element may be an instance of type "Synchronization class".
354 */
355private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
356{
357 find interpretation(problem,interpretation);
358 PartialInterpretation.newElements(interpretation,element);
359 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
360 neg find mustInstanceOfExit_class(problem,interpretation,element);
361 neg find mustInstanceOfRegion_class(problem,interpretation,element);
362 neg find mustInstanceOfTransition_class(problem,interpretation,element);
363 neg find mustInstanceOfChoice_class(problem,interpretation,element);
364 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
365 neg find mustInstanceOfEntry_class(problem,interpretation,element);
366 neg find scopeDisallowsNewSynchronization_class(problem, interpretation);
367 neg find isPrimitive(element);
368} or {
369 find interpretation(problem,interpretation);
370 PartialInterpretation.openWorldElements(interpretation,element);
371 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
372 neg find mustInstanceOfExit_class(problem,interpretation,element);
373 neg find mustInstanceOfRegion_class(problem,interpretation,element);
374 neg find mustInstanceOfTransition_class(problem,interpretation,element);
375 neg find mustInstanceOfChoice_class(problem,interpretation,element);
376 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
377 neg find mustInstanceOfEntry_class(problem,interpretation,element);
378 neg find scopeDisallowsNewSynchronization_class(problem, interpretation);
379 neg find isPrimitive(element);
380} or
381{ find mustInstanceOfSynchronization_class(problem,interpretation,element); }
382/**
383 * An element must be an instance of type "State class".
384 */
385private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
386 Type.name(type,"State class");
387 find directInstanceOf(problem,interpretation,element,type);
388}
389private pattern scopeDisallowsNewState_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,"State class");
396}
397
398/**
399 * An element may be an instance of type "State class".
400 */
401private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
402{
403 find interpretation(problem,interpretation);
404 PartialInterpretation.newElements(interpretation,element);
405 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
406 neg find mustInstanceOfRegion_class(problem,interpretation,element);
407 neg find mustInstanceOfTransition_class(problem,interpretation,element);
408 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
409 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
410 neg find scopeDisallowsNewState_class(problem, interpretation);
411 neg find isPrimitive(element);
412} or {
413 find interpretation(problem,interpretation);
414 PartialInterpretation.openWorldElements(interpretation,element);
415 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
416 neg find mustInstanceOfRegion_class(problem,interpretation,element);
417 neg find mustInstanceOfTransition_class(problem,interpretation,element);
418 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
419 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
420 neg find scopeDisallowsNewState_class(problem, interpretation);
421 neg find isPrimitive(element);
422} or
423{ find mustInstanceOfState_class(problem,interpretation,element); }
424/**
425 * An element must be an instance of type "RegularState class".
426 */
427private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
428 Type.name(type,"RegularState class");
429 find directInstanceOf(problem,interpretation,element,type);
430}
431private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) {
432 find interpretation(problem,interpretation);
433 PartialInterpretation.scopes(interpretation,scope);
434 Scope.targetTypeInterpretation(scope,typeInterpretation);
435 Scope.maxNewElements(scope,0);
436 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
437 Type.name(type,"RegularState class");
438}
439
440/**
441 * An element may be an instance of type "RegularState class".
442 */
443private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
444{
445 find interpretation(problem,interpretation);
446 PartialInterpretation.newElements(interpretation,element);
447 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
448 neg find mustInstanceOfTransition_class(problem,interpretation,element);
449 neg find mustInstanceOfRegion_class(problem,interpretation,element);
450 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
451 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
452 neg find scopeDisallowsNewRegularState_class(problem, interpretation);
453 neg find isPrimitive(element);
454} or {
455 find interpretation(problem,interpretation);
456 PartialInterpretation.openWorldElements(interpretation,element);
457 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
458 neg find mustInstanceOfTransition_class(problem,interpretation,element);
459 neg find mustInstanceOfRegion_class(problem,interpretation,element);
460 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
461 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
462 neg find scopeDisallowsNewRegularState_class(problem, interpretation);
463 neg find isPrimitive(element);
464} or
465{ find mustInstanceOfRegularState_class(problem,interpretation,element); }
466/**
467 * An element must be an instance of type "CompositeElement class".
468 */
469private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
470 Type.name(type,"CompositeElement class");
471 find directInstanceOf(problem,interpretation,element,type);
472}
473private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
474 find interpretation(problem,interpretation);
475 PartialInterpretation.scopes(interpretation,scope);
476 Scope.targetTypeInterpretation(scope,typeInterpretation);
477 Scope.maxNewElements(scope,0);
478 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
479 Type.name(type,"CompositeElement class");
480}
481
482/**
483 * An element may be an instance of type "CompositeElement class".
484 */
485private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
486{
487 find interpretation(problem,interpretation);
488 PartialInterpretation.newElements(interpretation,element);
489 neg find mustInstanceOfTransition_class(problem,interpretation,element);
490 neg find mustInstanceOfRegion_class(problem,interpretation,element);
491 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
492 neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element);
493 neg find mustInstanceOfVertex_class(problem,interpretation,element);
494 neg find scopeDisallowsNewCompositeElement_class(problem, interpretation);
495 neg find isPrimitive(element);
496} or {
497 find interpretation(problem,interpretation);
498 PartialInterpretation.openWorldElements(interpretation,element);
499 neg find mustInstanceOfTransition_class(problem,interpretation,element);
500 neg find mustInstanceOfRegion_class(problem,interpretation,element);
501 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
502 neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element);
503 neg find mustInstanceOfVertex_class(problem,interpretation,element);
504 neg find scopeDisallowsNewCompositeElement_class(problem, interpretation);
505 neg find isPrimitive(element);
506} or
507{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); }
508/**
509 * An element must be an instance of type "Choice class".
510 */
511private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
512 Type.name(type,"Choice class");
513 find directInstanceOf(problem,interpretation,element,type);
514}
515private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) {
516 find interpretation(problem,interpretation);
517 PartialInterpretation.scopes(interpretation,scope);
518 Scope.targetTypeInterpretation(scope,typeInterpretation);
519 Scope.maxNewElements(scope,0);
520 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
521 Type.name(type,"Choice class");
522}
523
524/**
525 * An element may be an instance of type "Choice class".
526 */
527private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
528{
529 find interpretation(problem,interpretation);
530 PartialInterpretation.newElements(interpretation,element);
531 neg find mustInstanceOfExit_class(problem,interpretation,element);
532 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
533 neg find mustInstanceOfRegion_class(problem,interpretation,element);
534 neg find mustInstanceOfTransition_class(problem,interpretation,element);
535 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
536 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
537 neg find mustInstanceOfEntry_class(problem,interpretation,element);
538 neg find scopeDisallowsNewChoice_class(problem, interpretation);
539 neg find isPrimitive(element);
540} or {
541 find interpretation(problem,interpretation);
542 PartialInterpretation.openWorldElements(interpretation,element);
543 neg find mustInstanceOfExit_class(problem,interpretation,element);
544 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
545 neg find mustInstanceOfRegion_class(problem,interpretation,element);
546 neg find mustInstanceOfTransition_class(problem,interpretation,element);
547 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
548 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
549 neg find mustInstanceOfEntry_class(problem,interpretation,element);
550 neg find scopeDisallowsNewChoice_class(problem, interpretation);
551 neg find isPrimitive(element);
552} or
553{ find mustInstanceOfChoice_class(problem,interpretation,element); }
554/**
555 * An element must be an instance of type "Exit class".
556 */
557private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
558 Type.name(type,"Exit class");
559 find directInstanceOf(problem,interpretation,element,type);
560}
561private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) {
562 find interpretation(problem,interpretation);
563 PartialInterpretation.scopes(interpretation,scope);
564 Scope.targetTypeInterpretation(scope,typeInterpretation);
565 Scope.maxNewElements(scope,0);
566 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
567 Type.name(type,"Exit class");
568}
569
570/**
571 * An element may be an instance of type "Exit class".
572 */
573private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
574{
575 find interpretation(problem,interpretation);
576 PartialInterpretation.newElements(interpretation,element);
577 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
578 neg find mustInstanceOfTransition_class(problem,interpretation,element);
579 neg find mustInstanceOfRegion_class(problem,interpretation,element);
580 neg find mustInstanceOfChoice_class(problem,interpretation,element);
581 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
582 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
583 neg find mustInstanceOfEntry_class(problem,interpretation,element);
584 neg find scopeDisallowsNewExit_class(problem, interpretation);
585 neg find isPrimitive(element);
586} or {
587 find interpretation(problem,interpretation);
588 PartialInterpretation.openWorldElements(interpretation,element);
589 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
590 neg find mustInstanceOfTransition_class(problem,interpretation,element);
591 neg find mustInstanceOfRegion_class(problem,interpretation,element);
592 neg find mustInstanceOfChoice_class(problem,interpretation,element);
593 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
594 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
595 neg find mustInstanceOfEntry_class(problem,interpretation,element);
596 neg find scopeDisallowsNewExit_class(problem, interpretation);
597 neg find isPrimitive(element);
598} or
599{ find mustInstanceOfExit_class(problem,interpretation,element); }
600/**
601 * An element must be an instance of type "FinalState class".
602 */
603private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
604 Type.name(type,"FinalState class");
605 find directInstanceOf(problem,interpretation,element,type);
606}
607private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) {
608 find interpretation(problem,interpretation);
609 PartialInterpretation.scopes(interpretation,scope);
610 Scope.targetTypeInterpretation(scope,typeInterpretation);
611 Scope.maxNewElements(scope,0);
612 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
613 Type.name(type,"FinalState class");
614}
615
616/**
617 * An element may be an instance of type "FinalState class".
618 */
619private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
620{
621 find interpretation(problem,interpretation);
622 PartialInterpretation.newElements(interpretation,element);
623 neg find mustInstanceOfTransition_class(problem,interpretation,element);
624 neg find mustInstanceOfRegion_class(problem,interpretation,element);
625 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
626 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
627 neg find scopeDisallowsNewFinalState_class(problem, interpretation);
628 neg find isPrimitive(element);
629} or {
630 find interpretation(problem,interpretation);
631 PartialInterpretation.openWorldElements(interpretation,element);
632 neg find mustInstanceOfTransition_class(problem,interpretation,element);
633 neg find mustInstanceOfRegion_class(problem,interpretation,element);
634 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
635 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
636 neg find scopeDisallowsNewFinalState_class(problem, interpretation);
637 neg find isPrimitive(element);
638} or
639{ find mustInstanceOfFinalState_class(problem,interpretation,element); }
640/**
641 * An element must be an instance of type "Statechart class DefinedPart".
642 */
643private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
644 Type.name(type,"Statechart class DefinedPart");
645 find directInstanceOf(problem,interpretation,element,type);
646}
647private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
648 find interpretation(problem,interpretation);
649 PartialInterpretation.scopes(interpretation,scope);
650 Scope.targetTypeInterpretation(scope,typeInterpretation);
651 Scope.maxNewElements(scope,0);
652 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
653 Type.name(type,"Statechart class DefinedPart");
654}
655
656/**
657 * An element may be an instance of type "Statechart class DefinedPart".
658 */
659private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
660{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); }
661/**
662 * An element must be an instance of type "Statechart class UndefinedPart".
663 */
664private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
665 Type.name(type,"Statechart class UndefinedPart");
666 find directInstanceOf(problem,interpretation,element,type);
667}
668private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
669 find interpretation(problem,interpretation);
670 PartialInterpretation.scopes(interpretation,scope);
671 Scope.targetTypeInterpretation(scope,typeInterpretation);
672 Scope.maxNewElements(scope,0);
673 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
674 Type.name(type,"Statechart class UndefinedPart");
675}
676
677/**
678 * An element may be an instance of type "Statechart class UndefinedPart".
679 */
680private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
681{
682 find interpretation(problem,interpretation);
683 PartialInterpretation.newElements(interpretation,element);
684 neg find mustInstanceOfRegion_class(problem,interpretation,element);
685 neg find mustInstanceOfTransition_class(problem,interpretation,element);
686 neg find mustInstanceOfVertex_class(problem,interpretation,element);
687 neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation);
688 neg find isPrimitive(element);
689} or {
690 find interpretation(problem,interpretation);
691 PartialInterpretation.openWorldElements(interpretation,element);
692 neg find mustInstanceOfRegion_class(problem,interpretation,element);
693 neg find mustInstanceOfTransition_class(problem,interpretation,element);
694 neg find mustInstanceOfVertex_class(problem,interpretation,element);
695 neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation);
696 neg find isPrimitive(element);
697} or
698{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); }
699/**
700 * An element must be an instance of type "CompositeElement class DefinedPart".
701 */
702private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
703 Type.name(type,"CompositeElement class DefinedPart");
704 find directInstanceOf(problem,interpretation,element,type);
705}
706private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
707 find interpretation(problem,interpretation);
708 PartialInterpretation.scopes(interpretation,scope);
709 Scope.targetTypeInterpretation(scope,typeInterpretation);
710 Scope.maxNewElements(scope,0);
711 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
712 Type.name(type,"CompositeElement class DefinedPart");
713}
714
715/**
716 * An element may be an instance of type "CompositeElement class DefinedPart".
717 */
718private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
719{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); }
720/**
721 * An element must be an instance of type "CompositeElement class UndefinedPart".
722 */
723private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
724 Type.name(type,"CompositeElement class UndefinedPart");
725 find directInstanceOf(problem,interpretation,element,type);
726}
727private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
728 find interpretation(problem,interpretation);
729 PartialInterpretation.scopes(interpretation,scope);
730 Scope.targetTypeInterpretation(scope,typeInterpretation);
731 Scope.maxNewElements(scope,0);
732 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
733 Type.name(type,"CompositeElement class UndefinedPart");
734}
735
736/**
737 * An element may be an instance of type "CompositeElement class UndefinedPart".
738 */
739private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
740{
741 find interpretation(problem,interpretation);
742 PartialInterpretation.newElements(interpretation,element);
743 neg find mustInstanceOfRegion_class(problem,interpretation,element);
744 neg find mustInstanceOfTransition_class(problem,interpretation,element);
745 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
746 neg find mustInstanceOfVertex_class(problem,interpretation,element);
747 neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation);
748 neg find isPrimitive(element);
749} or {
750 find interpretation(problem,interpretation);
751 PartialInterpretation.openWorldElements(interpretation,element);
752 neg find mustInstanceOfRegion_class(problem,interpretation,element);
753 neg find mustInstanceOfTransition_class(problem,interpretation,element);
754 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
755 neg find mustInstanceOfVertex_class(problem,interpretation,element);
756 neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation);
757 neg find isPrimitive(element);
758} or
759{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); }
760
761//////////
762// 1.2 Relation Declaration Indexers
763//////////
764/**
765 * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target)
766 */
767private pattern mustInRelationincomingTransitions_reference_Vertex(
768 problem:LogicProblem, interpretation:PartialInterpretation,
769 source: DefinedElement, target:DefinedElement)
770{
771 find interpretation(problem,interpretation);
772 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
773 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex");
774 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
775 BinaryElementRelationLink.param1(link,source);
776 BinaryElementRelationLink.param2(link,target);
777}
778/**
779 * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target)
780 */
781private pattern mayInRelationincomingTransitions_reference_Vertex(
782 problem:LogicProblem, interpretation:PartialInterpretation,
783 source: DefinedElement, target:DefinedElement)
784{
785 find interpretation(problem,interpretation);
786 // The two endpoint of the link have to exist
787 find mayExist(problem, interpretation, source);
788 find mayExist(problem, interpretation, target);
789 // Type consistency
790 find mayInstanceOfVertex_class(problem,interpretation,source);
791 find mayInstanceOfTransition_class(problem,interpretation,target);
792 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
793 // the upper bound of the opposite reference multiplicity should be considered.
794 numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_);
795 check(numberOfExistingOppositeReferences < 1);
796} or {
797 find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target);
798}
799/**
800 * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target)
801 */
802private pattern mustInRelationoutgoingTransitions_reference_Vertex(
803 problem:LogicProblem, interpretation:PartialInterpretation,
804 source: DefinedElement, target:DefinedElement)
805{
806 find interpretation(problem,interpretation);
807 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
808 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex");
809 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
810 BinaryElementRelationLink.param1(link,source);
811 BinaryElementRelationLink.param2(link,target);
812}
813/**
814 * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target)
815 */
816private pattern mayInRelationoutgoingTransitions_reference_Vertex(
817 problem:LogicProblem, interpretation:PartialInterpretation,
818 source: DefinedElement, target:DefinedElement)
819{
820 find interpretation(problem,interpretation);
821 // The two endpoint of the link have to exist
822 find mayExist(problem, interpretation, source);
823 find mayExist(problem, interpretation, target);
824 // Type consistency
825 find mayInstanceOfVertex_class(problem,interpretation,source);
826 find mayInstanceOfTransition_class(problem,interpretation,target);
827 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
828 // the upper bound of the opposite reference multiplicity should be considered.
829 numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_);
830 check(numberOfExistingOppositeReferences < 1);
831 // The reference is containment, then a new reference cannot be create if:
832 // 1. Multiple parents
833 neg find mustContains4(problem,interpretation,_,target);
834 // 2. Circle in the containment hierarchy
835 neg find mustTransitiveContains(source,target);
836} or {
837 find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target);
838}
839/**
840 * Matcher for detecting tuples t where []vertices reference Region(source,target)
841 */
842private pattern mustInRelationvertices_reference_Region(
843 problem:LogicProblem, interpretation:PartialInterpretation,
844 source: DefinedElement, target:DefinedElement)
845{
846 find interpretation(problem,interpretation);
847 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
848 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region");
849 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
850 BinaryElementRelationLink.param1(link,source);
851 BinaryElementRelationLink.param2(link,target);
852}
853/**
854 * Matcher for detecting tuples t where <>vertices reference Region(source,target)
855 */
856private pattern mayInRelationvertices_reference_Region(
857 problem:LogicProblem, interpretation:PartialInterpretation,
858 source: DefinedElement, target:DefinedElement)
859{
860 find interpretation(problem,interpretation);
861 // The two endpoint of the link have to exist
862 find mayExist(problem, interpretation, source);
863 find mayExist(problem, interpretation, target);
864 // Type consistency
865 find mayInstanceOfRegion_class(problem,interpretation,source);
866 find mayInstanceOfVertex_class(problem,interpretation,target);
867 // The reference is containment, then a new reference cannot be create if:
868 // 1. Multiple parents
869 neg find mustContains4(problem,interpretation,_,target);
870 // 2. Circle in the containment hierarchy
871 neg find mustTransitiveContains(source,target);
872} or {
873 find mustInRelationvertices_reference_Region(problem,interpretation,source,target);
874}
875/**
876 * Matcher for detecting tuples t where []target reference Transition(source,target)
877 */
878private pattern mustInRelationtarget_reference_Transition(
879 problem:LogicProblem, interpretation:PartialInterpretation,
880 source: DefinedElement, target:DefinedElement)
881{
882 find interpretation(problem,interpretation);
883 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
884 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition");
885 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
886 BinaryElementRelationLink.param1(link,source);
887 BinaryElementRelationLink.param2(link,target);
888}
889/**
890 * Matcher for detecting tuples t where <>target reference Transition(source,target)
891 */
892private pattern mayInRelationtarget_reference_Transition(
893 problem:LogicProblem, interpretation:PartialInterpretation,
894 source: DefinedElement, target:DefinedElement)
895{
896 find interpretation(problem,interpretation);
897 // The two endpoint of the link have to exist
898 find mayExist(problem, interpretation, source);
899 find mayExist(problem, interpretation, target);
900 // Type consistency
901 find mayInstanceOfTransition_class(problem,interpretation,source);
902 find mayInstanceOfVertex_class(problem,interpretation,target);
903 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
904 // the upper bound of the multiplicity should be considered.
905 numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_);
906 check(numberOfExistingReferences < 1);
907} or {
908 find mustInRelationtarget_reference_Transition(problem,interpretation,source,target);
909}
910/**
911 * Matcher for detecting tuples t where []source reference Transition(source,target)
912 */
913private pattern mustInRelationsource_reference_Transition(
914 problem:LogicProblem, interpretation:PartialInterpretation,
915 source: DefinedElement, target:DefinedElement)
916{
917 find interpretation(problem,interpretation);
918 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
919 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition");
920 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
921 BinaryElementRelationLink.param1(link,source);
922 BinaryElementRelationLink.param2(link,target);
923}
924/**
925 * Matcher for detecting tuples t where <>source reference Transition(source,target)
926 */
927private pattern mayInRelationsource_reference_Transition(
928 problem:LogicProblem, interpretation:PartialInterpretation,
929 source: DefinedElement, target:DefinedElement)
930{
931 find interpretation(problem,interpretation);
932 // The two endpoint of the link have to exist
933 find mayExist(problem, interpretation, source);
934 find mayExist(problem, interpretation, target);
935 // Type consistency
936 find mayInstanceOfTransition_class(problem,interpretation,source);
937 find mayInstanceOfVertex_class(problem,interpretation,target);
938 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
939 // the upper bound of the multiplicity should be considered.
940 numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_);
941 check(numberOfExistingReferences < 1);
942 // The eOpposite of the reference is containment, then a referene cannot be created if
943 // 1. Multiple parents
944 neg find mustContains4(problem,interpretation,source,_);
945 // 2. Circle in the containment hierarchy
946 neg find mustTransitiveContains(source,target);
947} or {
948 find mustInRelationsource_reference_Transition(problem,interpretation,source,target);
949}
950/**
951 * Matcher for detecting tuples t where []regions reference CompositeElement(source,target)
952 */
953private pattern mustInRelationregions_reference_CompositeElement(
954 problem:LogicProblem, interpretation:PartialInterpretation,
955 source: DefinedElement, target:DefinedElement)
956{
957 find interpretation(problem,interpretation);
958 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
959 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement");
960 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
961 BinaryElementRelationLink.param1(link,source);
962 BinaryElementRelationLink.param2(link,target);
963}
964/**
965 * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target)
966 */
967private pattern mayInRelationregions_reference_CompositeElement(
968 problem:LogicProblem, interpretation:PartialInterpretation,
969 source: DefinedElement, target:DefinedElement)
970{
971 find interpretation(problem,interpretation);
972 // The two endpoint of the link have to exist
973 find mayExist(problem, interpretation, source);
974 find mayExist(problem, interpretation, target);
975 // Type consistency
976 find mayInstanceOfCompositeElement_class(problem,interpretation,source);
977 find mayInstanceOfRegion_class(problem,interpretation,target);
978 // The reference is containment, then a new reference cannot be create if:
979 // 1. Multiple parents
980 neg find mustContains4(problem,interpretation,_,target);
981 // 2. Circle in the containment hierarchy
982 neg find mustTransitiveContains(source,target);
983} or {
984 find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target);
985}
986
987//////////
988// 1.3 Relation Definition Indexers
989//////////
990
991//////////
992// 1.4 Containment Indexer
993//////////
994private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
995 find mustContains4(_,_,source,target);
996}
997
998private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
999 source: DefinedElement, target: DefinedElement)
1000 { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or
1001
1002 { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or
1003
1004 { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); }
1005
1006private pattern mustTransitiveContains(source,target) {
1007 find mustContains2+(source,target);
1008}
1009
1010//////////
1011// 2. Invalidation Indexers
1012//////////
1013// 2.1 Invalidated by WF Queries
1014//////////
1015
1016//////////
1017// 3. Unfinishedness Indexers
1018//////////
1019// 3.1 Unfinishedness Measured by Multiplicity
1020//////////
1021pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
1022 find interpretation(problem,interpretation);
1023 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1024 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition");
1025 find mustInstanceOfTransition_class(problem,interpretation,object);
1026 numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_);
1027 check(numberOfExistingReferences < 1);
1028 missingMultiplicity == eval(1-numberOfExistingReferences);
1029}
1030
1031//////////
1032// 3.2 Unfinishedness Measured by WF Queries
1033//////////
1034
1035//////////
1036// 4. Refinement Indexers
1037//////////
1038// 4.1 Object constructors
1039//////////
1040private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
1041{
1042 find interpretation(problem,interpretation);
1043 find mustInstanceOfPseudostate_class(problem,interpretation,root);
1044 find mustExist(problem, interpretation, root);
1045}or{
1046 find interpretation(problem,interpretation);
1047 find mustInstanceOfCompositeElement_class(problem,interpretation,root);
1048 find mustExist(problem, interpretation, root);
1049}or{
1050 find interpretation(problem,interpretation);
1051 find mustInstanceOfTransition_class(problem,interpretation,root);
1052 find mustExist(problem, interpretation, root);
1053}or{
1054 find interpretation(problem,interpretation);
1055 find mustInstanceOfState_class(problem,interpretation,root);
1056 find mustExist(problem, interpretation, root);
1057}or{
1058 find interpretation(problem,interpretation);
1059 find mustInstanceOfSynchronization_class(problem,interpretation,root);
1060 find mustExist(problem, interpretation, root);
1061}or{
1062 find interpretation(problem,interpretation);
1063 find mustInstanceOfEntry_class(problem,interpretation,root);
1064 find mustExist(problem, interpretation, root);
1065}or{
1066 find interpretation(problem,interpretation);
1067 find mustInstanceOfRegularState_class(problem,interpretation,root);
1068 find mustExist(problem, interpretation, root);
1069}or{
1070 find interpretation(problem,interpretation);
1071 find mustInstanceOfChoice_class(problem,interpretation,root);
1072 find mustExist(problem, interpretation, root);
1073}or{
1074 find interpretation(problem,interpretation);
1075 find mustInstanceOfVertex_class(problem,interpretation,root);
1076 find mustExist(problem, interpretation, root);
1077}or{
1078 find interpretation(problem,interpretation);
1079 find mustInstanceOfStatechart_class(problem,interpretation,root);
1080 find mustExist(problem, interpretation, root);
1081}or{
1082 find interpretation(problem,interpretation);
1083 find mustInstanceOfExit_class(problem,interpretation,root);
1084 find mustExist(problem, interpretation, root);
1085}or{
1086 find interpretation(problem,interpretation);
1087 find mustInstanceOfFinalState_class(problem,interpretation,root);
1088 find mustExist(problem, interpretation, root);
1089}or{
1090 find interpretation(problem,interpretation);
1091 find mustInstanceOfRegion_class(problem,interpretation,root);
1092 find mustExist(problem, interpretation, root);
1093}or{
1094 find interpretation(problem,interpretation);
1095 find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root);
1096 find mustExist(problem, interpretation, root);
1097}or{
1098 find interpretation(problem,interpretation);
1099 find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root);
1100 find mustExist(problem, interpretation, root);
1101}or{
1102 find interpretation(problem,interpretation);
1103 find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root);
1104 find mustExist(problem, interpretation, root);
1105}or{
1106 find interpretation(problem,interpretation);
1107 find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root);
1108 find mustExist(problem, interpretation, root);
1109}
1110pattern createObject_Exit_class_by_vertices_reference_Region(
1111 problem:LogicProblem, interpretation:PartialInterpretation,
1112 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1113 container:DefinedElement)
1114{
1115 find interpretation(problem,interpretation);
1116 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1117 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class");
1118 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1119 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
1120 find mustInstanceOfRegion_class(problem,interpretation,container);
1121 find mayInstanceOfExit_class(problem,interpretation,newObject);
1122 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
1123 find mustExist(problem, interpretation, container);
1124 neg find mustExist(problem, interpretation, newObject);
1125}
1126pattern createObject_Exit_class(
1127 problem:LogicProblem, interpretation:PartialInterpretation,
1128 typeInterpretation:PartialComplexTypeInterpretation)
1129{
1130 find interpretation(problem,interpretation);
1131 neg find hasElementInContainment(problem,interpretation);
1132 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1133 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class");
1134 find mayInstanceOfExit_class(problem,interpretation,newObject);
1135 find mayExist(problem, interpretation, newObject);
1136 neg find mustExist(problem, interpretation, newObject);
1137}
1138pattern createObject_FinalState_class_by_vertices_reference_Region(
1139 problem:LogicProblem, interpretation:PartialInterpretation,
1140 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1141 container:DefinedElement)
1142{
1143 find interpretation(problem,interpretation);
1144 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1145 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class");
1146 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1147 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
1148 find mustInstanceOfRegion_class(problem,interpretation,container);
1149 find mayInstanceOfFinalState_class(problem,interpretation,newObject);
1150 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
1151 find mustExist(problem, interpretation, container);
1152 neg find mustExist(problem, interpretation, newObject);
1153}
1154pattern createObject_FinalState_class(
1155 problem:LogicProblem, interpretation:PartialInterpretation,
1156 typeInterpretation:PartialComplexTypeInterpretation)
1157{
1158 find interpretation(problem,interpretation);
1159 neg find hasElementInContainment(problem,interpretation);
1160 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1161 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class");
1162 find mayInstanceOfFinalState_class(problem,interpretation,newObject);
1163 find mayExist(problem, interpretation, newObject);
1164 neg find mustExist(problem, interpretation, newObject);
1165}
1166pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition(
1167 problem:LogicProblem, interpretation:PartialInterpretation,
1168 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1169 container:DefinedElement)
1170{
1171 find interpretation(problem,interpretation);
1172 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1173 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class");
1174 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1175 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex");
1176 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
1177 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition");
1178 find mustInstanceOfVertex_class(problem,interpretation,container);
1179 find mayInstanceOfTransition_class(problem,interpretation,newObject);
1180 find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject);
1181 find mustExist(problem, interpretation, container);
1182 neg find mustExist(problem, interpretation, newObject);
1183}
1184pattern createObject_Transition_class(
1185 problem:LogicProblem, interpretation:PartialInterpretation,
1186 typeInterpretation:PartialComplexTypeInterpretation)
1187{
1188 find interpretation(problem,interpretation);
1189 neg find hasElementInContainment(problem,interpretation);
1190 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1191 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class");
1192 find mayInstanceOfTransition_class(problem,interpretation,newObject);
1193 find mayExist(problem, interpretation, newObject);
1194 neg find mustExist(problem, interpretation, newObject);
1195}
1196pattern createObject_Region_class_by_regions_reference_CompositeElement(
1197 problem:LogicProblem, interpretation:PartialInterpretation,
1198 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1199 container:DefinedElement)
1200{
1201 find interpretation(problem,interpretation);
1202 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1203 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class");
1204 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1205 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement");
1206 find mustInstanceOfCompositeElement_class(problem,interpretation,container);
1207 find mayInstanceOfRegion_class(problem,interpretation,newObject);
1208 find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject);
1209 find mustExist(problem, interpretation, container);
1210 neg find mustExist(problem, interpretation, newObject);
1211}
1212pattern createObject_Region_class(
1213 problem:LogicProblem, interpretation:PartialInterpretation,
1214 typeInterpretation:PartialComplexTypeInterpretation)
1215{
1216 find interpretation(problem,interpretation);
1217 neg find hasElementInContainment(problem,interpretation);
1218 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1219 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class");
1220 find mayInstanceOfRegion_class(problem,interpretation,newObject);
1221 find mayExist(problem, interpretation, newObject);
1222 neg find mustExist(problem, interpretation, newObject);
1223}
1224pattern createObject_Choice_class_by_vertices_reference_Region(
1225 problem:LogicProblem, interpretation:PartialInterpretation,
1226 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1227 container:DefinedElement)
1228{
1229 find interpretation(problem,interpretation);
1230 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1231 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class");
1232 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1233 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
1234 find mustInstanceOfRegion_class(problem,interpretation,container);
1235 find mayInstanceOfChoice_class(problem,interpretation,newObject);
1236 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
1237 find mustExist(problem, interpretation, container);
1238 neg find mustExist(problem, interpretation, newObject);
1239}
1240pattern createObject_Choice_class(
1241 problem:LogicProblem, interpretation:PartialInterpretation,
1242 typeInterpretation:PartialComplexTypeInterpretation)
1243{
1244 find interpretation(problem,interpretation);
1245 neg find hasElementInContainment(problem,interpretation);
1246 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1247 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class");
1248 find mayInstanceOfChoice_class(problem,interpretation,newObject);
1249 find mayExist(problem, interpretation, newObject);
1250 neg find mustExist(problem, interpretation, newObject);
1251}
1252pattern createObject_Synchronization_class_by_vertices_reference_Region(
1253 problem:LogicProblem, interpretation:PartialInterpretation,
1254 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1255 container:DefinedElement)
1256{
1257 find interpretation(problem,interpretation);
1258 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1259 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class");
1260 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1261 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
1262 find mustInstanceOfRegion_class(problem,interpretation,container);
1263 find mayInstanceOfSynchronization_class(problem,interpretation,newObject);
1264 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
1265 find mustExist(problem, interpretation, container);
1266 neg find mustExist(problem, interpretation, newObject);
1267}
1268pattern createObject_Synchronization_class(
1269 problem:LogicProblem, interpretation:PartialInterpretation,
1270 typeInterpretation:PartialComplexTypeInterpretation)
1271{
1272 find interpretation(problem,interpretation);
1273 neg find hasElementInContainment(problem,interpretation);
1274 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1275 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class");
1276 find mayInstanceOfSynchronization_class(problem,interpretation,newObject);
1277 find mayExist(problem, interpretation, newObject);
1278 neg find mustExist(problem, interpretation, newObject);
1279}
1280pattern createObject_Statechart_class_UndefinedPart(
1281 problem:LogicProblem, interpretation:PartialInterpretation,
1282 typeInterpretation:PartialComplexTypeInterpretation)
1283{
1284 find interpretation(problem,interpretation);
1285 neg find hasElementInContainment(problem,interpretation);
1286 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1287 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart");
1288 find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject);
1289 find mayExist(problem, interpretation, newObject);
1290 neg find mustExist(problem, interpretation, newObject);
1291}
1292pattern createObject_Entry_class_by_vertices_reference_Region(
1293 problem:LogicProblem, interpretation:PartialInterpretation,
1294 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1295 container:DefinedElement)
1296{
1297 find interpretation(problem,interpretation);
1298 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1299 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class");
1300 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1301 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
1302 find mustInstanceOfRegion_class(problem,interpretation,container);
1303 find mayInstanceOfEntry_class(problem,interpretation,newObject);
1304 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
1305 find mustExist(problem, interpretation, container);
1306 neg find mustExist(problem, interpretation, newObject);
1307}
1308pattern createObject_Entry_class(
1309 problem:LogicProblem, interpretation:PartialInterpretation,
1310 typeInterpretation:PartialComplexTypeInterpretation)
1311{
1312 find interpretation(problem,interpretation);
1313 neg find hasElementInContainment(problem,interpretation);
1314 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1315 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class");
1316 find mayInstanceOfEntry_class(problem,interpretation,newObject);
1317 find mayExist(problem, interpretation, newObject);
1318 neg find mustExist(problem, interpretation, newObject);
1319}
1320pattern createObject_State_class_by_vertices_reference_Region(
1321 problem:LogicProblem, interpretation:PartialInterpretation,
1322 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
1323 container:DefinedElement)
1324{
1325 find interpretation(problem,interpretation);
1326 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1327 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class");
1328 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
1329 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region");
1330 find mustInstanceOfRegion_class(problem,interpretation,container);
1331 find mayInstanceOfState_class(problem,interpretation,newObject);
1332 find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject);
1333 find mustExist(problem, interpretation, container);
1334 neg find mustExist(problem, interpretation, newObject);
1335}
1336pattern createObject_State_class(
1337 problem:LogicProblem, interpretation:PartialInterpretation,
1338 typeInterpretation:PartialComplexTypeInterpretation)
1339{
1340 find interpretation(problem,interpretation);
1341 neg find hasElementInContainment(problem,interpretation);
1342 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
1343 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class");
1344 find mayInstanceOfState_class(problem,interpretation,newObject);
1345 find mayExist(problem, interpretation, newObject);
1346 neg find mustExist(problem, interpretation, newObject);
1347}
1348
1349//////////
1350// 4.2 Type refinement
1351//////////
1352pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1353 find interpretation(problem,interpretation);
1354 PartialInterpretation.newElements(interpretation,element);
1355 find mayInstanceOfExit_class(problem,interpretation,element);
1356 neg find mustInstanceOfExit_class(problem,interpretation,element);
1357 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
1358 neg find mustInstanceOfTransition_class(problem,interpretation,element);
1359 neg find mustInstanceOfRegion_class(problem,interpretation,element);
1360 neg find mustInstanceOfChoice_class(problem,interpretation,element);
1361 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
1362 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
1363 neg find mustInstanceOfEntry_class(problem,interpretation,element);
1364}
1365pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1366 find interpretation(problem,interpretation);
1367 PartialInterpretation.newElements(interpretation,element);
1368 find mayInstanceOfFinalState_class(problem,interpretation,element);
1369 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
1370 neg find mustInstanceOfTransition_class(problem,interpretation,element);
1371 neg find mustInstanceOfRegion_class(problem,interpretation,element);
1372 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
1373 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
1374}
1375pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1376 find interpretation(problem,interpretation);
1377 PartialInterpretation.newElements(interpretation,element);
1378 find mayInstanceOfTransition_class(problem,interpretation,element);
1379 neg find mustInstanceOfRegion_class(problem,interpretation,element);
1380 neg find mustInstanceOfTransition_class(problem,interpretation,element);
1381 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
1382 neg find mustInstanceOfVertex_class(problem,interpretation,element);
1383}
1384pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1385 find interpretation(problem,interpretation);
1386 PartialInterpretation.newElements(interpretation,element);
1387 find mayInstanceOfRegion_class(problem,interpretation,element);
1388 neg find mustInstanceOfTransition_class(problem,interpretation,element);
1389 neg find mustInstanceOfRegion_class(problem,interpretation,element);
1390 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
1391 neg find mustInstanceOfVertex_class(problem,interpretation,element);
1392}
1393pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1394 find interpretation(problem,interpretation);
1395 PartialInterpretation.newElements(interpretation,element);
1396 find mayInstanceOfChoice_class(problem,interpretation,element);
1397 neg find mustInstanceOfExit_class(problem,interpretation,element);
1398 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
1399 neg find mustInstanceOfRegion_class(problem,interpretation,element);
1400 neg find mustInstanceOfTransition_class(problem,interpretation,element);
1401 neg find mustInstanceOfChoice_class(problem,interpretation,element);
1402 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
1403 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
1404 neg find mustInstanceOfEntry_class(problem,interpretation,element);
1405}
1406pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1407 find interpretation(problem,interpretation);
1408 PartialInterpretation.newElements(interpretation,element);
1409 find mayInstanceOfSynchronization_class(problem,interpretation,element);
1410 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
1411 neg find mustInstanceOfExit_class(problem,interpretation,element);
1412 neg find mustInstanceOfRegion_class(problem,interpretation,element);
1413 neg find mustInstanceOfTransition_class(problem,interpretation,element);
1414 neg find mustInstanceOfChoice_class(problem,interpretation,element);
1415 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
1416 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
1417 neg find mustInstanceOfEntry_class(problem,interpretation,element);
1418}
1419pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1420 find interpretation(problem,interpretation);
1421 PartialInterpretation.newElements(interpretation,element);
1422 find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element);
1423 neg find mustInstanceOfRegion_class(problem,interpretation,element);
1424 neg find mustInstanceOfTransition_class(problem,interpretation,element);
1425 neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element);
1426 neg find mustInstanceOfVertex_class(problem,interpretation,element);
1427}
1428pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1429 find interpretation(problem,interpretation);
1430 PartialInterpretation.newElements(interpretation,element);
1431 find mayInstanceOfEntry_class(problem,interpretation,element);
1432 neg find mustInstanceOfExit_class(problem,interpretation,element);
1433 neg find mustInstanceOfRegularState_class(problem,interpretation,element);
1434 neg find mustInstanceOfTransition_class(problem,interpretation,element);
1435 neg find mustInstanceOfRegion_class(problem,interpretation,element);
1436 neg find mustInstanceOfChoice_class(problem,interpretation,element);
1437 neg find mustInstanceOfSynchronization_class(problem,interpretation,element);
1438 neg find mustInstanceOfCompositeElement_class(problem,interpretation,element);
1439 neg find mustInstanceOfEntry_class(problem,interpretation,element);
1440}
1441pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
1442 find interpretation(problem,interpretation);
1443 PartialInterpretation.newElements(interpretation,element);
1444 find mayInstanceOfState_class(problem,interpretation,element);
1445 neg find mustInstanceOfFinalState_class(problem,interpretation,element);
1446 neg find mustInstanceOfRegion_class(problem,interpretation,element);
1447 neg find mustInstanceOfTransition_class(problem,interpretation,element);
1448 neg find mustInstanceOfPseudostate_class(problem,interpretation,element);
1449 neg find mustInstanceOfStatechart_class(problem,interpretation,element);
1450 neg find mustInstanceOfState_class(problem,interpretation,element);
1451}
1452
1453//////////
1454// 4.3 Relation refinement
1455//////////
1456pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition(
1457 problem:LogicProblem, interpretation:PartialInterpretation,
1458 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
1459 from: DefinedElement, to: DefinedElement)
1460{
1461 find interpretation(problem,interpretation);
1462 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
1463 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex");
1464 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
1465 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition");
1466 find mustExist(problem, interpretation, from);
1467 find mustExist(problem, interpretation, to);
1468 find mustInstanceOfVertex_class(problem,interpretation,from);
1469 find mustInstanceOfTransition_class(problem,interpretation,to);
1470 find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to);
1471 neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to);
1472}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generation.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generation.logicproblem
new file mode 100644
index 00000000..b744bf95
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generation.logicproblem
@@ -0,0 +1,171 @@
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">
3 <types xsi:type="language_1:TypeDeclaration" name="Pseudostate class" subtypes="//@types.5 //@types.6 //@types.10 //@types.11" supertypes="//@types.1" isAbstract="true"/>
4 <types xsi:type="language_1:TypeDeclaration" name="Vertex class" subtypes="//@types.0 //@types.8" isAbstract="true"/>
5 <types xsi:type="language_1:TypeDeclaration" name="Region class"/>
6 <types xsi:type="language_1:TypeDeclaration" name="Transition class"/>
7 <types xsi:type="language_1:TypeDeclaration" name="Statechart class" subtypes="//@types.13 //@types.14" supertypes="//@types.9" isAbstract="true"/>
8 <types xsi:type="language_1:TypeDeclaration" name="Entry class" supertypes="//@types.0"/>
9 <types xsi:type="language_1:TypeDeclaration" name="Synchronization class" supertypes="//@types.0"/>
10 <types xsi:type="language_1:TypeDeclaration" name="State class" supertypes="//@types.8 //@types.9 //@types.16"/>
11 <types xsi:type="language_1:TypeDeclaration" name="RegularState class" subtypes="//@types.7 //@types.12" supertypes="//@types.1" isAbstract="true"/>
12 <types xsi:type="language_1:TypeDeclaration" name="CompositeElement class" subtypes="//@types.4 //@types.7 //@types.15 //@types.16" isAbstract="true"/>
13 <types xsi:type="language_1:TypeDeclaration" name="Choice class" supertypes="//@types.0"/>
14 <types xsi:type="language_1:TypeDeclaration" name="Exit class" supertypes="//@types.0"/>
15 <types xsi:type="language_1:TypeDeclaration" name="FinalState class" supertypes="//@types.8"/>
16 <types xsi:type="language_1:TypeDefinition" name="Statechart class DefinedPart" supertypes="//@types.4 //@types.15" elements="//@elements.0"/>
17 <types xsi:type="language_1:TypeDeclaration" name="Statechart class UndefinedPart" supertypes="//@types.4 //@types.16"/>
18 <types xsi:type="language_1:TypeDefinition" name="CompositeElement class DefinedPart" subtypes="//@types.13" supertypes="//@types.9" isAbstract="true" elements="//@elements.0"/>
19 <types xsi:type="language_1:TypeDeclaration" name="CompositeElement class UndefinedPart" subtypes="//@types.14 //@types.7" supertypes="//@types.9" isAbstract="true"/>
20 <assertions name="lowerMultiplicity target Transition" annotations="//@annotations.0">
21 <value xsi:type="language_1:Forall">
22 <quantifiedVariables name="src">
23 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
24 </quantifiedVariables>
25 <expression xsi:type="language_1:Exists">
26 <quantifiedVariables name="trg 1">
27 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
28 </quantifiedVariables>
29 <expression xsi:type="language_1:And">
30 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
31 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/>
32 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@expression/@quantifiedVariables.0"/>
33 </operands>
34 </expression>
35 </expression>
36 </value>
37 </assertions>
38 <assertions name="upperMultiplicity target Transition" annotations="//@annotations.1">
39 <value xsi:type="language_1:Forall">
40 <quantifiedVariables name="src">
41 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
42 </quantifiedVariables>
43 <quantifiedVariables name="trg 1">
44 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
45 </quantifiedVariables>
46 <quantifiedVariables name="trg 2">
47 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
48 </quantifiedVariables>
49 <expression xsi:type="language_1:Impl">
50 <leftOperand xsi:type="language_1:And">
51 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
52 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
53 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
54 </operands>
55 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
56 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
57 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.2"/>
58 </operands>
59 </leftOperand>
60 <rightOperand xsi:type="language_1:Not">
61 <operand xsi:type="language_1:Distinct">
62 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
63 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.2"/>
64 </operand>
65 </rightOperand>
66 </expression>
67 </value>
68 </assertions>
69 <assertions name="upperMultiplicity source Transition" annotations="//@annotations.2">
70 <value xsi:type="language_1:Forall">
71 <quantifiedVariables name="src">
72 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
73 </quantifiedVariables>
74 <quantifiedVariables name="trg 1">
75 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
76 </quantifiedVariables>
77 <quantifiedVariables name="trg 2">
78 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
79 </quantifiedVariables>
80 <expression xsi:type="language_1:Impl">
81 <leftOperand xsi:type="language_1:And">
82 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
83 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
84 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.1"/>
85 </operands>
86 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
87 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
88 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.2"/>
89 </operands>
90 </leftOperand>
91 <rightOperand xsi:type="language_1:Not">
92 <operand xsi:type="language_1:Distinct">
93 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.1"/>
94 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.2"/>
95 </operand>
96 </rightOperand>
97 </expression>
98 </value>
99 </assertions>
100 <assertions name="oppositeReference incomingTransitions Vertex" annotations="//@annotations.3">
101 <value xsi:type="language_1:Forall">
102 <quantifiedVariables name="src">
103 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
104 </quantifiedVariables>
105 <quantifiedVariables name="trg">
106 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
107 </quantifiedVariables>
108 <expression xsi:type="language_1:Iff">
109 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
110 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
111 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
112 </leftOperand>
113 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
114 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
115 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
116 </rightOperand>
117 </expression>
118 </value>
119 </assertions>
120 <assertions name="oppositeReference outgoingTransitions Vertex" annotations="//@annotations.4">
121 <value xsi:type="language_1:Forall">
122 <quantifiedVariables name="src">
123 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
124 </quantifiedVariables>
125 <quantifiedVariables name="trg">
126 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
127 </quantifiedVariables>
128 <expression xsi:type="language_1:Iff">
129 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
130 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.0"/>
131 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.1"/>
132 </leftOperand>
133 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
134 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.1"/>
135 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.0"/>
136 </rightOperand>
137 </expression>
138 </value>
139 </assertions>
140 <relations xsi:type="language_1:RelationDeclaration" name="incomingTransitions reference Vertex">
141 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
142 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
143 </relations>
144 <relations xsi:type="language_1:RelationDeclaration" name="outgoingTransitions reference Vertex">
145 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
146 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
147 </relations>
148 <relations xsi:type="language_1:RelationDeclaration" name="vertices reference Region">
149 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
150 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
151 </relations>
152 <relations xsi:type="language_1:RelationDeclaration" name="target reference Transition">
153 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
154 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
155 </relations>
156 <relations xsi:type="language_1:RelationDeclaration" name="source reference Transition">
157 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.3"/>
158 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
159 </relations>
160 <relations xsi:type="language_1:RelationDeclaration" name="regions reference CompositeElement">
161 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.9"/>
162 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.2"/>
163 </relations>
164 <elements name="o 1" definedInType="//@types.13 //@types.15"/>
165 <containmentHierarchies typesOrderedInHierarchy="//@types.0 //@types.9 //@types.3 //@types.7 //@types.6 //@types.5 //@types.8 //@types.10 //@types.1 //@types.4 //@types.11 //@types.12 //@types.2 //@types.13 //@types.14 //@types.15 //@types.16" containmentRelations="//@relations.1 //@relations.2 //@relations.5"/>
166 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.0" relation="//@relations.3" lower="1"/>
167 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.1" relation="//@relations.3" upper="1"/>
168 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.4" upper="1"/>
169 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.3" inverseA="//@relations.0" inverseB="//@relations.3"/>
170 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.4" inverseA="//@relations.1" inverseB="//@relations.4"/>
171</language:LogicProblem>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/init.partialmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/init.partialmodel
new file mode 100644
index 00000000..ead2b44e
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/init.partialmodel
@@ -0,0 +1,106 @@
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="4" maxNewElements="4">
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 <newElements xsi:type="partialinterpretation:BooleanElement" name="true" valueSet="true" value="true"/>
35 <newElements xsi:type="partialinterpretation:BooleanElement" name="false" valueSet="true"/>
36 <partialtypeinterpratation xsi:type="partialinterpretation:PartialBooleanInterpretation" elements="//@newElements.0 //@newElements.1"/>
37 <partialtypeinterpratation xsi:type="partialinterpretation:PartialIntegerInterpretation" elements="//@openWorldElements.0"/>
38 <partialtypeinterpratation xsi:type="partialinterpretation:PartialRealInterpretation" elements="//@openWorldElements.1"/>
39 <partialtypeinterpratation xsi:type="partialinterpretation:PartialStringInterpretation" elements="//@openWorldElements.2"/>
40 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.0" supertypeInterpretation="//@partialtypeinterpratation.5">
41 <interpretationOf href="generation.logicproblem#//@types.0"/>
42 </partialtypeinterpratation>
43 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.1">
44 <interpretationOf href="generation.logicproblem#//@types.1"/>
45 </partialtypeinterpratation>
46 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.2">
47 <interpretationOf href="generation.logicproblem#//@types.2"/>
48 </partialtypeinterpratation>
49 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.3">
50 <interpretationOf href="generation.logicproblem#//@types.3"/>
51 </partialtypeinterpratation>
52 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.4" supertypeInterpretation="//@partialtypeinterpratation.13">
53 <elements href="generation.logicproblem#//@elements.0"/>
54 <interpretationOf href="generation.logicproblem#//@types.4"/>
55 </partialtypeinterpratation>
56 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.5" supertypeInterpretation="//@partialtypeinterpratation.4 //@partialtypeinterpratation.5">
57 <interpretationOf href="generation.logicproblem#//@types.5"/>
58 </partialtypeinterpratation>
59 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.6" supertypeInterpretation="//@partialtypeinterpratation.4 //@partialtypeinterpratation.5">
60 <interpretationOf href="generation.logicproblem#//@types.6"/>
61 </partialtypeinterpratation>
62 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.7" supertypeInterpretation="//@partialtypeinterpratation.12 //@partialtypeinterpratation.5 //@partialtypeinterpratation.13 //@partialtypeinterpratation.18">
63 <interpretationOf href="generation.logicproblem#//@types.7"/>
64 </partialtypeinterpratation>
65 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.8" supertypeInterpretation="//@partialtypeinterpratation.5">
66 <interpretationOf href="generation.logicproblem#//@types.8"/>
67 </partialtypeinterpratation>
68 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.9">
69 <elements href="generation.logicproblem#//@elements.0"/>
70 <interpretationOf href="generation.logicproblem#//@types.9"/>
71 </partialtypeinterpratation>
72 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.10" supertypeInterpretation="//@partialtypeinterpratation.4 //@partialtypeinterpratation.5">
73 <interpretationOf href="generation.logicproblem#//@types.10"/>
74 </partialtypeinterpratation>
75 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.11" supertypeInterpretation="//@partialtypeinterpratation.4 //@partialtypeinterpratation.5">
76 <interpretationOf href="generation.logicproblem#//@types.11"/>
77 </partialtypeinterpratation>
78 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.12" supertypeInterpretation="//@partialtypeinterpratation.12 //@partialtypeinterpratation.5">
79 <interpretationOf href="generation.logicproblem#//@types.12"/>
80 </partialtypeinterpratation>
81 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.13" supertypeInterpretation="//@partialtypeinterpratation.8 //@partialtypeinterpratation.13 //@partialtypeinterpratation.18">
82 <interpretationOf href="generation.logicproblem#//@types.14"/>
83 </partialtypeinterpratation>
84 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.14" supertypeInterpretation="//@partialtypeinterpratation.13">
85 <interpretationOf href="generation.logicproblem#//@types.16"/>
86 </partialtypeinterpratation>
87 <openWorldElements xsi:type="partialinterpretation:IntegerElement" name="New Integers"/>
88 <openWorldElements xsi:type="partialinterpretation:RealElement" name="New Reals"/>
89 <openWorldElements xsi:type="partialinterpretation:StringElement" name="New Strings"/>
90 <openWorldElements name="New Objects"/>
91 <scopes targetTypeInterpretation="//@partialtypeinterpratation.4"/>
92 <scopes targetTypeInterpretation="//@partialtypeinterpratation.5"/>
93 <scopes targetTypeInterpretation="//@partialtypeinterpratation.6"/>
94 <scopes targetTypeInterpretation="//@partialtypeinterpratation.7"/>
95 <scopes targetTypeInterpretation="//@partialtypeinterpratation.8"/>
96 <scopes targetTypeInterpretation="//@partialtypeinterpratation.9"/>
97 <scopes targetTypeInterpretation="//@partialtypeinterpratation.10"/>
98 <scopes targetTypeInterpretation="//@partialtypeinterpratation.11"/>
99 <scopes targetTypeInterpretation="//@partialtypeinterpratation.12"/>
100 <scopes targetTypeInterpretation="//@partialtypeinterpratation.13"/>
101 <scopes targetTypeInterpretation="//@partialtypeinterpratation.14"/>
102 <scopes targetTypeInterpretation="//@partialtypeinterpratation.15"/>
103 <scopes targetTypeInterpretation="//@partialtypeinterpratation.16"/>
104 <scopes targetTypeInterpretation="//@partialtypeinterpratation.17"/>
105 <scopes targetTypeInterpretation="//@partialtypeinterpratation.18"/>
106</partialinterpretation:PartialInterpretation>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt
new file mode 100644
index 00000000..4d22da6b
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt
@@ -0,0 +1 @@
Model generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finished \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.gml
new file mode 100644
index 00000000..4c5b2e7d
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.gml
@@ -0,0 +1,479 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 277.20000000000005
9 h 82
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 Statechart class DefinedPart
30 CompositeElement class DefinedPart
31 Statechart class
32 CompositeElement class
33 "
34 fontSize 14
35 fontName "Consolas"
36 alignment "left"
37 anchor "tl"
38 borderDistance 6
39 ]
40 ]
41
42 node
43 [
44 id 1
45 graphics
46 [
47 w 41.800000000000004
48 h 26
49 type "rectangle"
50 fill "#FFFFFF"
51 fill2 "#FFFFFF"
52 outline "#000000"
53 ]
54 LabelGraphics
55 [
56 text "true"
57 outline "#000000"
58 fill "#FFFFFF"
59 fontSize 16
60 fontName "Monospace"
61 autoSizePolicy "node_width"
62 anchor "t"
63 borderDistance 0.0
64 ]
65 LabelGraphics
66 [
67 text "
68 "
69 fontSize 14
70 fontName "Consolas"
71 alignment "left"
72 anchor "tl"
73 borderDistance 6
74 ]
75 ]
76
77 node
78 [
79 id 2
80 graphics
81 [
82 w 50.6
83 h 26
84 type "rectangle"
85 fill "#FFFFFF"
86 fill2 "#FFFFFF"
87 outline "#000000"
88 ]
89 LabelGraphics
90 [
91 text "false"
92 outline "#000000"
93 fill "#FFFFFF"
94 fontSize 16
95 fontName "Monospace"
96 autoSizePolicy "node_width"
97 anchor "t"
98 borderDistance 0.0
99 ]
100 LabelGraphics
101 [
102 text "
103 "
104 fontSize 14
105 fontName "Consolas"
106 alignment "left"
107 anchor "tl"
108 borderDistance 6
109 ]
110 ]
111
112 node
113 [
114 id 3
115 graphics
116 [
117 w 107.80000000000001
118 h 40
119 type "rectangle"
120 fill "#FFFFFF"
121 fill2 "#FFFFFF"
122 outline "#000000"
123 ]
124 LabelGraphics
125 [
126 text "null"
127 outline "#000000"
128 fill "#FFFFFF"
129 fontSize 16
130 fontName "Monospace"
131 autoSizePolicy "node_width"
132 anchor "t"
133 borderDistance 0.0
134 ]
135 LabelGraphics
136 [
137 text "
138 Region class
139 "
140 fontSize 14
141 fontName "Consolas"
142 alignment "left"
143 anchor "tl"
144 borderDistance 6
145 ]
146 ]
147
148 node
149 [
150 id 4
151 graphics
152 [
153 w 107.80000000000001
154 h 40
155 type "rectangle"
156 fill "#FFFFFF"
157 fill2 "#FFFFFF"
158 outline "#000000"
159 ]
160 LabelGraphics
161 [
162 text "null"
163 outline "#000000"
164 fill "#FFFFFF"
165 fontSize 16
166 fontName "Monospace"
167 autoSizePolicy "node_width"
168 anchor "t"
169 borderDistance 0.0
170 ]
171 LabelGraphics
172 [
173 text "
174 Region class
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 154.0
190 h 68
191 type "rectangle"
192 fill "#FFFFFF"
193 fill2 "#FFFFFF"
194 outline "#000000"
195 ]
196 LabelGraphics
197 [
198 text "null"
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 Vertex class
211 RegularState class
212 FinalState class
213 "
214 fontSize 14
215 fontName "Consolas"
216 alignment "left"
217 anchor "tl"
218 borderDistance 6
219 ]
220 ]
221
222 node
223 [
224 id 6
225 graphics
226 [
227 w 154.0
228 h 68
229 type "rectangle"
230 fill "#FFFFFF"
231 fill2 "#FFFFFF"
232 outline "#000000"
233 ]
234 LabelGraphics
235 [
236 text "null"
237 outline "#000000"
238 fill "#FFFFFF"
239 fontSize 16
240 fontName "Monospace"
241 autoSizePolicy "node_width"
242 anchor "t"
243 borderDistance 0.0
244 ]
245 LabelGraphics
246 [
247 text "
248 Vertex class
249 RegularState class
250 FinalState class
251 "
252 fontSize 14
253 fontName "Consolas"
254 alignment "left"
255 anchor "tl"
256 borderDistance 6
257 ]
258 ]
259
260 node
261 [
262 id 7
263 graphics
264 [
265 w 112.2
266 h 26
267 type "rectangle"
268 fill "#FFFFFF"
269 fill2 "#FFFFFF"
270 outline "#000000"
271 ]
272 LabelGraphics
273 [
274 text "New Integers"
275 outline "#000000"
276 fill "#FFFFFF"
277 fontSize 16
278 fontName "Monospace"
279 autoSizePolicy "node_width"
280 anchor "t"
281 borderDistance 0.0
282 ]
283 LabelGraphics
284 [
285 text "
286 "
287 fontSize 14
288 fontName "Consolas"
289 alignment "left"
290 anchor "tl"
291 borderDistance 6
292 ]
293 ]
294
295 node
296 [
297 id 8
298 graphics
299 [
300 w 85.80000000000001
301 h 26
302 type "rectangle"
303 fill "#FFFFFF"
304 fill2 "#FFFFFF"
305 outline "#000000"
306 ]
307 LabelGraphics
308 [
309 text "New Reals"
310 outline "#000000"
311 fill "#FFFFFF"
312 fontSize 16
313 fontName "Monospace"
314 autoSizePolicy "node_width"
315 anchor "t"
316 borderDistance 0.0
317 ]
318 LabelGraphics
319 [
320 text "
321 "
322 fontSize 14
323 fontName "Consolas"
324 alignment "left"
325 anchor "tl"
326 borderDistance 6
327 ]
328 ]
329
330 node
331 [
332 id 9
333 graphics
334 [
335 w 103.4
336 h 26
337 type "rectangle"
338 fill "#FFFFFF"
339 fill2 "#FFFFFF"
340 outline "#000000"
341 ]
342 LabelGraphics
343 [
344 text "New Strings"
345 outline "#000000"
346 fill "#FFFFFF"
347 fontSize 16
348 fontName "Monospace"
349 autoSizePolicy "node_width"
350 anchor "t"
351 borderDistance 0.0
352 ]
353 LabelGraphics
354 [
355 text "
356 "
357 fontSize 14
358 fontName "Consolas"
359 alignment "left"
360 anchor "tl"
361 borderDistance 6
362 ]
363 ]
364
365 node
366 [
367 id 10
368 graphics
369 [
370 w 103.4
371 h 26
372 type "rectangle"
373 fill "#FFFFFF"
374 fill2 "#FFFFFF"
375 outline "#000000"
376 ]
377 LabelGraphics
378 [
379 text "New Objects"
380 outline "#000000"
381 fill "#FFFFFF"
382 fontSize 16
383 fontName "Monospace"
384 autoSizePolicy "node_width"
385 anchor "t"
386 borderDistance 0.0
387 ]
388 LabelGraphics
389 [
390 text "
391 "
392 fontSize 14
393 fontName "Consolas"
394 alignment "left"
395 anchor "tl"
396 borderDistance 6
397 ]
398 ]
399 edge
400 [
401 source 4
402 target 5
403 graphics
404 [
405 fill "#000000"
406 width 3
407 targetArrow "standard"
408 ]
409 LabelGraphics
410 [
411 text "vertices reference Region"
412 fontSize 14
413 fontName "Consolas"
414 configuration "AutoFlippingLabel"
415 model "six_pos"
416 position "thead"
417 ]
418 ]
419 edge
420 [
421 source 3
422 target 6
423 graphics
424 [
425 fill "#000000"
426 width 3
427 targetArrow "standard"
428 ]
429 LabelGraphics
430 [
431 text "vertices reference Region"
432 fontSize 14
433 fontName "Consolas"
434 configuration "AutoFlippingLabel"
435 model "six_pos"
436 position "thead"
437 ]
438 ]
439 edge
440 [
441 source 0
442 target 3
443 graphics
444 [
445 fill "#000000"
446 width 3
447 targetArrow "standard"
448 ]
449 LabelGraphics
450 [
451 text "regions reference CompositeElement"
452 fontSize 14
453 fontName "Consolas"
454 configuration "AutoFlippingLabel"
455 model "six_pos"
456 position "thead"
457 ]
458 ]
459 edge
460 [
461 source 0
462 target 4
463 graphics
464 [
465 fill "#000000"
466 width 3
467 targetArrow "standard"
468 ]
469 LabelGraphics
470 [
471 text "regions reference CompositeElement"
472 fontSize 14
473 fontName "Consolas"
474 configuration "AutoFlippingLabel"
475 model "six_pos"
476 position "thead"
477 ]
478 ]
479]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.png
new file mode 100644
index 00000000..d9b7c988
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi
new file mode 100644
index 00000000..f6b5a41e
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="ASCII"?>
2<yakindu:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:yakindu="YakinduMetamodel">
3 <regions>
4 <vertices xsi:type="yakindu:FinalState"/>
5 </regions>
6 <regions>
7 <vertices xsi:type="yakindu:FinalState"/>
8 </regions>
9</yakindu:Statechart>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml
new file mode 100644
index 00000000..f07ae0db
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml
@@ -0,0 +1,479 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 277.20000000000005
9 h 82
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 Statechart class DefinedPart
30 CompositeElement class DefinedPart
31 Statechart class
32 CompositeElement class
33 "
34 fontSize 14
35 fontName "Consolas"
36 alignment "left"
37 anchor "tl"
38 borderDistance 6
39 ]
40 ]
41
42 node
43 [
44 id 1
45 graphics
46 [
47 w 41.800000000000004
48 h 26
49 type "rectangle"
50 fill "#FFFFFF"
51 fill2 "#FFFFFF"
52 outline "#000000"
53 ]
54 LabelGraphics
55 [
56 text "true"
57 outline "#000000"
58 fill "#FFFFFF"
59 fontSize 16
60 fontName "Monospace"
61 autoSizePolicy "node_width"
62 anchor "t"
63 borderDistance 0.0
64 ]
65 LabelGraphics
66 [
67 text "
68 "
69 fontSize 14
70 fontName "Consolas"
71 alignment "left"
72 anchor "tl"
73 borderDistance 6
74 ]
75 ]
76
77 node
78 [
79 id 2
80 graphics
81 [
82 w 50.6
83 h 26
84 type "rectangle"
85 fill "#FFFFFF"
86 fill2 "#FFFFFF"
87 outline "#000000"
88 ]
89 LabelGraphics
90 [
91 text "false"
92 outline "#000000"
93 fill "#FFFFFF"
94 fontSize 16
95 fontName "Monospace"
96 autoSizePolicy "node_width"
97 anchor "t"
98 borderDistance 0.0
99 ]
100 LabelGraphics
101 [
102 text "
103 "
104 fontSize 14
105 fontName "Consolas"
106 alignment "left"
107 anchor "tl"
108 borderDistance 6
109 ]
110 ]
111
112 node
113 [
114 id 3
115 graphics
116 [
117 w 107.80000000000001
118 h 40
119 type "rectangle"
120 fill "#FFFFFF"
121 fill2 "#FFFFFF"
122 outline "#000000"
123 ]
124 LabelGraphics
125 [
126 text "null"
127 outline "#000000"
128 fill "#FFFFFF"
129 fontSize 16
130 fontName "Monospace"
131 autoSizePolicy "node_width"
132 anchor "t"
133 borderDistance 0.0
134 ]
135 LabelGraphics
136 [
137 text "
138 Region class
139 "
140 fontSize 14
141 fontName "Consolas"
142 alignment "left"
143 anchor "tl"
144 borderDistance 6
145 ]
146 ]
147
148 node
149 [
150 id 4
151 graphics
152 [
153 w 107.80000000000001
154 h 40
155 type "rectangle"
156 fill "#FFFFFF"
157 fill2 "#FFFFFF"
158 outline "#000000"
159 ]
160 LabelGraphics
161 [
162 text "null"
163 outline "#000000"
164 fill "#FFFFFF"
165 fontSize 16
166 fontName "Monospace"
167 autoSizePolicy "node_width"
168 anchor "t"
169 borderDistance 0.0
170 ]
171 LabelGraphics
172 [
173 text "
174 Region class
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 154.0
190 h 68
191 type "rectangle"
192 fill "#FFFFFF"
193 fill2 "#FFFFFF"
194 outline "#000000"
195 ]
196 LabelGraphics
197 [
198 text "null"
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 Vertex class
211 RegularState class
212 FinalState class
213 "
214 fontSize 14
215 fontName "Consolas"
216 alignment "left"
217 anchor "tl"
218 borderDistance 6
219 ]
220 ]
221
222 node
223 [
224 id 6
225 graphics
226 [
227 w 177.10000000000002
228 h 68
229 type "rectangle"
230 fill "#FFFFFF"
231 fill2 "#FFFFFF"
232 outline "#000000"
233 ]
234 LabelGraphics
235 [
236 text "null"
237 outline "#000000"
238 fill "#FFFFFF"
239 fontSize 16
240 fontName "Monospace"
241 autoSizePolicy "node_width"
242 anchor "t"
243 borderDistance 0.0
244 ]
245 LabelGraphics
246 [
247 text "
248 Pseudostate class
249 Vertex class
250 Synchronization class
251 "
252 fontSize 14
253 fontName "Consolas"
254 alignment "left"
255 anchor "tl"
256 borderDistance 6
257 ]
258 ]
259
260 node
261 [
262 id 7
263 graphics
264 [
265 w 112.2
266 h 26
267 type "rectangle"
268 fill "#FFFFFF"
269 fill2 "#FFFFFF"
270 outline "#000000"
271 ]
272 LabelGraphics
273 [
274 text "New Integers"
275 outline "#000000"
276 fill "#FFFFFF"
277 fontSize 16
278 fontName "Monospace"
279 autoSizePolicy "node_width"
280 anchor "t"
281 borderDistance 0.0
282 ]
283 LabelGraphics
284 [
285 text "
286 "
287 fontSize 14
288 fontName "Consolas"
289 alignment "left"
290 anchor "tl"
291 borderDistance 6
292 ]
293 ]
294
295 node
296 [
297 id 8
298 graphics
299 [
300 w 85.80000000000001
301 h 26
302 type "rectangle"
303 fill "#FFFFFF"
304 fill2 "#FFFFFF"
305 outline "#000000"
306 ]
307 LabelGraphics
308 [
309 text "New Reals"
310 outline "#000000"
311 fill "#FFFFFF"
312 fontSize 16
313 fontName "Monospace"
314 autoSizePolicy "node_width"
315 anchor "t"
316 borderDistance 0.0
317 ]
318 LabelGraphics
319 [
320 text "
321 "
322 fontSize 14
323 fontName "Consolas"
324 alignment "left"
325 anchor "tl"
326 borderDistance 6
327 ]
328 ]
329
330 node
331 [
332 id 9
333 graphics
334 [
335 w 103.4
336 h 26
337 type "rectangle"
338 fill "#FFFFFF"
339 fill2 "#FFFFFF"
340 outline "#000000"
341 ]
342 LabelGraphics
343 [
344 text "New Strings"
345 outline "#000000"
346 fill "#FFFFFF"
347 fontSize 16
348 fontName "Monospace"
349 autoSizePolicy "node_width"
350 anchor "t"
351 borderDistance 0.0
352 ]
353 LabelGraphics
354 [
355 text "
356 "
357 fontSize 14
358 fontName "Consolas"
359 alignment "left"
360 anchor "tl"
361 borderDistance 6
362 ]
363 ]
364
365 node
366 [
367 id 10
368 graphics
369 [
370 w 103.4
371 h 26
372 type "rectangle"
373 fill "#FFFFFF"
374 fill2 "#FFFFFF"
375 outline "#000000"
376 ]
377 LabelGraphics
378 [
379 text "New Objects"
380 outline "#000000"
381 fill "#FFFFFF"
382 fontSize 16
383 fontName "Monospace"
384 autoSizePolicy "node_width"
385 anchor "t"
386 borderDistance 0.0
387 ]
388 LabelGraphics
389 [
390 text "
391 "
392 fontSize 14
393 fontName "Consolas"
394 alignment "left"
395 anchor "tl"
396 borderDistance 6
397 ]
398 ]
399 edge
400 [
401 source 4
402 target 5
403 graphics
404 [
405 fill "#000000"
406 width 3
407 targetArrow "standard"
408 ]
409 LabelGraphics
410 [
411 text "vertices reference Region"
412 fontSize 14
413 fontName "Consolas"
414 configuration "AutoFlippingLabel"
415 model "six_pos"
416 position "thead"
417 ]
418 ]
419 edge
420 [
421 source 3
422 target 6
423 graphics
424 [
425 fill "#000000"
426 width 3
427 targetArrow "standard"
428 ]
429 LabelGraphics
430 [
431 text "vertices reference Region"
432 fontSize 14
433 fontName "Consolas"
434 configuration "AutoFlippingLabel"
435 model "six_pos"
436 position "thead"
437 ]
438 ]
439 edge
440 [
441 source 0
442 target 3
443 graphics
444 [
445 fill "#000000"
446 width 3
447 targetArrow "standard"
448 ]
449 LabelGraphics
450 [
451 text "regions reference CompositeElement"
452 fontSize 14
453 fontName "Consolas"
454 configuration "AutoFlippingLabel"
455 model "six_pos"
456 position "thead"
457 ]
458 ]
459 edge
460 [
461 source 0
462 target 4
463 graphics
464 [
465 fill "#000000"
466 width 3
467 targetArrow "standard"
468 ]
469 LabelGraphics
470 [
471 text "regions reference CompositeElement"
472 fontSize 14
473 fontName "Consolas"
474 configuration "AutoFlippingLabel"
475 model "six_pos"
476 position "thead"
477 ]
478 ]
479]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.png
new file mode 100644
index 00000000..38dadff8
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi
new file mode 100644
index 00000000..bc0e55cc
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="ASCII"?>
2<yakindu:Statechart xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:yakindu="YakinduMetamodel">
3 <regions>
4 <vertices xsi:type="yakindu:Synchronization"/>
5 </regions>
6 <regions>
7 <vertices xsi:type="yakindu:FinalState"/>
8 </regions>
9</yakindu:Statechart>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv
new file mode 100644
index 00000000..ee8829e5
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv
@@ -0,0 +1,2 @@
1Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
21;1;ModelResultImpl;335;2777;2544;7194393100;105;140;61;186;9;0;3
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.properties b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.properties
new file mode 100644
index 00000000..58c2dbb6
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.properties
@@ -0,0 +1,4 @@
1#
2
3pluginName = FAM Model
4providerName = www.example.org
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml
new file mode 100644
index 00000000..efdbb9b2
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml
@@ -0,0 +1,26 @@
1<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.0"?><!--
2--><plugin>
3 <extension point="org.eclipse.emf.ecore.generated_package">
4 <!-- @generated fam -->
5 <package
6 uri="FamMetamodel"
7 class="ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage"
8 genModel="metamodels/fam.genmodel"/>
9 </extension>
10 <extension point="org.eclipse.emf.ecore.generated_package">
11 <!-- @generated yakindu -->
12 <package
13 uri="YakinduMetamodel"
14 class="ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage"
15 genModel="metamodels/yakindu.genmodel"/>
16 </extension>
17
18 <extension point="org.eclipse.emf.ecore.generated_package">
19 <!-- @generated filesystem -->
20 <package
21 uri="FileSystemMetamodel"
22 class="ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage"
23 genModel="metamodels/filesystem.genmodel"/>
24 </extension>
25
26 </plugin>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/Ecore.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/Ecore.vql
new file mode 100644
index 00000000..9af35b50
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/Ecore.vql
@@ -0,0 +1,29 @@
1package ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries
2
3import epackage "http://www.eclipse.org/emf/2002/Ecore"
4
5pattern directSupertype(a: EClass, b:EClass) {
6 EClass.eSuperTypes(a,b);
7}
8
9@Constraint(key={a}, severity="error", message="error")
10pattern loopInInheritence(a: EClass) {
11 find directSupertype+(a,a);
12}
13
14pattern opposite(a:EReference, b: EReference) {
15 EReference.eOpposite(a,b);
16}
17@Constraint(key={a}, severity="error", message="error")
18pattern oppositeDifferentClass(a:EReference) {
19 EReference.eOpposite(a,b);
20 EReference.eContainingClass(a,aContaining);
21 EReference.eType(b,bTarget);
22 aContaining != bTarget;
23}
24
25@Constraint(key={a}, severity="error", message="error")
26pattern nonSymmetricOpposite(a:EReference, b:EReference) {
27 find opposite(a,b);
28 neg find opposite(b,a);
29} \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FAMTerminator.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FAMTerminator.java
new file mode 100644
index 00000000..686af44b
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FAMTerminator.java
@@ -0,0 +1,52 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>FAM Terminator</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData <em>Data</em>}</li>
17 * </ul>
18 *
19 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFAMTerminator()
20 * @model
21 * @generated
22 */
23public interface FAMTerminator extends EObject {
24 /**
25 * Returns the value of the '<em><b>Data</b></em>' container reference.
26 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator <em>Terminator</em>}'.
27 * <!-- begin-user-doc -->
28 * <p>
29 * If the meaning of the '<em>Data</em>' container reference isn't clear,
30 * there really should be more of a description here...
31 * </p>
32 * <!-- end-user-doc -->
33 * @return the value of the '<em>Data</em>' container reference.
34 * @see #setData(FunctionalData)
35 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFAMTerminator_Data()
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator
37 * @model opposite="terminator" transient="false"
38 * @generated
39 */
40 FunctionalData getData();
41
42 /**
43 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData <em>Data</em>}' container reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @param value the new value of the '<em>Data</em>' container reference.
47 * @see #getData()
48 * @generated
49 */
50 void setData(FunctionalData value);
51
52} // FAMTerminator
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/Function.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/Function.java
new file mode 100644
index 00000000..1fed3a2d
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/Function.java
@@ -0,0 +1,61 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.common.util.EList;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Function</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements <em>Sub Elements</em>}</li>
17 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getType <em>Type</em>}</li>
18 * </ul>
19 *
20 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunction()
21 * @model
22 * @generated
23 */
24public interface Function extends FunctionalElement {
25 /**
26 * Returns the value of the '<em><b>Sub Elements</b></em>' containment reference list.
27 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement}.
28 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent <em>Parent</em>}'.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Sub Elements</em>' containment reference list isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Sub Elements</em>' containment reference list.
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunction_SubElements()
37 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent
38 * @model opposite="parent" containment="true"
39 * @generated
40 */
41 EList<FunctionalElement> getSubElements();
42
43 /**
44 * Returns the value of the '<em><b>Type</b></em>' attribute.
45 * The literals are from the enumeration {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType}.
46 * <!-- begin-user-doc -->
47 * <p>
48 * If the meaning of the '<em>Type</em>' attribute isn't clear,
49 * there really should be more of a description here...
50 * </p>
51 * <!-- end-user-doc -->
52 * @return the value of the '<em>Type</em>' attribute.
53 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
54 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunction_Type()
55 * @model required="true" transient="true" changeable="false" volatile="true" derived="true"
56 * annotation="org.eclipse.viatra.query.querybasedfeature patternFQN='ca.mcgill.ecse.dslreasoner.standalone.test.xyz.type'"
57 * @generated
58 */
59 FunctionType getType();
60
61} // Function
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionType.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionType.java
new file mode 100644
index 00000000..71e3062d
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionType.java
@@ -0,0 +1,241 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Function Type</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionType()
17 * @model
18 * @generated
19 */
20public enum FunctionType implements Enumerator {
21 /**
22 * The '<em><b>Root</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #ROOT_VALUE
26 * @generated
27 * @ordered
28 */
29 ROOT(0, "Root", "Root"),
30
31 /**
32 * The '<em><b>Intermediate</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #INTERMEDIATE_VALUE
36 * @generated
37 * @ordered
38 */
39 INTERMEDIATE(1, "Intermediate", "Intermediate"),
40
41 /**
42 * The '<em><b>Leaf</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #LEAF_VALUE
46 * @generated
47 * @ordered
48 */
49 LEAF(2, "Leaf", "Leaf");
50
51 /**
52 * The '<em><b>Root</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of '<em><b>Root</b></em>' literal object isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @see #ROOT
60 * @model name="Root"
61 * @generated
62 * @ordered
63 */
64 public static final int ROOT_VALUE = 0;
65
66 /**
67 * The '<em><b>Intermediate</b></em>' literal value.
68 * <!-- begin-user-doc -->
69 * <p>
70 * If the meaning of '<em><b>Intermediate</b></em>' literal object isn't clear,
71 * there really should be more of a description here...
72 * </p>
73 * <!-- end-user-doc -->
74 * @see #INTERMEDIATE
75 * @model name="Intermediate"
76 * @generated
77 * @ordered
78 */
79 public static final int INTERMEDIATE_VALUE = 1;
80
81 /**
82 * The '<em><b>Leaf</b></em>' literal value.
83 * <!-- begin-user-doc -->
84 * <p>
85 * If the meaning of '<em><b>Leaf</b></em>' literal object isn't clear,
86 * there really should be more of a description here...
87 * </p>
88 * <!-- end-user-doc -->
89 * @see #LEAF
90 * @model name="Leaf"
91 * @generated
92 * @ordered
93 */
94 public static final int LEAF_VALUE = 2;
95
96 /**
97 * An array of all the '<em><b>Function Type</b></em>' enumerators.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 private static final FunctionType[] VALUES_ARRAY =
103 new FunctionType[] {
104 ROOT,
105 INTERMEDIATE,
106 LEAF,
107 };
108
109 /**
110 * A public read-only list of all the '<em><b>Function Type</b></em>' enumerators.
111 * <!-- begin-user-doc -->
112 * <!-- end-user-doc -->
113 * @generated
114 */
115 public static final List<FunctionType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
116
117 /**
118 * Returns the '<em><b>Function Type</b></em>' literal with the specified literal value.
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @param literal the literal.
122 * @return the matching enumerator or <code>null</code>.
123 * @generated
124 */
125 public static FunctionType get(String literal) {
126 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
127 FunctionType result = VALUES_ARRAY[i];
128 if (result.toString().equals(literal)) {
129 return result;
130 }
131 }
132 return null;
133 }
134
135 /**
136 * Returns the '<em><b>Function Type</b></em>' literal with the specified name.
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @param name the name.
140 * @return the matching enumerator or <code>null</code>.
141 * @generated
142 */
143 public static FunctionType getByName(String name) {
144 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
145 FunctionType result = VALUES_ARRAY[i];
146 if (result.getName().equals(name)) {
147 return result;
148 }
149 }
150 return null;
151 }
152
153 /**
154 * Returns the '<em><b>Function Type</b></em>' literal with the specified integer value.
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @param value the integer value.
158 * @return the matching enumerator or <code>null</code>.
159 * @generated
160 */
161 public static FunctionType get(int value) {
162 switch (value) {
163 case ROOT_VALUE: return ROOT;
164 case INTERMEDIATE_VALUE: return INTERMEDIATE;
165 case LEAF_VALUE: return LEAF;
166 }
167 return null;
168 }
169
170 /**
171 * <!-- begin-user-doc -->
172 * <!-- end-user-doc -->
173 * @generated
174 */
175 private final int value;
176
177 /**
178 * <!-- begin-user-doc -->
179 * <!-- end-user-doc -->
180 * @generated
181 */
182 private final String name;
183
184 /**
185 * <!-- begin-user-doc -->
186 * <!-- end-user-doc -->
187 * @generated
188 */
189 private final String literal;
190
191 /**
192 * Only this class can construct instances.
193 * <!-- begin-user-doc -->
194 * <!-- end-user-doc -->
195 * @generated
196 */
197 private FunctionType(int value, String name, String literal) {
198 this.value = value;
199 this.name = name;
200 this.literal = literal;
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 public int getValue() {
209 return value;
210 }
211
212 /**
213 * <!-- begin-user-doc -->
214 * <!-- end-user-doc -->
215 * @generated
216 */
217 public String getName() {
218 return name;
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 public String getLiteral() {
227 return literal;
228 }
229
230 /**
231 * Returns the literal value of the enumerator, which is its string representation.
232 * <!-- begin-user-doc -->
233 * <!-- end-user-doc -->
234 * @generated
235 */
236 @Override
237 public String toString() {
238 return literal;
239 }
240
241} //FunctionType
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalArchitectureModel.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalArchitectureModel.java
new file mode 100644
index 00000000..d1717a9f
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalArchitectureModel.java
@@ -0,0 +1,42 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Functional Architecture Model</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel#getRootElements <em>Root Elements</em>}</li>
19 * </ul>
20 *
21 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalArchitectureModel()
22 * @model
23 * @generated
24 */
25public interface FunctionalArchitectureModel extends EObject {
26 /**
27 * Returns the value of the '<em><b>Root Elements</b></em>' containment reference list.
28 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement}.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Root Elements</em>' containment reference list isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Root Elements</em>' containment reference list.
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalArchitectureModel_RootElements()
37 * @model containment="true"
38 * @generated
39 */
40 EList<FunctionalElement> getRootElements();
41
42} // FunctionalArchitectureModel
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalData.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalData.java
new file mode 100644
index 00000000..675318a8
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalData.java
@@ -0,0 +1,81 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Functional Data</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator <em>Terminator</em>}</li>
17 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface <em>Interface</em>}</li>
18 * </ul>
19 *
20 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalData()
21 * @model abstract="true"
22 * @generated
23 */
24public interface FunctionalData extends EObject {
25 /**
26 * Returns the value of the '<em><b>Terminator</b></em>' containment reference.
27 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData <em>Data</em>}'.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>Terminator</em>' containment reference isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Terminator</em>' containment reference.
35 * @see #setTerminator(FAMTerminator)
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalData_Terminator()
37 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData
38 * @model opposite="data" containment="true"
39 * @generated
40 */
41 FAMTerminator getTerminator();
42
43 /**
44 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator <em>Terminator</em>}' containment reference.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @param value the new value of the '<em>Terminator</em>' containment reference.
48 * @see #getTerminator()
49 * @generated
50 */
51 void setTerminator(FAMTerminator value);
52
53 /**
54 * Returns the value of the '<em><b>Interface</b></em>' container reference.
55 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData <em>Data</em>}'.
56 * <!-- begin-user-doc -->
57 * <p>
58 * If the meaning of the '<em>Interface</em>' container reference isn't clear,
59 * there really should be more of a description here...
60 * </p>
61 * <!-- end-user-doc -->
62 * @return the value of the '<em>Interface</em>' container reference.
63 * @see #setInterface(FunctionalInterface)
64 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalData_Interface()
65 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData
66 * @model opposite="data" transient="false"
67 * @generated
68 */
69 FunctionalInterface getInterface();
70
71 /**
72 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface <em>Interface</em>}' container reference.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @param value the new value of the '<em>Interface</em>' container reference.
76 * @see #getInterface()
77 * @generated
78 */
79 void setInterface(FunctionalInterface value);
80
81} // FunctionalData
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalElement.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalElement.java
new file mode 100644
index 00000000..c3ed76d6
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalElement.java
@@ -0,0 +1,109 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Functional Element</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface <em>Interface</em>}</li>
17 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getModel <em>Model</em>}</li>
18 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent <em>Parent</em>}</li>
19 * </ul>
20 *
21 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalElement()
22 * @model abstract="true"
23 * @generated
24 */
25public interface FunctionalElement extends EObject {
26 /**
27 * Returns the value of the '<em><b>Interface</b></em>' containment reference.
28 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement <em>Element</em>}'.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Interface</em>' containment reference isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Interface</em>' containment reference.
36 * @see #setInterface(FunctionalInterface)
37 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalElement_Interface()
38 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement
39 * @model opposite="element" containment="true"
40 * @generated
41 */
42 FunctionalInterface getInterface();
43
44 /**
45 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface <em>Interface</em>}' containment reference.
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @param value the new value of the '<em>Interface</em>' containment reference.
49 * @see #getInterface()
50 * @generated
51 */
52 void setInterface(FunctionalInterface value);
53
54 /**
55 * Returns the value of the '<em><b>Model</b></em>' reference.
56 * <!-- begin-user-doc -->
57 * <p>
58 * If the meaning of the '<em>Model</em>' reference isn't clear,
59 * there really should be more of a description here...
60 * </p>
61 * <!-- end-user-doc -->
62 * @return the value of the '<em>Model</em>' reference.
63 * @see #setModel(FunctionalArchitectureModel)
64 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalElement_Model()
65 * @model required="true" transient="true" volatile="true" derived="true"
66 * annotation="org.eclipse.viatra.query.querybasedfeature patternFQN='ca.mcgill.ecse.dslreasoner.standalone.test.xyz.model'"
67 * @generated
68 */
69 FunctionalArchitectureModel getModel();
70
71 /**
72 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getModel <em>Model</em>}' reference.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @param value the new value of the '<em>Model</em>' reference.
76 * @see #getModel()
77 * @generated
78 */
79 void setModel(FunctionalArchitectureModel value);
80
81 /**
82 * Returns the value of the '<em><b>Parent</b></em>' container reference.
83 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements <em>Sub Elements</em>}'.
84 * <!-- begin-user-doc -->
85 * <p>
86 * If the meaning of the '<em>Parent</em>' container reference isn't clear,
87 * there really should be more of a description here...
88 * </p>
89 * <!-- end-user-doc -->
90 * @return the value of the '<em>Parent</em>' container reference.
91 * @see #setParent(Function)
92 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalElement_Parent()
93 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements
94 * @model opposite="subElements" transient="false"
95 * @generated
96 */
97 Function getParent();
98
99 /**
100 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent <em>Parent</em>}' container reference.
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @param value the new value of the '<em>Parent</em>' container reference.
104 * @see #getParent()
105 * @generated
106 */
107 void setParent(Function value);
108
109} // FunctionalElement
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInput.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInput.java
new file mode 100644
index 00000000..de629b29
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInput.java
@@ -0,0 +1,42 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.common.util.EList;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Functional Input</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks <em>Incoming Links</em>}</li>
17 * </ul>
18 *
19 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInput()
20 * @model
21 * @generated
22 */
23public interface FunctionalInput extends FunctionalData {
24 /**
25 * Returns the value of the '<em><b>Incoming Links</b></em>' reference list.
26 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink}.
27 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo <em>To</em>}'.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>Incoming Links</em>' reference list isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Incoming Links</em>' reference list.
35 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInput_IncomingLinks()
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo
37 * @model opposite="to"
38 * @generated
39 */
40 EList<InformationLink> getIncomingLinks();
41
42} // FunctionalInput
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInterface.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInterface.java
new file mode 100644
index 00000000..732f3cc6
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInterface.java
@@ -0,0 +1,73 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Functional Interface</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData <em>Data</em>}</li>
19 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement <em>Element</em>}</li>
20 * </ul>
21 *
22 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInterface()
23 * @model
24 * @generated
25 */
26public interface FunctionalInterface extends EObject {
27 /**
28 * Returns the value of the '<em><b>Data</b></em>' containment reference list.
29 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData}.
30 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface <em>Interface</em>}'.
31 * <!-- begin-user-doc -->
32 * <p>
33 * If the meaning of the '<em>Data</em>' containment reference list isn't clear,
34 * there really should be more of a description here...
35 * </p>
36 * <!-- end-user-doc -->
37 * @return the value of the '<em>Data</em>' containment reference list.
38 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInterface_Data()
39 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface
40 * @model opposite="interface" containment="true"
41 * @generated
42 */
43 EList<FunctionalData> getData();
44
45 /**
46 * Returns the value of the '<em><b>Element</b></em>' container reference.
47 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface <em>Interface</em>}'.
48 * <!-- begin-user-doc -->
49 * <p>
50 * If the meaning of the '<em>Element</em>' container reference isn't clear,
51 * there really should be more of a description here...
52 * </p>
53 * <!-- end-user-doc -->
54 * @return the value of the '<em>Element</em>' container reference.
55 * @see #setElement(FunctionalElement)
56 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInterface_Element()
57 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface
58 * @model opposite="interface" transient="false"
59 * @generated
60 */
61 FunctionalElement getElement();
62
63 /**
64 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement <em>Element</em>}' container reference.
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @param value the new value of the '<em>Element</em>' container reference.
68 * @see #getElement()
69 * @generated
70 */
71 void setElement(FunctionalElement value);
72
73} // FunctionalInterface
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalOutput.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalOutput.java
new file mode 100644
index 00000000..51194777
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalOutput.java
@@ -0,0 +1,42 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.common.util.EList;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Functional Output</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks <em>Outgoing Links</em>}</li>
17 * </ul>
18 *
19 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalOutput()
20 * @model
21 * @generated
22 */
23public interface FunctionalOutput extends FunctionalData {
24 /**
25 * Returns the value of the '<em><b>Outgoing Links</b></em>' containment reference list.
26 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink}.
27 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom <em>From</em>}'.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>Outgoing Links</em>' containment reference list isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Outgoing Links</em>' containment reference list.
35 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalOutput_OutgoingLinks()
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom
37 * @model opposite="from" containment="true"
38 * @generated
39 */
40 EList<InformationLink> getOutgoingLinks();
41
42} // FunctionalOutput
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/InformationLink.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/InformationLink.java
new file mode 100644
index 00000000..26946d01
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/InformationLink.java
@@ -0,0 +1,81 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Information Link</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom <em>From</em>}</li>
17 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo <em>To</em>}</li>
18 * </ul>
19 *
20 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getInformationLink()
21 * @model
22 * @generated
23 */
24public interface InformationLink extends EObject {
25 /**
26 * Returns the value of the '<em><b>From</b></em>' container reference.
27 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks <em>Outgoing Links</em>}'.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>From</em>' container reference isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>From</em>' container reference.
35 * @see #setFrom(FunctionalOutput)
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getInformationLink_From()
37 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks
38 * @model opposite="outgoingLinks" transient="false"
39 * @generated
40 */
41 FunctionalOutput getFrom();
42
43 /**
44 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom <em>From</em>}' container reference.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @param value the new value of the '<em>From</em>' container reference.
48 * @see #getFrom()
49 * @generated
50 */
51 void setFrom(FunctionalOutput value);
52
53 /**
54 * Returns the value of the '<em><b>To</b></em>' reference.
55 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks <em>Incoming Links</em>}'.
56 * <!-- begin-user-doc -->
57 * <p>
58 * If the meaning of the '<em>To</em>' reference isn't clear,
59 * there really should be more of a description here...
60 * </p>
61 * <!-- end-user-doc -->
62 * @return the value of the '<em>To</em>' reference.
63 * @see #setTo(FunctionalInput)
64 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getInformationLink_To()
65 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks
66 * @model opposite="IncomingLinks" required="true"
67 * @generated
68 */
69 FunctionalInput getTo();
70
71 /**
72 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo <em>To</em>}' reference.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @param value the new value of the '<em>To</em>' reference.
76 * @see #getTo()
77 * @generated
78 */
79 void setTo(FunctionalInput value);
80
81} // InformationLink
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famFactory.java
new file mode 100644
index 00000000..cdab0041
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famFactory.java
@@ -0,0 +1,96 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage
13 * @generated
14 */
15public interface famFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 famFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>Functional Architecture Model</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>Functional Architecture Model</em>'.
29 * @generated
30 */
31 FunctionalArchitectureModel createFunctionalArchitectureModel();
32
33 /**
34 * Returns a new object of class '<em>Function</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Function</em>'.
38 * @generated
39 */
40 Function createFunction();
41
42 /**
43 * Returns a new object of class '<em>FAM Terminator</em>'.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return a new object of class '<em>FAM Terminator</em>'.
47 * @generated
48 */
49 FAMTerminator createFAMTerminator();
50
51 /**
52 * Returns a new object of class '<em>Information Link</em>'.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return a new object of class '<em>Information Link</em>'.
56 * @generated
57 */
58 InformationLink createInformationLink();
59
60 /**
61 * Returns a new object of class '<em>Functional Interface</em>'.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @return a new object of class '<em>Functional Interface</em>'.
65 * @generated
66 */
67 FunctionalInterface createFunctionalInterface();
68
69 /**
70 * Returns a new object of class '<em>Functional Input</em>'.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @return a new object of class '<em>Functional Input</em>'.
74 * @generated
75 */
76 FunctionalInput createFunctionalInput();
77
78 /**
79 * Returns a new object of class '<em>Functional Output</em>'.
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @return a new object of class '<em>Functional Output</em>'.
83 * @generated
84 */
85 FunctionalOutput createFunctionalOutput();
86
87 /**
88 * Returns the package supported by this factory.
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @return the package supported by this factory.
92 * @generated
93 */
94 famPackage getfamPackage();
95
96} //famFactory
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famPackage.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famPackage.java
new file mode 100644
index 00000000..9b876f8b
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famPackage.java
@@ -0,0 +1,1032 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam;
4
5import org.eclipse.emf.ecore.EAttribute;
6import org.eclipse.emf.ecore.EClass;
7import org.eclipse.emf.ecore.EEnum;
8import org.eclipse.emf.ecore.EPackage;
9import org.eclipse.emf.ecore.EReference;
10
11/**
12 * <!-- begin-user-doc -->
13 * The <b>Package</b> for the model.
14 * It contains accessors for the meta objects to represent
15 * <ul>
16 * <li>each class,</li>
17 * <li>each feature of each class,</li>
18 * <li>each operation of each class,</li>
19 * <li>each enum,</li>
20 * <li>and each data type</li>
21 * </ul>
22 * <!-- end-user-doc -->
23 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famFactory
24 * @model kind="package"
25 * annotation="http://www.eclipse.org/emf/2002/Ecore settingDelegates='org.eclipse.viatra.query.querybasedfeature'"
26 * @generated
27 */
28public interface famPackage extends EPackage {
29 /**
30 * The package name.
31 * <!-- begin-user-doc -->
32 * <!-- end-user-doc -->
33 * @generated
34 */
35 String eNAME = "fam";
36
37 /**
38 * The package namespace URI.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @generated
42 */
43 String eNS_URI = "FamMetamodel";
44
45 /**
46 * The package namespace name.
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @generated
50 */
51 String eNS_PREFIX = "fam";
52
53 /**
54 * The singleton instance of the package.
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 famPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl.init();
60
61 /**
62 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl <em>Functional Element</em>}' class.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl
66 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalElement()
67 * @generated
68 */
69 int FUNCTIONAL_ELEMENT = 0;
70
71 /**
72 * The feature id for the '<em><b>Interface</b></em>' containment reference.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @generated
76 * @ordered
77 */
78 int FUNCTIONAL_ELEMENT__INTERFACE = 0;
79
80 /**
81 * The feature id for the '<em><b>Model</b></em>' reference.
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 * @ordered
86 */
87 int FUNCTIONAL_ELEMENT__MODEL = 1;
88
89 /**
90 * The feature id for the '<em><b>Parent</b></em>' container reference.
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 * @ordered
95 */
96 int FUNCTIONAL_ELEMENT__PARENT = 2;
97
98 /**
99 * The number of structural features of the '<em>Functional Element</em>' class.
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 * @ordered
104 */
105 int FUNCTIONAL_ELEMENT_FEATURE_COUNT = 3;
106
107 /**
108 * The number of operations of the '<em>Functional Element</em>' class.
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @generated
112 * @ordered
113 */
114 int FUNCTIONAL_ELEMENT_OPERATION_COUNT = 0;
115
116 /**
117 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl <em>Functional Architecture Model</em>}' class.
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl
121 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalArchitectureModel()
122 * @generated
123 */
124 int FUNCTIONAL_ARCHITECTURE_MODEL = 1;
125
126 /**
127 * The feature id for the '<em><b>Root Elements</b></em>' containment reference list.
128 * <!-- begin-user-doc -->
129 * <!-- end-user-doc -->
130 * @generated
131 * @ordered
132 */
133 int FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS = 0;
134
135 /**
136 * The number of structural features of the '<em>Functional Architecture Model</em>' class.
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @generated
140 * @ordered
141 */
142 int FUNCTIONAL_ARCHITECTURE_MODEL_FEATURE_COUNT = 1;
143
144 /**
145 * The number of operations of the '<em>Functional Architecture Model</em>' class.
146 * <!-- begin-user-doc -->
147 * <!-- end-user-doc -->
148 * @generated
149 * @ordered
150 */
151 int FUNCTIONAL_ARCHITECTURE_MODEL_OPERATION_COUNT = 0;
152
153 /**
154 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl <em>Function</em>}' class.
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl
158 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunction()
159 * @generated
160 */
161 int FUNCTION = 2;
162
163 /**
164 * The feature id for the '<em><b>Interface</b></em>' containment reference.
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @generated
168 * @ordered
169 */
170 int FUNCTION__INTERFACE = FUNCTIONAL_ELEMENT__INTERFACE;
171
172 /**
173 * The feature id for the '<em><b>Model</b></em>' reference.
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @generated
177 * @ordered
178 */
179 int FUNCTION__MODEL = FUNCTIONAL_ELEMENT__MODEL;
180
181 /**
182 * The feature id for the '<em><b>Parent</b></em>' container reference.
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 * @ordered
187 */
188 int FUNCTION__PARENT = FUNCTIONAL_ELEMENT__PARENT;
189
190 /**
191 * The feature id for the '<em><b>Sub Elements</b></em>' containment reference list.
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 * @ordered
196 */
197 int FUNCTION__SUB_ELEMENTS = FUNCTIONAL_ELEMENT_FEATURE_COUNT + 0;
198
199 /**
200 * The feature id for the '<em><b>Type</b></em>' attribute.
201 * <!-- begin-user-doc -->
202 * <!-- end-user-doc -->
203 * @generated
204 * @ordered
205 */
206 int FUNCTION__TYPE = FUNCTIONAL_ELEMENT_FEATURE_COUNT + 1;
207
208 /**
209 * The number of structural features of the '<em>Function</em>' class.
210 * <!-- begin-user-doc -->
211 * <!-- end-user-doc -->
212 * @generated
213 * @ordered
214 */
215 int FUNCTION_FEATURE_COUNT = FUNCTIONAL_ELEMENT_FEATURE_COUNT + 2;
216
217 /**
218 * The number of operations of the '<em>Function</em>' class.
219 * <!-- begin-user-doc -->
220 * <!-- end-user-doc -->
221 * @generated
222 * @ordered
223 */
224 int FUNCTION_OPERATION_COUNT = FUNCTIONAL_ELEMENT_OPERATION_COUNT + 0;
225
226 /**
227 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl <em>FAM Terminator</em>}' class.
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl
231 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFAMTerminator()
232 * @generated
233 */
234 int FAM_TERMINATOR = 3;
235
236 /**
237 * The feature id for the '<em><b>Data</b></em>' container reference.
238 * <!-- begin-user-doc -->
239 * <!-- end-user-doc -->
240 * @generated
241 * @ordered
242 */
243 int FAM_TERMINATOR__DATA = 0;
244
245 /**
246 * The number of structural features of the '<em>FAM Terminator</em>' class.
247 * <!-- begin-user-doc -->
248 * <!-- end-user-doc -->
249 * @generated
250 * @ordered
251 */
252 int FAM_TERMINATOR_FEATURE_COUNT = 1;
253
254 /**
255 * The number of operations of the '<em>FAM Terminator</em>' class.
256 * <!-- begin-user-doc -->
257 * <!-- end-user-doc -->
258 * @generated
259 * @ordered
260 */
261 int FAM_TERMINATOR_OPERATION_COUNT = 0;
262
263 /**
264 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl <em>Information Link</em>}' class.
265 * <!-- begin-user-doc -->
266 * <!-- end-user-doc -->
267 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl
268 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getInformationLink()
269 * @generated
270 */
271 int INFORMATION_LINK = 4;
272
273 /**
274 * The feature id for the '<em><b>From</b></em>' container reference.
275 * <!-- begin-user-doc -->
276 * <!-- end-user-doc -->
277 * @generated
278 * @ordered
279 */
280 int INFORMATION_LINK__FROM = 0;
281
282 /**
283 * The feature id for the '<em><b>To</b></em>' reference.
284 * <!-- begin-user-doc -->
285 * <!-- end-user-doc -->
286 * @generated
287 * @ordered
288 */
289 int INFORMATION_LINK__TO = 1;
290
291 /**
292 * The number of structural features of the '<em>Information Link</em>' class.
293 * <!-- begin-user-doc -->
294 * <!-- end-user-doc -->
295 * @generated
296 * @ordered
297 */
298 int INFORMATION_LINK_FEATURE_COUNT = 2;
299
300 /**
301 * The number of operations of the '<em>Information Link</em>' class.
302 * <!-- begin-user-doc -->
303 * <!-- end-user-doc -->
304 * @generated
305 * @ordered
306 */
307 int INFORMATION_LINK_OPERATION_COUNT = 0;
308
309 /**
310 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl <em>Functional Interface</em>}' class.
311 * <!-- begin-user-doc -->
312 * <!-- end-user-doc -->
313 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl
314 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalInterface()
315 * @generated
316 */
317 int FUNCTIONAL_INTERFACE = 5;
318
319 /**
320 * The feature id for the '<em><b>Data</b></em>' containment reference list.
321 * <!-- begin-user-doc -->
322 * <!-- end-user-doc -->
323 * @generated
324 * @ordered
325 */
326 int FUNCTIONAL_INTERFACE__DATA = 0;
327
328 /**
329 * The feature id for the '<em><b>Element</b></em>' container reference.
330 * <!-- begin-user-doc -->
331 * <!-- end-user-doc -->
332 * @generated
333 * @ordered
334 */
335 int FUNCTIONAL_INTERFACE__ELEMENT = 1;
336
337 /**
338 * The number of structural features of the '<em>Functional Interface</em>' class.
339 * <!-- begin-user-doc -->
340 * <!-- end-user-doc -->
341 * @generated
342 * @ordered
343 */
344 int FUNCTIONAL_INTERFACE_FEATURE_COUNT = 2;
345
346 /**
347 * The number of operations of the '<em>Functional Interface</em>' class.
348 * <!-- begin-user-doc -->
349 * <!-- end-user-doc -->
350 * @generated
351 * @ordered
352 */
353 int FUNCTIONAL_INTERFACE_OPERATION_COUNT = 0;
354
355 /**
356 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl <em>Functional Data</em>}' class.
357 * <!-- begin-user-doc -->
358 * <!-- end-user-doc -->
359 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl
360 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalData()
361 * @generated
362 */
363 int FUNCTIONAL_DATA = 8;
364
365 /**
366 * The feature id for the '<em><b>Terminator</b></em>' containment reference.
367 * <!-- begin-user-doc -->
368 * <!-- end-user-doc -->
369 * @generated
370 * @ordered
371 */
372 int FUNCTIONAL_DATA__TERMINATOR = 0;
373
374 /**
375 * The feature id for the '<em><b>Interface</b></em>' container reference.
376 * <!-- begin-user-doc -->
377 * <!-- end-user-doc -->
378 * @generated
379 * @ordered
380 */
381 int FUNCTIONAL_DATA__INTERFACE = 1;
382
383 /**
384 * The number of structural features of the '<em>Functional Data</em>' class.
385 * <!-- begin-user-doc -->
386 * <!-- end-user-doc -->
387 * @generated
388 * @ordered
389 */
390 int FUNCTIONAL_DATA_FEATURE_COUNT = 2;
391
392 /**
393 * The number of operations of the '<em>Functional Data</em>' class.
394 * <!-- begin-user-doc -->
395 * <!-- end-user-doc -->
396 * @generated
397 * @ordered
398 */
399 int FUNCTIONAL_DATA_OPERATION_COUNT = 0;
400
401 /**
402 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl <em>Functional Input</em>}' class.
403 * <!-- begin-user-doc -->
404 * <!-- end-user-doc -->
405 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl
406 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalInput()
407 * @generated
408 */
409 int FUNCTIONAL_INPUT = 6;
410
411 /**
412 * The feature id for the '<em><b>Terminator</b></em>' containment reference.
413 * <!-- begin-user-doc -->
414 * <!-- end-user-doc -->
415 * @generated
416 * @ordered
417 */
418 int FUNCTIONAL_INPUT__TERMINATOR = FUNCTIONAL_DATA__TERMINATOR;
419
420 /**
421 * The feature id for the '<em><b>Interface</b></em>' container reference.
422 * <!-- begin-user-doc -->
423 * <!-- end-user-doc -->
424 * @generated
425 * @ordered
426 */
427 int FUNCTIONAL_INPUT__INTERFACE = FUNCTIONAL_DATA__INTERFACE;
428
429 /**
430 * The feature id for the '<em><b>Incoming Links</b></em>' reference list.
431 * <!-- begin-user-doc -->
432 * <!-- end-user-doc -->
433 * @generated
434 * @ordered
435 */
436 int FUNCTIONAL_INPUT__INCOMING_LINKS = FUNCTIONAL_DATA_FEATURE_COUNT + 0;
437
438 /**
439 * The number of structural features of the '<em>Functional Input</em>' class.
440 * <!-- begin-user-doc -->
441 * <!-- end-user-doc -->
442 * @generated
443 * @ordered
444 */
445 int FUNCTIONAL_INPUT_FEATURE_COUNT = FUNCTIONAL_DATA_FEATURE_COUNT + 1;
446
447 /**
448 * The number of operations of the '<em>Functional Input</em>' class.
449 * <!-- begin-user-doc -->
450 * <!-- end-user-doc -->
451 * @generated
452 * @ordered
453 */
454 int FUNCTIONAL_INPUT_OPERATION_COUNT = FUNCTIONAL_DATA_OPERATION_COUNT + 0;
455
456 /**
457 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl <em>Functional Output</em>}' class.
458 * <!-- begin-user-doc -->
459 * <!-- end-user-doc -->
460 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl
461 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalOutput()
462 * @generated
463 */
464 int FUNCTIONAL_OUTPUT = 7;
465
466 /**
467 * The feature id for the '<em><b>Terminator</b></em>' containment reference.
468 * <!-- begin-user-doc -->
469 * <!-- end-user-doc -->
470 * @generated
471 * @ordered
472 */
473 int FUNCTIONAL_OUTPUT__TERMINATOR = FUNCTIONAL_DATA__TERMINATOR;
474
475 /**
476 * The feature id for the '<em><b>Interface</b></em>' container reference.
477 * <!-- begin-user-doc -->
478 * <!-- end-user-doc -->
479 * @generated
480 * @ordered
481 */
482 int FUNCTIONAL_OUTPUT__INTERFACE = FUNCTIONAL_DATA__INTERFACE;
483
484 /**
485 * The feature id for the '<em><b>Outgoing Links</b></em>' containment reference list.
486 * <!-- begin-user-doc -->
487 * <!-- end-user-doc -->
488 * @generated
489 * @ordered
490 */
491 int FUNCTIONAL_OUTPUT__OUTGOING_LINKS = FUNCTIONAL_DATA_FEATURE_COUNT + 0;
492
493 /**
494 * The number of structural features of the '<em>Functional Output</em>' class.
495 * <!-- begin-user-doc -->
496 * <!-- end-user-doc -->
497 * @generated
498 * @ordered
499 */
500 int FUNCTIONAL_OUTPUT_FEATURE_COUNT = FUNCTIONAL_DATA_FEATURE_COUNT + 1;
501
502 /**
503 * The number of operations of the '<em>Functional Output</em>' class.
504 * <!-- begin-user-doc -->
505 * <!-- end-user-doc -->
506 * @generated
507 * @ordered
508 */
509 int FUNCTIONAL_OUTPUT_OPERATION_COUNT = FUNCTIONAL_DATA_OPERATION_COUNT + 0;
510
511 /**
512 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType <em>Function Type</em>}' enum.
513 * <!-- begin-user-doc -->
514 * <!-- end-user-doc -->
515 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
516 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionType()
517 * @generated
518 */
519 int FUNCTION_TYPE = 9;
520
521
522 /**
523 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement <em>Functional Element</em>}'.
524 * <!-- begin-user-doc -->
525 * <!-- end-user-doc -->
526 * @return the meta object for class '<em>Functional Element</em>'.
527 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement
528 * @generated
529 */
530 EClass getFunctionalElement();
531
532 /**
533 * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface <em>Interface</em>}'.
534 * <!-- begin-user-doc -->
535 * <!-- end-user-doc -->
536 * @return the meta object for the containment reference '<em>Interface</em>'.
537 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface()
538 * @see #getFunctionalElement()
539 * @generated
540 */
541 EReference getFunctionalElement_Interface();
542
543 /**
544 * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getModel <em>Model</em>}'.
545 * <!-- begin-user-doc -->
546 * <!-- end-user-doc -->
547 * @return the meta object for the reference '<em>Model</em>'.
548 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getModel()
549 * @see #getFunctionalElement()
550 * @generated
551 */
552 EReference getFunctionalElement_Model();
553
554 /**
555 * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent <em>Parent</em>}'.
556 * <!-- begin-user-doc -->
557 * <!-- end-user-doc -->
558 * @return the meta object for the container reference '<em>Parent</em>'.
559 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent()
560 * @see #getFunctionalElement()
561 * @generated
562 */
563 EReference getFunctionalElement_Parent();
564
565 /**
566 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel <em>Functional Architecture Model</em>}'.
567 * <!-- begin-user-doc -->
568 * <!-- end-user-doc -->
569 * @return the meta object for class '<em>Functional Architecture Model</em>'.
570 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel
571 * @generated
572 */
573 EClass getFunctionalArchitectureModel();
574
575 /**
576 * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel#getRootElements <em>Root Elements</em>}'.
577 * <!-- begin-user-doc -->
578 * <!-- end-user-doc -->
579 * @return the meta object for the containment reference list '<em>Root Elements</em>'.
580 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel#getRootElements()
581 * @see #getFunctionalArchitectureModel()
582 * @generated
583 */
584 EReference getFunctionalArchitectureModel_RootElements();
585
586 /**
587 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function <em>Function</em>}'.
588 * <!-- begin-user-doc -->
589 * <!-- end-user-doc -->
590 * @return the meta object for class '<em>Function</em>'.
591 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function
592 * @generated
593 */
594 EClass getFunction();
595
596 /**
597 * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements <em>Sub Elements</em>}'.
598 * <!-- begin-user-doc -->
599 * <!-- end-user-doc -->
600 * @return the meta object for the containment reference list '<em>Sub Elements</em>'.
601 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements()
602 * @see #getFunction()
603 * @generated
604 */
605 EReference getFunction_SubElements();
606
607 /**
608 * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getType <em>Type</em>}'.
609 * <!-- begin-user-doc -->
610 * <!-- end-user-doc -->
611 * @return the meta object for the attribute '<em>Type</em>'.
612 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getType()
613 * @see #getFunction()
614 * @generated
615 */
616 EAttribute getFunction_Type();
617
618 /**
619 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator <em>FAM Terminator</em>}'.
620 * <!-- begin-user-doc -->
621 * <!-- end-user-doc -->
622 * @return the meta object for class '<em>FAM Terminator</em>'.
623 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator
624 * @generated
625 */
626 EClass getFAMTerminator();
627
628 /**
629 * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData <em>Data</em>}'.
630 * <!-- begin-user-doc -->
631 * <!-- end-user-doc -->
632 * @return the meta object for the container reference '<em>Data</em>'.
633 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData()
634 * @see #getFAMTerminator()
635 * @generated
636 */
637 EReference getFAMTerminator_Data();
638
639 /**
640 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink <em>Information Link</em>}'.
641 * <!-- begin-user-doc -->
642 * <!-- end-user-doc -->
643 * @return the meta object for class '<em>Information Link</em>'.
644 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink
645 * @generated
646 */
647 EClass getInformationLink();
648
649 /**
650 * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom <em>From</em>}'.
651 * <!-- begin-user-doc -->
652 * <!-- end-user-doc -->
653 * @return the meta object for the container reference '<em>From</em>'.
654 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom()
655 * @see #getInformationLink()
656 * @generated
657 */
658 EReference getInformationLink_From();
659
660 /**
661 * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo <em>To</em>}'.
662 * <!-- begin-user-doc -->
663 * <!-- end-user-doc -->
664 * @return the meta object for the reference '<em>To</em>'.
665 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo()
666 * @see #getInformationLink()
667 * @generated
668 */
669 EReference getInformationLink_To();
670
671 /**
672 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface <em>Functional Interface</em>}'.
673 * <!-- begin-user-doc -->
674 * <!-- end-user-doc -->
675 * @return the meta object for class '<em>Functional Interface</em>'.
676 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface
677 * @generated
678 */
679 EClass getFunctionalInterface();
680
681 /**
682 * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData <em>Data</em>}'.
683 * <!-- begin-user-doc -->
684 * <!-- end-user-doc -->
685 * @return the meta object for the containment reference list '<em>Data</em>'.
686 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData()
687 * @see #getFunctionalInterface()
688 * @generated
689 */
690 EReference getFunctionalInterface_Data();
691
692 /**
693 * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement <em>Element</em>}'.
694 * <!-- begin-user-doc -->
695 * <!-- end-user-doc -->
696 * @return the meta object for the container reference '<em>Element</em>'.
697 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement()
698 * @see #getFunctionalInterface()
699 * @generated
700 */
701 EReference getFunctionalInterface_Element();
702
703 /**
704 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput <em>Functional Input</em>}'.
705 * <!-- begin-user-doc -->
706 * <!-- end-user-doc -->
707 * @return the meta object for class '<em>Functional Input</em>'.
708 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput
709 * @generated
710 */
711 EClass getFunctionalInput();
712
713 /**
714 * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks <em>Incoming Links</em>}'.
715 * <!-- begin-user-doc -->
716 * <!-- end-user-doc -->
717 * @return the meta object for the reference list '<em>Incoming Links</em>'.
718 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks()
719 * @see #getFunctionalInput()
720 * @generated
721 */
722 EReference getFunctionalInput_IncomingLinks();
723
724 /**
725 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput <em>Functional Output</em>}'.
726 * <!-- begin-user-doc -->
727 * <!-- end-user-doc -->
728 * @return the meta object for class '<em>Functional Output</em>'.
729 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput
730 * @generated
731 */
732 EClass getFunctionalOutput();
733
734 /**
735 * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks <em>Outgoing Links</em>}'.
736 * <!-- begin-user-doc -->
737 * <!-- end-user-doc -->
738 * @return the meta object for the containment reference list '<em>Outgoing Links</em>'.
739 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks()
740 * @see #getFunctionalOutput()
741 * @generated
742 */
743 EReference getFunctionalOutput_OutgoingLinks();
744
745 /**
746 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData <em>Functional Data</em>}'.
747 * <!-- begin-user-doc -->
748 * <!-- end-user-doc -->
749 * @return the meta object for class '<em>Functional Data</em>'.
750 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData
751 * @generated
752 */
753 EClass getFunctionalData();
754
755 /**
756 * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator <em>Terminator</em>}'.
757 * <!-- begin-user-doc -->
758 * <!-- end-user-doc -->
759 * @return the meta object for the containment reference '<em>Terminator</em>'.
760 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator()
761 * @see #getFunctionalData()
762 * @generated
763 */
764 EReference getFunctionalData_Terminator();
765
766 /**
767 * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface <em>Interface</em>}'.
768 * <!-- begin-user-doc -->
769 * <!-- end-user-doc -->
770 * @return the meta object for the container reference '<em>Interface</em>'.
771 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface()
772 * @see #getFunctionalData()
773 * @generated
774 */
775 EReference getFunctionalData_Interface();
776
777 /**
778 * Returns the meta object for enum '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType <em>Function Type</em>}'.
779 * <!-- begin-user-doc -->
780 * <!-- end-user-doc -->
781 * @return the meta object for enum '<em>Function Type</em>'.
782 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
783 * @generated
784 */
785 EEnum getFunctionType();
786
787 /**
788 * Returns the factory that creates the instances of the model.
789 * <!-- begin-user-doc -->
790 * <!-- end-user-doc -->
791 * @return the factory that creates the instances of the model.
792 * @generated
793 */
794 famFactory getfamFactory();
795
796 /**
797 * <!-- begin-user-doc -->
798 * Defines literals for the meta objects that represent
799 * <ul>
800 * <li>each class,</li>
801 * <li>each feature of each class,</li>
802 * <li>each operation of each class,</li>
803 * <li>each enum,</li>
804 * <li>and each data type</li>
805 * </ul>
806 * <!-- end-user-doc -->
807 * @generated
808 */
809 interface Literals {
810 /**
811 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl <em>Functional Element</em>}' class.
812 * <!-- begin-user-doc -->
813 * <!-- end-user-doc -->
814 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl
815 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalElement()
816 * @generated
817 */
818 EClass FUNCTIONAL_ELEMENT = eINSTANCE.getFunctionalElement();
819
820 /**
821 * The meta object literal for the '<em><b>Interface</b></em>' containment reference feature.
822 * <!-- begin-user-doc -->
823 * <!-- end-user-doc -->
824 * @generated
825 */
826 EReference FUNCTIONAL_ELEMENT__INTERFACE = eINSTANCE.getFunctionalElement_Interface();
827
828 /**
829 * The meta object literal for the '<em><b>Model</b></em>' reference feature.
830 * <!-- begin-user-doc -->
831 * <!-- end-user-doc -->
832 * @generated
833 */
834 EReference FUNCTIONAL_ELEMENT__MODEL = eINSTANCE.getFunctionalElement_Model();
835
836 /**
837 * The meta object literal for the '<em><b>Parent</b></em>' container reference feature.
838 * <!-- begin-user-doc -->
839 * <!-- end-user-doc -->
840 * @generated
841 */
842 EReference FUNCTIONAL_ELEMENT__PARENT = eINSTANCE.getFunctionalElement_Parent();
843
844 /**
845 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl <em>Functional Architecture Model</em>}' class.
846 * <!-- begin-user-doc -->
847 * <!-- end-user-doc -->
848 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl
849 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalArchitectureModel()
850 * @generated
851 */
852 EClass FUNCTIONAL_ARCHITECTURE_MODEL = eINSTANCE.getFunctionalArchitectureModel();
853
854 /**
855 * The meta object literal for the '<em><b>Root Elements</b></em>' containment reference list feature.
856 * <!-- begin-user-doc -->
857 * <!-- end-user-doc -->
858 * @generated
859 */
860 EReference FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS = eINSTANCE.getFunctionalArchitectureModel_RootElements();
861
862 /**
863 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl <em>Function</em>}' class.
864 * <!-- begin-user-doc -->
865 * <!-- end-user-doc -->
866 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl
867 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunction()
868 * @generated
869 */
870 EClass FUNCTION = eINSTANCE.getFunction();
871
872 /**
873 * The meta object literal for the '<em><b>Sub Elements</b></em>' containment reference list feature.
874 * <!-- begin-user-doc -->
875 * <!-- end-user-doc -->
876 * @generated
877 */
878 EReference FUNCTION__SUB_ELEMENTS = eINSTANCE.getFunction_SubElements();
879
880 /**
881 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
882 * <!-- begin-user-doc -->
883 * <!-- end-user-doc -->
884 * @generated
885 */
886 EAttribute FUNCTION__TYPE = eINSTANCE.getFunction_Type();
887
888 /**
889 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl <em>FAM Terminator</em>}' class.
890 * <!-- begin-user-doc -->
891 * <!-- end-user-doc -->
892 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl
893 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFAMTerminator()
894 * @generated
895 */
896 EClass FAM_TERMINATOR = eINSTANCE.getFAMTerminator();
897
898 /**
899 * The meta object literal for the '<em><b>Data</b></em>' container reference feature.
900 * <!-- begin-user-doc -->
901 * <!-- end-user-doc -->
902 * @generated
903 */
904 EReference FAM_TERMINATOR__DATA = eINSTANCE.getFAMTerminator_Data();
905
906 /**
907 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl <em>Information Link</em>}' class.
908 * <!-- begin-user-doc -->
909 * <!-- end-user-doc -->
910 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl
911 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getInformationLink()
912 * @generated
913 */
914 EClass INFORMATION_LINK = eINSTANCE.getInformationLink();
915
916 /**
917 * The meta object literal for the '<em><b>From</b></em>' container reference feature.
918 * <!-- begin-user-doc -->
919 * <!-- end-user-doc -->
920 * @generated
921 */
922 EReference INFORMATION_LINK__FROM = eINSTANCE.getInformationLink_From();
923
924 /**
925 * The meta object literal for the '<em><b>To</b></em>' reference feature.
926 * <!-- begin-user-doc -->
927 * <!-- end-user-doc -->
928 * @generated
929 */
930 EReference INFORMATION_LINK__TO = eINSTANCE.getInformationLink_To();
931
932 /**
933 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl <em>Functional Interface</em>}' class.
934 * <!-- begin-user-doc -->
935 * <!-- end-user-doc -->
936 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl
937 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalInterface()
938 * @generated
939 */
940 EClass FUNCTIONAL_INTERFACE = eINSTANCE.getFunctionalInterface();
941
942 /**
943 * The meta object literal for the '<em><b>Data</b></em>' containment reference list feature.
944 * <!-- begin-user-doc -->
945 * <!-- end-user-doc -->
946 * @generated
947 */
948 EReference FUNCTIONAL_INTERFACE__DATA = eINSTANCE.getFunctionalInterface_Data();
949
950 /**
951 * The meta object literal for the '<em><b>Element</b></em>' container reference feature.
952 * <!-- begin-user-doc -->
953 * <!-- end-user-doc -->
954 * @generated
955 */
956 EReference FUNCTIONAL_INTERFACE__ELEMENT = eINSTANCE.getFunctionalInterface_Element();
957
958 /**
959 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl <em>Functional Input</em>}' class.
960 * <!-- begin-user-doc -->
961 * <!-- end-user-doc -->
962 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl
963 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalInput()
964 * @generated
965 */
966 EClass FUNCTIONAL_INPUT = eINSTANCE.getFunctionalInput();
967
968 /**
969 * The meta object literal for the '<em><b>Incoming Links</b></em>' reference list feature.
970 * <!-- begin-user-doc -->
971 * <!-- end-user-doc -->
972 * @generated
973 */
974 EReference FUNCTIONAL_INPUT__INCOMING_LINKS = eINSTANCE.getFunctionalInput_IncomingLinks();
975
976 /**
977 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl <em>Functional Output</em>}' class.
978 * <!-- begin-user-doc -->
979 * <!-- end-user-doc -->
980 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl
981 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalOutput()
982 * @generated
983 */
984 EClass FUNCTIONAL_OUTPUT = eINSTANCE.getFunctionalOutput();
985
986 /**
987 * The meta object literal for the '<em><b>Outgoing Links</b></em>' containment reference list feature.
988 * <!-- begin-user-doc -->
989 * <!-- end-user-doc -->
990 * @generated
991 */
992 EReference FUNCTIONAL_OUTPUT__OUTGOING_LINKS = eINSTANCE.getFunctionalOutput_OutgoingLinks();
993
994 /**
995 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl <em>Functional Data</em>}' class.
996 * <!-- begin-user-doc -->
997 * <!-- end-user-doc -->
998 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl
999 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalData()
1000 * @generated
1001 */
1002 EClass FUNCTIONAL_DATA = eINSTANCE.getFunctionalData();
1003
1004 /**
1005 * The meta object literal for the '<em><b>Terminator</b></em>' containment reference feature.
1006 * <!-- begin-user-doc -->
1007 * <!-- end-user-doc -->
1008 * @generated
1009 */
1010 EReference FUNCTIONAL_DATA__TERMINATOR = eINSTANCE.getFunctionalData_Terminator();
1011
1012 /**
1013 * The meta object literal for the '<em><b>Interface</b></em>' container reference feature.
1014 * <!-- begin-user-doc -->
1015 * <!-- end-user-doc -->
1016 * @generated
1017 */
1018 EReference FUNCTIONAL_DATA__INTERFACE = eINSTANCE.getFunctionalData_Interface();
1019
1020 /**
1021 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType <em>Function Type</em>}' enum.
1022 * <!-- begin-user-doc -->
1023 * <!-- end-user-doc -->
1024 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
1025 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionType()
1026 * @generated
1027 */
1028 EEnum FUNCTION_TYPE = eINSTANCE.getFunctionType();
1029
1030 }
1031
1032} //famPackage
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FAMTerminatorImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FAMTerminatorImpl.java
new file mode 100644
index 00000000..6eba60f6
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FAMTerminatorImpl.java
@@ -0,0 +1,196 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10import org.eclipse.emf.common.notify.NotificationChain;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18import org.eclipse.emf.ecore.util.EcoreUtil;
19
20/**
21 * <!-- begin-user-doc -->
22 * An implementation of the model object '<em><b>FAM Terminator</b></em>'.
23 * <!-- end-user-doc -->
24 * <p>
25 * The following features are implemented:
26 * </p>
27 * <ul>
28 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl#getData <em>Data</em>}</li>
29 * </ul>
30 *
31 * @generated
32 */
33public class FAMTerminatorImpl extends MinimalEObjectImpl.Container implements FAMTerminator {
34 /**
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @generated
38 */
39 protected FAMTerminatorImpl() {
40 super();
41 }
42
43 /**
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 @Override
49 protected EClass eStaticClass() {
50 return famPackage.Literals.FAM_TERMINATOR;
51 }
52
53 /**
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @generated
57 */
58 public FunctionalData getData() {
59 if (eContainerFeatureID() != famPackage.FAM_TERMINATOR__DATA) return null;
60 return (FunctionalData)eInternalContainer();
61 }
62
63 /**
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 public NotificationChain basicSetData(FunctionalData newData, NotificationChain msgs) {
69 msgs = eBasicSetContainer((InternalEObject)newData, famPackage.FAM_TERMINATOR__DATA, msgs);
70 return msgs;
71 }
72
73 /**
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @generated
77 */
78 public void setData(FunctionalData newData) {
79 if (newData != eInternalContainer() || (eContainerFeatureID() != famPackage.FAM_TERMINATOR__DATA && newData != null)) {
80 if (EcoreUtil.isAncestor(this, newData))
81 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
82 NotificationChain msgs = null;
83 if (eInternalContainer() != null)
84 msgs = eBasicRemoveFromContainer(msgs);
85 if (newData != null)
86 msgs = ((InternalEObject)newData).eInverseAdd(this, famPackage.FUNCTIONAL_DATA__TERMINATOR, FunctionalData.class, msgs);
87 msgs = basicSetData(newData, msgs);
88 if (msgs != null) msgs.dispatch();
89 }
90 else if (eNotificationRequired())
91 eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FAM_TERMINATOR__DATA, newData, newData));
92 }
93
94 /**
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @generated
98 */
99 @Override
100 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
101 switch (featureID) {
102 case famPackage.FAM_TERMINATOR__DATA:
103 if (eInternalContainer() != null)
104 msgs = eBasicRemoveFromContainer(msgs);
105 return basicSetData((FunctionalData)otherEnd, msgs);
106 }
107 return super.eInverseAdd(otherEnd, featureID, msgs);
108 }
109
110 /**
111 * <!-- begin-user-doc -->
112 * <!-- end-user-doc -->
113 * @generated
114 */
115 @Override
116 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
117 switch (featureID) {
118 case famPackage.FAM_TERMINATOR__DATA:
119 return basicSetData(null, msgs);
120 }
121 return super.eInverseRemove(otherEnd, featureID, msgs);
122 }
123
124 /**
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 */
129 @Override
130 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
131 switch (eContainerFeatureID()) {
132 case famPackage.FAM_TERMINATOR__DATA:
133 return eInternalContainer().eInverseRemove(this, famPackage.FUNCTIONAL_DATA__TERMINATOR, FunctionalData.class, msgs);
134 }
135 return super.eBasicRemoveFromContainerFeature(msgs);
136 }
137
138 /**
139 * <!-- begin-user-doc -->
140 * <!-- end-user-doc -->
141 * @generated
142 */
143 @Override
144 public Object eGet(int featureID, boolean resolve, boolean coreType) {
145 switch (featureID) {
146 case famPackage.FAM_TERMINATOR__DATA:
147 return getData();
148 }
149 return super.eGet(featureID, resolve, coreType);
150 }
151
152 /**
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @generated
156 */
157 @Override
158 public void eSet(int featureID, Object newValue) {
159 switch (featureID) {
160 case famPackage.FAM_TERMINATOR__DATA:
161 setData((FunctionalData)newValue);
162 return;
163 }
164 super.eSet(featureID, newValue);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 @Override
173 public void eUnset(int featureID) {
174 switch (featureID) {
175 case famPackage.FAM_TERMINATOR__DATA:
176 setData((FunctionalData)null);
177 return;
178 }
179 super.eUnset(featureID);
180 }
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 @Override
188 public boolean eIsSet(int featureID) {
189 switch (featureID) {
190 case famPackage.FAM_TERMINATOR__DATA:
191 return getData() != null;
192 }
193 return super.eIsSet(featureID);
194 }
195
196} //FAMTerminatorImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionImpl.java
new file mode 100644
index 00000000..ec3e884e
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionImpl.java
@@ -0,0 +1,191 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement;
8import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
9
10import java.util.Collection;
11
12import org.eclipse.emf.common.notify.NotificationChain;
13
14import org.eclipse.emf.common.util.EList;
15
16import org.eclipse.emf.ecore.EClass;
17import org.eclipse.emf.ecore.EStructuralFeature;
18import org.eclipse.emf.ecore.InternalEObject;
19
20import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
21import org.eclipse.emf.ecore.util.InternalEList;
22
23/**
24 * <!-- begin-user-doc -->
25 * An implementation of the model object '<em><b>Function</b></em>'.
26 * <!-- end-user-doc -->
27 * <p>
28 * The following features are implemented:
29 * </p>
30 * <ul>
31 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl#getSubElements <em>Sub Elements</em>}</li>
32 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl#getType <em>Type</em>}</li>
33 * </ul>
34 *
35 * @generated
36 */
37public class FunctionImpl extends FunctionalElementImpl implements Function {
38 /**
39 * The cached value of the '{@link #getSubElements() <em>Sub Elements</em>}' containment reference list.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @see #getSubElements()
43 * @generated
44 * @ordered
45 */
46 protected EList<FunctionalElement> subElements;
47
48 /**
49 * The cached setting delegate for the '{@link #getType() <em>Type</em>}' attribute.
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @see #getType()
53 * @generated
54 * @ordered
55 */
56 protected EStructuralFeature.Internal.SettingDelegate TYPE__ESETTING_DELEGATE = ((EStructuralFeature.Internal)famPackage.Literals.FUNCTION__TYPE).getSettingDelegate();
57
58 /**
59 * <!-- begin-user-doc -->
60 * <!-- end-user-doc -->
61 * @generated
62 */
63 protected FunctionImpl() {
64 super();
65 }
66
67 /**
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @generated
71 */
72 @Override
73 protected EClass eStaticClass() {
74 return famPackage.Literals.FUNCTION;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 public EList<FunctionalElement> getSubElements() {
83 if (subElements == null) {
84 subElements = new EObjectContainmentWithInverseEList<FunctionalElement>(FunctionalElement.class, this, famPackage.FUNCTION__SUB_ELEMENTS, famPackage.FUNCTIONAL_ELEMENT__PARENT);
85 }
86 return subElements;
87 }
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 public FunctionType getType() {
95 return (FunctionType)TYPE__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false);
96 }
97
98 /**
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 @SuppressWarnings("unchecked")
104 @Override
105 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
106 switch (featureID) {
107 case famPackage.FUNCTION__SUB_ELEMENTS:
108 return ((InternalEList<InternalEObject>)(InternalEList<?>)getSubElements()).basicAdd(otherEnd, msgs);
109 }
110 return super.eInverseAdd(otherEnd, featureID, msgs);
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 @Override
119 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
120 switch (featureID) {
121 case famPackage.FUNCTION__SUB_ELEMENTS:
122 return ((InternalEList<?>)getSubElements()).basicRemove(otherEnd, msgs);
123 }
124 return super.eInverseRemove(otherEnd, featureID, msgs);
125 }
126
127 /**
128 * <!-- begin-user-doc -->
129 * <!-- end-user-doc -->
130 * @generated
131 */
132 @Override
133 public Object eGet(int featureID, boolean resolve, boolean coreType) {
134 switch (featureID) {
135 case famPackage.FUNCTION__SUB_ELEMENTS:
136 return getSubElements();
137 case famPackage.FUNCTION__TYPE:
138 return getType();
139 }
140 return super.eGet(featureID, resolve, coreType);
141 }
142
143 /**
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @generated
147 */
148 @SuppressWarnings("unchecked")
149 @Override
150 public void eSet(int featureID, Object newValue) {
151 switch (featureID) {
152 case famPackage.FUNCTION__SUB_ELEMENTS:
153 getSubElements().clear();
154 getSubElements().addAll((Collection<? extends FunctionalElement>)newValue);
155 return;
156 }
157 super.eSet(featureID, newValue);
158 }
159
160 /**
161 * <!-- begin-user-doc -->
162 * <!-- end-user-doc -->
163 * @generated
164 */
165 @Override
166 public void eUnset(int featureID) {
167 switch (featureID) {
168 case famPackage.FUNCTION__SUB_ELEMENTS:
169 getSubElements().clear();
170 return;
171 }
172 super.eUnset(featureID);
173 }
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 @Override
181 public boolean eIsSet(int featureID) {
182 switch (featureID) {
183 case famPackage.FUNCTION__SUB_ELEMENTS:
184 return subElements != null && !subElements.isEmpty();
185 case famPackage.FUNCTION__TYPE:
186 return TYPE__ESETTING_DELEGATE.dynamicIsSet(this, null, 0);
187 }
188 return super.eIsSet(featureID);
189 }
190
191} //FunctionImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalArchitectureModelImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalArchitectureModelImpl.java
new file mode 100644
index 00000000..1b45df44
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalArchitectureModelImpl.java
@@ -0,0 +1,152 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
8
9import java.util.Collection;
10
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.common.util.EList;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
19
20import org.eclipse.emf.ecore.util.EObjectContainmentEList;
21import org.eclipse.emf.ecore.util.InternalEList;
22
23/**
24 * <!-- begin-user-doc -->
25 * An implementation of the model object '<em><b>Functional Architecture Model</b></em>'.
26 * <!-- end-user-doc -->
27 * <p>
28 * The following features are implemented:
29 * </p>
30 * <ul>
31 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl#getRootElements <em>Root Elements</em>}</li>
32 * </ul>
33 *
34 * @generated
35 */
36public class FunctionalArchitectureModelImpl extends MinimalEObjectImpl.Container implements FunctionalArchitectureModel {
37 /**
38 * The cached value of the '{@link #getRootElements() <em>Root Elements</em>}' containment reference list.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @see #getRootElements()
42 * @generated
43 * @ordered
44 */
45 protected EList<FunctionalElement> rootElements;
46
47 /**
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @generated
51 */
52 protected FunctionalArchitectureModelImpl() {
53 super();
54 }
55
56 /**
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @generated
60 */
61 @Override
62 protected EClass eStaticClass() {
63 return famPackage.Literals.FUNCTIONAL_ARCHITECTURE_MODEL;
64 }
65
66 /**
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @generated
70 */
71 public EList<FunctionalElement> getRootElements() {
72 if (rootElements == null) {
73 rootElements = new EObjectContainmentEList<FunctionalElement>(FunctionalElement.class, this, famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS);
74 }
75 return rootElements;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 @Override
84 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
85 switch (featureID) {
86 case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS:
87 return ((InternalEList<?>)getRootElements()).basicRemove(otherEnd, msgs);
88 }
89 return super.eInverseRemove(otherEnd, featureID, msgs);
90 }
91
92 /**
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @generated
96 */
97 @Override
98 public Object eGet(int featureID, boolean resolve, boolean coreType) {
99 switch (featureID) {
100 case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS:
101 return getRootElements();
102 }
103 return super.eGet(featureID, resolve, coreType);
104 }
105
106 /**
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 */
111 @SuppressWarnings("unchecked")
112 @Override
113 public void eSet(int featureID, Object newValue) {
114 switch (featureID) {
115 case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS:
116 getRootElements().clear();
117 getRootElements().addAll((Collection<? extends FunctionalElement>)newValue);
118 return;
119 }
120 super.eSet(featureID, newValue);
121 }
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 @Override
129 public void eUnset(int featureID) {
130 switch (featureID) {
131 case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS:
132 getRootElements().clear();
133 return;
134 }
135 super.eUnset(featureID);
136 }
137
138 /**
139 * <!-- begin-user-doc -->
140 * <!-- end-user-doc -->
141 * @generated
142 */
143 @Override
144 public boolean eIsSet(int featureID) {
145 switch (featureID) {
146 case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS:
147 return rootElements != null && !rootElements.isEmpty();
148 }
149 return super.eIsSet(featureID);
150 }
151
152} //FunctionalArchitectureModelImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalDataImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalDataImpl.java
new file mode 100644
index 00000000..069d53d4
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalDataImpl.java
@@ -0,0 +1,267 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface;
8import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
9
10import org.eclipse.emf.common.notify.Notification;
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.ecore.EClass;
14import org.eclipse.emf.ecore.InternalEObject;
15
16import org.eclipse.emf.ecore.impl.ENotificationImpl;
17import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
18
19import org.eclipse.emf.ecore.util.EcoreUtil;
20
21/**
22 * <!-- begin-user-doc -->
23 * An implementation of the model object '<em><b>Functional Data</b></em>'.
24 * <!-- end-user-doc -->
25 * <p>
26 * The following features are implemented:
27 * </p>
28 * <ul>
29 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl#getTerminator <em>Terminator</em>}</li>
30 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl#getInterface <em>Interface</em>}</li>
31 * </ul>
32 *
33 * @generated
34 */
35public abstract class FunctionalDataImpl extends MinimalEObjectImpl.Container implements FunctionalData {
36 /**
37 * The cached value of the '{@link #getTerminator() <em>Terminator</em>}' containment reference.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @see #getTerminator()
41 * @generated
42 * @ordered
43 */
44 protected FAMTerminator terminator;
45
46 /**
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @generated
50 */
51 protected FunctionalDataImpl() {
52 super();
53 }
54
55 /**
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @generated
59 */
60 @Override
61 protected EClass eStaticClass() {
62 return famPackage.Literals.FUNCTIONAL_DATA;
63 }
64
65 /**
66 * <!-- begin-user-doc -->
67 * <!-- end-user-doc -->
68 * @generated
69 */
70 public FAMTerminator getTerminator() {
71 return terminator;
72 }
73
74 /**
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @generated
78 */
79 public NotificationChain basicSetTerminator(FAMTerminator newTerminator, NotificationChain msgs) {
80 FAMTerminator oldTerminator = terminator;
81 terminator = newTerminator;
82 if (eNotificationRequired()) {
83 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_DATA__TERMINATOR, oldTerminator, newTerminator);
84 if (msgs == null) msgs = notification; else msgs.add(notification);
85 }
86 return msgs;
87 }
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 public void setTerminator(FAMTerminator newTerminator) {
95 if (newTerminator != terminator) {
96 NotificationChain msgs = null;
97 if (terminator != null)
98 msgs = ((InternalEObject)terminator).eInverseRemove(this, famPackage.FAM_TERMINATOR__DATA, FAMTerminator.class, msgs);
99 if (newTerminator != null)
100 msgs = ((InternalEObject)newTerminator).eInverseAdd(this, famPackage.FAM_TERMINATOR__DATA, FAMTerminator.class, msgs);
101 msgs = basicSetTerminator(newTerminator, msgs);
102 if (msgs != null) msgs.dispatch();
103 }
104 else if (eNotificationRequired())
105 eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_DATA__TERMINATOR, newTerminator, newTerminator));
106 }
107
108 /**
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @generated
112 */
113 public FunctionalInterface getInterface() {
114 if (eContainerFeatureID() != famPackage.FUNCTIONAL_DATA__INTERFACE) return null;
115 return (FunctionalInterface)eInternalContainer();
116 }
117
118 /**
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @generated
122 */
123 public NotificationChain basicSetInterface(FunctionalInterface newInterface, NotificationChain msgs) {
124 msgs = eBasicSetContainer((InternalEObject)newInterface, famPackage.FUNCTIONAL_DATA__INTERFACE, msgs);
125 return msgs;
126 }
127
128 /**
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @generated
132 */
133 public void setInterface(FunctionalInterface newInterface) {
134 if (newInterface != eInternalContainer() || (eContainerFeatureID() != famPackage.FUNCTIONAL_DATA__INTERFACE && newInterface != null)) {
135 if (EcoreUtil.isAncestor(this, newInterface))
136 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
137 NotificationChain msgs = null;
138 if (eInternalContainer() != null)
139 msgs = eBasicRemoveFromContainer(msgs);
140 if (newInterface != null)
141 msgs = ((InternalEObject)newInterface).eInverseAdd(this, famPackage.FUNCTIONAL_INTERFACE__DATA, FunctionalInterface.class, msgs);
142 msgs = basicSetInterface(newInterface, msgs);
143 if (msgs != null) msgs.dispatch();
144 }
145 else if (eNotificationRequired())
146 eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_DATA__INTERFACE, newInterface, newInterface));
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 @Override
155 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
156 switch (featureID) {
157 case famPackage.FUNCTIONAL_DATA__TERMINATOR:
158 if (terminator != null)
159 msgs = ((InternalEObject)terminator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - famPackage.FUNCTIONAL_DATA__TERMINATOR, null, msgs);
160 return basicSetTerminator((FAMTerminator)otherEnd, msgs);
161 case famPackage.FUNCTIONAL_DATA__INTERFACE:
162 if (eInternalContainer() != null)
163 msgs = eBasicRemoveFromContainer(msgs);
164 return basicSetInterface((FunctionalInterface)otherEnd, msgs);
165 }
166 return super.eInverseAdd(otherEnd, featureID, msgs);
167 }
168
169 /**
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @generated
173 */
174 @Override
175 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
176 switch (featureID) {
177 case famPackage.FUNCTIONAL_DATA__TERMINATOR:
178 return basicSetTerminator(null, msgs);
179 case famPackage.FUNCTIONAL_DATA__INTERFACE:
180 return basicSetInterface(null, msgs);
181 }
182 return super.eInverseRemove(otherEnd, featureID, msgs);
183 }
184
185 /**
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @generated
189 */
190 @Override
191 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
192 switch (eContainerFeatureID()) {
193 case famPackage.FUNCTIONAL_DATA__INTERFACE:
194 return eInternalContainer().eInverseRemove(this, famPackage.FUNCTIONAL_INTERFACE__DATA, FunctionalInterface.class, msgs);
195 }
196 return super.eBasicRemoveFromContainerFeature(msgs);
197 }
198
199 /**
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 */
204 @Override
205 public Object eGet(int featureID, boolean resolve, boolean coreType) {
206 switch (featureID) {
207 case famPackage.FUNCTIONAL_DATA__TERMINATOR:
208 return getTerminator();
209 case famPackage.FUNCTIONAL_DATA__INTERFACE:
210 return getInterface();
211 }
212 return super.eGet(featureID, resolve, coreType);
213 }
214
215 /**
216 * <!-- begin-user-doc -->
217 * <!-- end-user-doc -->
218 * @generated
219 */
220 @Override
221 public void eSet(int featureID, Object newValue) {
222 switch (featureID) {
223 case famPackage.FUNCTIONAL_DATA__TERMINATOR:
224 setTerminator((FAMTerminator)newValue);
225 return;
226 case famPackage.FUNCTIONAL_DATA__INTERFACE:
227 setInterface((FunctionalInterface)newValue);
228 return;
229 }
230 super.eSet(featureID, newValue);
231 }
232
233 /**
234 * <!-- begin-user-doc -->
235 * <!-- end-user-doc -->
236 * @generated
237 */
238 @Override
239 public void eUnset(int featureID) {
240 switch (featureID) {
241 case famPackage.FUNCTIONAL_DATA__TERMINATOR:
242 setTerminator((FAMTerminator)null);
243 return;
244 case famPackage.FUNCTIONAL_DATA__INTERFACE:
245 setInterface((FunctionalInterface)null);
246 return;
247 }
248 super.eUnset(featureID);
249 }
250
251 /**
252 * <!-- begin-user-doc -->
253 * <!-- end-user-doc -->
254 * @generated
255 */
256 @Override
257 public boolean eIsSet(int featureID) {
258 switch (featureID) {
259 case famPackage.FUNCTIONAL_DATA__TERMINATOR:
260 return terminator != null;
261 case famPackage.FUNCTIONAL_DATA__INTERFACE:
262 return getInterface() != null;
263 }
264 return super.eIsSet(featureID);
265 }
266
267} //FunctionalDataImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalElementImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalElementImpl.java
new file mode 100644
index 00000000..318a8706
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalElementImpl.java
@@ -0,0 +1,318 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement;
8import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface;
9import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
10
11import org.eclipse.emf.common.notify.Notification;
12import org.eclipse.emf.common.notify.NotificationChain;
13
14import org.eclipse.emf.ecore.EClass;
15import org.eclipse.emf.ecore.EStructuralFeature;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.impl.ENotificationImpl;
19import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
20
21import org.eclipse.emf.ecore.util.EcoreUtil;
22
23/**
24 * <!-- begin-user-doc -->
25 * An implementation of the model object '<em><b>Functional Element</b></em>'.
26 * <!-- end-user-doc -->
27 * <p>
28 * The following features are implemented:
29 * </p>
30 * <ul>
31 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl#getInterface <em>Interface</em>}</li>
32 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl#getModel <em>Model</em>}</li>
33 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl#getParent <em>Parent</em>}</li>
34 * </ul>
35 *
36 * @generated
37 */
38public abstract class FunctionalElementImpl extends MinimalEObjectImpl.Container implements FunctionalElement {
39 /**
40 * The cached value of the '{@link #getInterface() <em>Interface</em>}' containment reference.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @see #getInterface()
44 * @generated
45 * @ordered
46 */
47 protected FunctionalInterface interface_;
48
49 /**
50 * The cached setting delegate for the '{@link #getModel() <em>Model</em>}' reference.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @see #getModel()
54 * @generated
55 * @ordered
56 */
57 protected EStructuralFeature.Internal.SettingDelegate MODEL__ESETTING_DELEGATE = ((EStructuralFeature.Internal)famPackage.Literals.FUNCTIONAL_ELEMENT__MODEL).getSettingDelegate();
58
59 /**
60 * <!-- begin-user-doc -->
61 * <!-- end-user-doc -->
62 * @generated
63 */
64 protected FunctionalElementImpl() {
65 super();
66 }
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 @Override
74 protected EClass eStaticClass() {
75 return famPackage.Literals.FUNCTIONAL_ELEMENT;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 public FunctionalInterface getInterface() {
84 return interface_;
85 }
86
87 /**
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 */
92 public NotificationChain basicSetInterface(FunctionalInterface newInterface, NotificationChain msgs) {
93 FunctionalInterface oldInterface = interface_;
94 interface_ = newInterface;
95 if (eNotificationRequired()) {
96 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_ELEMENT__INTERFACE, oldInterface, newInterface);
97 if (msgs == null) msgs = notification; else msgs.add(notification);
98 }
99 return msgs;
100 }
101
102 /**
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @generated
106 */
107 public void setInterface(FunctionalInterface newInterface) {
108 if (newInterface != interface_) {
109 NotificationChain msgs = null;
110 if (interface_ != null)
111 msgs = ((InternalEObject)interface_).eInverseRemove(this, famPackage.FUNCTIONAL_INTERFACE__ELEMENT, FunctionalInterface.class, msgs);
112 if (newInterface != null)
113 msgs = ((InternalEObject)newInterface).eInverseAdd(this, famPackage.FUNCTIONAL_INTERFACE__ELEMENT, FunctionalInterface.class, msgs);
114 msgs = basicSetInterface(newInterface, msgs);
115 if (msgs != null) msgs.dispatch();
116 }
117 else if (eNotificationRequired())
118 eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_ELEMENT__INTERFACE, newInterface, newInterface));
119 }
120
121 /**
122 * <!-- begin-user-doc -->
123 * <!-- end-user-doc -->
124 * @generated
125 */
126 public FunctionalArchitectureModel getModel() {
127 return (FunctionalArchitectureModel)MODEL__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false);
128 }
129
130 /**
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @generated
134 */
135 public FunctionalArchitectureModel basicGetModel() {
136 return (FunctionalArchitectureModel)MODEL__ESETTING_DELEGATE.dynamicGet(this, null, 0, false, false);
137 }
138
139 /**
140 * <!-- begin-user-doc -->
141 * <!-- end-user-doc -->
142 * @generated
143 */
144 public void setModel(FunctionalArchitectureModel newModel) {
145 MODEL__ESETTING_DELEGATE.dynamicSet(this, null, 0, newModel);
146 }
147
148 /**
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @generated
152 */
153 public Function getParent() {
154 if (eContainerFeatureID() != famPackage.FUNCTIONAL_ELEMENT__PARENT) return null;
155 return (Function)eInternalContainer();
156 }
157
158 /**
159 * <!-- begin-user-doc -->
160 * <!-- end-user-doc -->
161 * @generated
162 */
163 public NotificationChain basicSetParent(Function newParent, NotificationChain msgs) {
164 msgs = eBasicSetContainer((InternalEObject)newParent, famPackage.FUNCTIONAL_ELEMENT__PARENT, msgs);
165 return msgs;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 public void setParent(Function newParent) {
174 if (newParent != eInternalContainer() || (eContainerFeatureID() != famPackage.FUNCTIONAL_ELEMENT__PARENT && newParent != null)) {
175 if (EcoreUtil.isAncestor(this, newParent))
176 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
177 NotificationChain msgs = null;
178 if (eInternalContainer() != null)
179 msgs = eBasicRemoveFromContainer(msgs);
180 if (newParent != null)
181 msgs = ((InternalEObject)newParent).eInverseAdd(this, famPackage.FUNCTION__SUB_ELEMENTS, Function.class, msgs);
182 msgs = basicSetParent(newParent, msgs);
183 if (msgs != null) msgs.dispatch();
184 }
185 else if (eNotificationRequired())
186 eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_ELEMENT__PARENT, newParent, newParent));
187 }
188
189 /**
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @generated
193 */
194 @Override
195 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
196 switch (featureID) {
197 case famPackage.FUNCTIONAL_ELEMENT__INTERFACE:
198 if (interface_ != null)
199 msgs = ((InternalEObject)interface_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - famPackage.FUNCTIONAL_ELEMENT__INTERFACE, null, msgs);
200 return basicSetInterface((FunctionalInterface)otherEnd, msgs);
201 case famPackage.FUNCTIONAL_ELEMENT__PARENT:
202 if (eInternalContainer() != null)
203 msgs = eBasicRemoveFromContainer(msgs);
204 return basicSetParent((Function)otherEnd, msgs);
205 }
206 return super.eInverseAdd(otherEnd, featureID, msgs);
207 }
208
209 /**
210 * <!-- begin-user-doc -->
211 * <!-- end-user-doc -->
212 * @generated
213 */
214 @Override
215 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
216 switch (featureID) {
217 case famPackage.FUNCTIONAL_ELEMENT__INTERFACE:
218 return basicSetInterface(null, msgs);
219 case famPackage.FUNCTIONAL_ELEMENT__PARENT:
220 return basicSetParent(null, msgs);
221 }
222 return super.eInverseRemove(otherEnd, featureID, msgs);
223 }
224
225 /**
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @generated
229 */
230 @Override
231 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
232 switch (eContainerFeatureID()) {
233 case famPackage.FUNCTIONAL_ELEMENT__PARENT:
234 return eInternalContainer().eInverseRemove(this, famPackage.FUNCTION__SUB_ELEMENTS, Function.class, msgs);
235 }
236 return super.eBasicRemoveFromContainerFeature(msgs);
237 }
238
239 /**
240 * <!-- begin-user-doc -->
241 * <!-- end-user-doc -->
242 * @generated
243 */
244 @Override
245 public Object eGet(int featureID, boolean resolve, boolean coreType) {
246 switch (featureID) {
247 case famPackage.FUNCTIONAL_ELEMENT__INTERFACE:
248 return getInterface();
249 case famPackage.FUNCTIONAL_ELEMENT__MODEL:
250 if (resolve) return getModel();
251 return basicGetModel();
252 case famPackage.FUNCTIONAL_ELEMENT__PARENT:
253 return getParent();
254 }
255 return super.eGet(featureID, resolve, coreType);
256 }
257
258 /**
259 * <!-- begin-user-doc -->
260 * <!-- end-user-doc -->
261 * @generated
262 */
263 @Override
264 public void eSet(int featureID, Object newValue) {
265 switch (featureID) {
266 case famPackage.FUNCTIONAL_ELEMENT__INTERFACE:
267 setInterface((FunctionalInterface)newValue);
268 return;
269 case famPackage.FUNCTIONAL_ELEMENT__MODEL:
270 setModel((FunctionalArchitectureModel)newValue);
271 return;
272 case famPackage.FUNCTIONAL_ELEMENT__PARENT:
273 setParent((Function)newValue);
274 return;
275 }
276 super.eSet(featureID, newValue);
277 }
278
279 /**
280 * <!-- begin-user-doc -->
281 * <!-- end-user-doc -->
282 * @generated
283 */
284 @Override
285 public void eUnset(int featureID) {
286 switch (featureID) {
287 case famPackage.FUNCTIONAL_ELEMENT__INTERFACE:
288 setInterface((FunctionalInterface)null);
289 return;
290 case famPackage.FUNCTIONAL_ELEMENT__MODEL:
291 setModel((FunctionalArchitectureModel)null);
292 return;
293 case famPackage.FUNCTIONAL_ELEMENT__PARENT:
294 setParent((Function)null);
295 return;
296 }
297 super.eUnset(featureID);
298 }
299
300 /**
301 * <!-- begin-user-doc -->
302 * <!-- end-user-doc -->
303 * @generated
304 */
305 @Override
306 public boolean eIsSet(int featureID) {
307 switch (featureID) {
308 case famPackage.FUNCTIONAL_ELEMENT__INTERFACE:
309 return interface_ != null;
310 case famPackage.FUNCTIONAL_ELEMENT__MODEL:
311 return MODEL__ESETTING_DELEGATE.dynamicIsSet(this, null, 0);
312 case famPackage.FUNCTIONAL_ELEMENT__PARENT:
313 return getParent() != null;
314 }
315 return super.eIsSet(featureID);
316 }
317
318} //FunctionalElementImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInputImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInputImpl.java
new file mode 100644
index 00000000..b62e9742
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInputImpl.java
@@ -0,0 +1,165 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
8
9import java.util.Collection;
10
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.common.util.EList;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
19import org.eclipse.emf.ecore.util.InternalEList;
20
21/**
22 * <!-- begin-user-doc -->
23 * An implementation of the model object '<em><b>Functional Input</b></em>'.
24 * <!-- end-user-doc -->
25 * <p>
26 * The following features are implemented:
27 * </p>
28 * <ul>
29 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl#getIncomingLinks <em>Incoming Links</em>}</li>
30 * </ul>
31 *
32 * @generated
33 */
34public class FunctionalInputImpl extends FunctionalDataImpl implements FunctionalInput {
35 /**
36 * The cached value of the '{@link #getIncomingLinks() <em>Incoming Links</em>}' reference list.
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @see #getIncomingLinks()
40 * @generated
41 * @ordered
42 */
43 protected EList<InformationLink> incomingLinks;
44
45 /**
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @generated
49 */
50 protected FunctionalInputImpl() {
51 super();
52 }
53
54 /**
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 @Override
60 protected EClass eStaticClass() {
61 return famPackage.Literals.FUNCTIONAL_INPUT;
62 }
63
64 /**
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 public EList<InformationLink> getIncomingLinks() {
70 if (incomingLinks == null) {
71 incomingLinks = new EObjectWithInverseResolvingEList<InformationLink>(InformationLink.class, this, famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS, famPackage.INFORMATION_LINK__TO);
72 }
73 return incomingLinks;
74 }
75
76 /**
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 @SuppressWarnings("unchecked")
82 @Override
83 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
84 switch (featureID) {
85 case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS:
86 return ((InternalEList<InternalEObject>)(InternalEList<?>)getIncomingLinks()).basicAdd(otherEnd, msgs);
87 }
88 return super.eInverseAdd(otherEnd, featureID, msgs);
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
98 switch (featureID) {
99 case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS:
100 return ((InternalEList<?>)getIncomingLinks()).basicRemove(otherEnd, msgs);
101 }
102 return super.eInverseRemove(otherEnd, featureID, msgs);
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public Object eGet(int featureID, boolean resolve, boolean coreType) {
112 switch (featureID) {
113 case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS:
114 return getIncomingLinks();
115 }
116 return super.eGet(featureID, resolve, coreType);
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @SuppressWarnings("unchecked")
125 @Override
126 public void eSet(int featureID, Object newValue) {
127 switch (featureID) {
128 case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS:
129 getIncomingLinks().clear();
130 getIncomingLinks().addAll((Collection<? extends InformationLink>)newValue);
131 return;
132 }
133 super.eSet(featureID, newValue);
134 }
135
136 /**
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @generated
140 */
141 @Override
142 public void eUnset(int featureID) {
143 switch (featureID) {
144 case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS:
145 getIncomingLinks().clear();
146 return;
147 }
148 super.eUnset(featureID);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public boolean eIsSet(int featureID) {
158 switch (featureID) {
159 case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS:
160 return incomingLinks != null && !incomingLinks.isEmpty();
161 }
162 return super.eIsSet(featureID);
163 }
164
165} //FunctionalInputImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInterfaceImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInterfaceImpl.java
new file mode 100644
index 00000000..b9417a23
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInterfaceImpl.java
@@ -0,0 +1,243 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface;
8import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
9
10import java.util.Collection;
11
12import org.eclipse.emf.common.notify.Notification;
13import org.eclipse.emf.common.notify.NotificationChain;
14
15import org.eclipse.emf.common.util.EList;
16
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.InternalEObject;
19
20import org.eclipse.emf.ecore.impl.ENotificationImpl;
21import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
22
23import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
24import org.eclipse.emf.ecore.util.EcoreUtil;
25import org.eclipse.emf.ecore.util.InternalEList;
26
27/**
28 * <!-- begin-user-doc -->
29 * An implementation of the model object '<em><b>Functional Interface</b></em>'.
30 * <!-- end-user-doc -->
31 * <p>
32 * The following features are implemented:
33 * </p>
34 * <ul>
35 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl#getData <em>Data</em>}</li>
36 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl#getElement <em>Element</em>}</li>
37 * </ul>
38 *
39 * @generated
40 */
41public class FunctionalInterfaceImpl extends MinimalEObjectImpl.Container implements FunctionalInterface {
42 /**
43 * The cached value of the '{@link #getData() <em>Data</em>}' containment reference list.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @see #getData()
47 * @generated
48 * @ordered
49 */
50 protected EList<FunctionalData> data;
51
52 /**
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 protected FunctionalInterfaceImpl() {
58 super();
59 }
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 @Override
67 protected EClass eStaticClass() {
68 return famPackage.Literals.FUNCTIONAL_INTERFACE;
69 }
70
71 /**
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @generated
75 */
76 public EList<FunctionalData> getData() {
77 if (data == null) {
78 data = new EObjectContainmentWithInverseEList<FunctionalData>(FunctionalData.class, this, famPackage.FUNCTIONAL_INTERFACE__DATA, famPackage.FUNCTIONAL_DATA__INTERFACE);
79 }
80 return data;
81 }
82
83 /**
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @generated
87 */
88 public FunctionalElement getElement() {
89 if (eContainerFeatureID() != famPackage.FUNCTIONAL_INTERFACE__ELEMENT) return null;
90 return (FunctionalElement)eInternalContainer();
91 }
92
93 /**
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @generated
97 */
98 public NotificationChain basicSetElement(FunctionalElement newElement, NotificationChain msgs) {
99 msgs = eBasicSetContainer((InternalEObject)newElement, famPackage.FUNCTIONAL_INTERFACE__ELEMENT, msgs);
100 return msgs;
101 }
102
103 /**
104 * <!-- begin-user-doc -->
105 * <!-- end-user-doc -->
106 * @generated
107 */
108 public void setElement(FunctionalElement newElement) {
109 if (newElement != eInternalContainer() || (eContainerFeatureID() != famPackage.FUNCTIONAL_INTERFACE__ELEMENT && newElement != null)) {
110 if (EcoreUtil.isAncestor(this, newElement))
111 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
112 NotificationChain msgs = null;
113 if (eInternalContainer() != null)
114 msgs = eBasicRemoveFromContainer(msgs);
115 if (newElement != null)
116 msgs = ((InternalEObject)newElement).eInverseAdd(this, famPackage.FUNCTIONAL_ELEMENT__INTERFACE, FunctionalElement.class, msgs);
117 msgs = basicSetElement(newElement, msgs);
118 if (msgs != null) msgs.dispatch();
119 }
120 else if (eNotificationRequired())
121 eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_INTERFACE__ELEMENT, newElement, newElement));
122 }
123
124 /**
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 */
129 @SuppressWarnings("unchecked")
130 @Override
131 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
132 switch (featureID) {
133 case famPackage.FUNCTIONAL_INTERFACE__DATA:
134 return ((InternalEList<InternalEObject>)(InternalEList<?>)getData()).basicAdd(otherEnd, msgs);
135 case famPackage.FUNCTIONAL_INTERFACE__ELEMENT:
136 if (eInternalContainer() != null)
137 msgs = eBasicRemoveFromContainer(msgs);
138 return basicSetElement((FunctionalElement)otherEnd, msgs);
139 }
140 return super.eInverseAdd(otherEnd, featureID, msgs);
141 }
142
143 /**
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @generated
147 */
148 @Override
149 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
150 switch (featureID) {
151 case famPackage.FUNCTIONAL_INTERFACE__DATA:
152 return ((InternalEList<?>)getData()).basicRemove(otherEnd, msgs);
153 case famPackage.FUNCTIONAL_INTERFACE__ELEMENT:
154 return basicSetElement(null, msgs);
155 }
156 return super.eInverseRemove(otherEnd, featureID, msgs);
157 }
158
159 /**
160 * <!-- begin-user-doc -->
161 * <!-- end-user-doc -->
162 * @generated
163 */
164 @Override
165 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
166 switch (eContainerFeatureID()) {
167 case famPackage.FUNCTIONAL_INTERFACE__ELEMENT:
168 return eInternalContainer().eInverseRemove(this, famPackage.FUNCTIONAL_ELEMENT__INTERFACE, FunctionalElement.class, msgs);
169 }
170 return super.eBasicRemoveFromContainerFeature(msgs);
171 }
172
173 /**
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @generated
177 */
178 @Override
179 public Object eGet(int featureID, boolean resolve, boolean coreType) {
180 switch (featureID) {
181 case famPackage.FUNCTIONAL_INTERFACE__DATA:
182 return getData();
183 case famPackage.FUNCTIONAL_INTERFACE__ELEMENT:
184 return getElement();
185 }
186 return super.eGet(featureID, resolve, coreType);
187 }
188
189 /**
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @generated
193 */
194 @SuppressWarnings("unchecked")
195 @Override
196 public void eSet(int featureID, Object newValue) {
197 switch (featureID) {
198 case famPackage.FUNCTIONAL_INTERFACE__DATA:
199 getData().clear();
200 getData().addAll((Collection<? extends FunctionalData>)newValue);
201 return;
202 case famPackage.FUNCTIONAL_INTERFACE__ELEMENT:
203 setElement((FunctionalElement)newValue);
204 return;
205 }
206 super.eSet(featureID, newValue);
207 }
208
209 /**
210 * <!-- begin-user-doc -->
211 * <!-- end-user-doc -->
212 * @generated
213 */
214 @Override
215 public void eUnset(int featureID) {
216 switch (featureID) {
217 case famPackage.FUNCTIONAL_INTERFACE__DATA:
218 getData().clear();
219 return;
220 case famPackage.FUNCTIONAL_INTERFACE__ELEMENT:
221 setElement((FunctionalElement)null);
222 return;
223 }
224 super.eUnset(featureID);
225 }
226
227 /**
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @generated
231 */
232 @Override
233 public boolean eIsSet(int featureID) {
234 switch (featureID) {
235 case famPackage.FUNCTIONAL_INTERFACE__DATA:
236 return data != null && !data.isEmpty();
237 case famPackage.FUNCTIONAL_INTERFACE__ELEMENT:
238 return getElement() != null;
239 }
240 return super.eIsSet(featureID);
241 }
242
243} //FunctionalInterfaceImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalOutputImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalOutputImpl.java
new file mode 100644
index 00000000..30bde348
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalOutputImpl.java
@@ -0,0 +1,165 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
8
9import java.util.Collection;
10
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.common.util.EList;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
19import org.eclipse.emf.ecore.util.InternalEList;
20
21/**
22 * <!-- begin-user-doc -->
23 * An implementation of the model object '<em><b>Functional Output</b></em>'.
24 * <!-- end-user-doc -->
25 * <p>
26 * The following features are implemented:
27 * </p>
28 * <ul>
29 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl#getOutgoingLinks <em>Outgoing Links</em>}</li>
30 * </ul>
31 *
32 * @generated
33 */
34public class FunctionalOutputImpl extends FunctionalDataImpl implements FunctionalOutput {
35 /**
36 * The cached value of the '{@link #getOutgoingLinks() <em>Outgoing Links</em>}' containment reference list.
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @see #getOutgoingLinks()
40 * @generated
41 * @ordered
42 */
43 protected EList<InformationLink> outgoingLinks;
44
45 /**
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @generated
49 */
50 protected FunctionalOutputImpl() {
51 super();
52 }
53
54 /**
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 @Override
60 protected EClass eStaticClass() {
61 return famPackage.Literals.FUNCTIONAL_OUTPUT;
62 }
63
64 /**
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 public EList<InformationLink> getOutgoingLinks() {
70 if (outgoingLinks == null) {
71 outgoingLinks = new EObjectContainmentWithInverseEList<InformationLink>(InformationLink.class, this, famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS, famPackage.INFORMATION_LINK__FROM);
72 }
73 return outgoingLinks;
74 }
75
76 /**
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 @SuppressWarnings("unchecked")
82 @Override
83 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
84 switch (featureID) {
85 case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS:
86 return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutgoingLinks()).basicAdd(otherEnd, msgs);
87 }
88 return super.eInverseAdd(otherEnd, featureID, msgs);
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
98 switch (featureID) {
99 case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS:
100 return ((InternalEList<?>)getOutgoingLinks()).basicRemove(otherEnd, msgs);
101 }
102 return super.eInverseRemove(otherEnd, featureID, msgs);
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public Object eGet(int featureID, boolean resolve, boolean coreType) {
112 switch (featureID) {
113 case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS:
114 return getOutgoingLinks();
115 }
116 return super.eGet(featureID, resolve, coreType);
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @SuppressWarnings("unchecked")
125 @Override
126 public void eSet(int featureID, Object newValue) {
127 switch (featureID) {
128 case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS:
129 getOutgoingLinks().clear();
130 getOutgoingLinks().addAll((Collection<? extends InformationLink>)newValue);
131 return;
132 }
133 super.eSet(featureID, newValue);
134 }
135
136 /**
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @generated
140 */
141 @Override
142 public void eUnset(int featureID) {
143 switch (featureID) {
144 case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS:
145 getOutgoingLinks().clear();
146 return;
147 }
148 super.eUnset(featureID);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public boolean eIsSet(int featureID) {
158 switch (featureID) {
159 case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS:
160 return outgoingLinks != null && !outgoingLinks.isEmpty();
161 }
162 return super.eIsSet(featureID);
163 }
164
165} //FunctionalOutputImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/InformationLinkImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/InformationLinkImpl.java
new file mode 100644
index 00000000..b87f4201
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/InformationLinkImpl.java
@@ -0,0 +1,285 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink;
8import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
9
10import org.eclipse.emf.common.notify.Notification;
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.ecore.EClass;
14import org.eclipse.emf.ecore.InternalEObject;
15
16import org.eclipse.emf.ecore.impl.ENotificationImpl;
17import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
18
19import org.eclipse.emf.ecore.util.EcoreUtil;
20
21/**
22 * <!-- begin-user-doc -->
23 * An implementation of the model object '<em><b>Information Link</b></em>'.
24 * <!-- end-user-doc -->
25 * <p>
26 * The following features are implemented:
27 * </p>
28 * <ul>
29 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl#getFrom <em>From</em>}</li>
30 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl#getTo <em>To</em>}</li>
31 * </ul>
32 *
33 * @generated
34 */
35public class InformationLinkImpl extends MinimalEObjectImpl.Container implements InformationLink {
36 /**
37 * The cached value of the '{@link #getTo() <em>To</em>}' reference.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @see #getTo()
41 * @generated
42 * @ordered
43 */
44 protected FunctionalInput to;
45
46 /**
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @generated
50 */
51 protected InformationLinkImpl() {
52 super();
53 }
54
55 /**
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @generated
59 */
60 @Override
61 protected EClass eStaticClass() {
62 return famPackage.Literals.INFORMATION_LINK;
63 }
64
65 /**
66 * <!-- begin-user-doc -->
67 * <!-- end-user-doc -->
68 * @generated
69 */
70 public FunctionalOutput getFrom() {
71 if (eContainerFeatureID() != famPackage.INFORMATION_LINK__FROM) return null;
72 return (FunctionalOutput)eInternalContainer();
73 }
74
75 /**
76 * <!-- begin-user-doc -->
77 * <!-- end-user-doc -->
78 * @generated
79 */
80 public NotificationChain basicSetFrom(FunctionalOutput newFrom, NotificationChain msgs) {
81 msgs = eBasicSetContainer((InternalEObject)newFrom, famPackage.INFORMATION_LINK__FROM, msgs);
82 return msgs;
83 }
84
85 /**
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 public void setFrom(FunctionalOutput newFrom) {
91 if (newFrom != eInternalContainer() || (eContainerFeatureID() != famPackage.INFORMATION_LINK__FROM && newFrom != null)) {
92 if (EcoreUtil.isAncestor(this, newFrom))
93 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
94 NotificationChain msgs = null;
95 if (eInternalContainer() != null)
96 msgs = eBasicRemoveFromContainer(msgs);
97 if (newFrom != null)
98 msgs = ((InternalEObject)newFrom).eInverseAdd(this, famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS, FunctionalOutput.class, msgs);
99 msgs = basicSetFrom(newFrom, msgs);
100 if (msgs != null) msgs.dispatch();
101 }
102 else if (eNotificationRequired())
103 eNotify(new ENotificationImpl(this, Notification.SET, famPackage.INFORMATION_LINK__FROM, newFrom, newFrom));
104 }
105
106 /**
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 */
111 public FunctionalInput getTo() {
112 if (to != null && to.eIsProxy()) {
113 InternalEObject oldTo = (InternalEObject)to;
114 to = (FunctionalInput)eResolveProxy(oldTo);
115 if (to != oldTo) {
116 if (eNotificationRequired())
117 eNotify(new ENotificationImpl(this, Notification.RESOLVE, famPackage.INFORMATION_LINK__TO, oldTo, to));
118 }
119 }
120 return to;
121 }
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 public FunctionalInput basicGetTo() {
129 return to;
130 }
131
132 /**
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @generated
136 */
137 public NotificationChain basicSetTo(FunctionalInput newTo, NotificationChain msgs) {
138 FunctionalInput oldTo = to;
139 to = newTo;
140 if (eNotificationRequired()) {
141 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, famPackage.INFORMATION_LINK__TO, oldTo, newTo);
142 if (msgs == null) msgs = notification; else msgs.add(notification);
143 }
144 return msgs;
145 }
146
147 /**
148 * <!-- begin-user-doc -->
149 * <!-- end-user-doc -->
150 * @generated
151 */
152 public void setTo(FunctionalInput newTo) {
153 if (newTo != to) {
154 NotificationChain msgs = null;
155 if (to != null)
156 msgs = ((InternalEObject)to).eInverseRemove(this, famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS, FunctionalInput.class, msgs);
157 if (newTo != null)
158 msgs = ((InternalEObject)newTo).eInverseAdd(this, famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS, FunctionalInput.class, msgs);
159 msgs = basicSetTo(newTo, msgs);
160 if (msgs != null) msgs.dispatch();
161 }
162 else if (eNotificationRequired())
163 eNotify(new ENotificationImpl(this, Notification.SET, famPackage.INFORMATION_LINK__TO, newTo, newTo));
164 }
165
166 /**
167 * <!-- begin-user-doc -->
168 * <!-- end-user-doc -->
169 * @generated
170 */
171 @Override
172 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
173 switch (featureID) {
174 case famPackage.INFORMATION_LINK__FROM:
175 if (eInternalContainer() != null)
176 msgs = eBasicRemoveFromContainer(msgs);
177 return basicSetFrom((FunctionalOutput)otherEnd, msgs);
178 case famPackage.INFORMATION_LINK__TO:
179 if (to != null)
180 msgs = ((InternalEObject)to).eInverseRemove(this, famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS, FunctionalInput.class, msgs);
181 return basicSetTo((FunctionalInput)otherEnd, msgs);
182 }
183 return super.eInverseAdd(otherEnd, featureID, msgs);
184 }
185
186 /**
187 * <!-- begin-user-doc -->
188 * <!-- end-user-doc -->
189 * @generated
190 */
191 @Override
192 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
193 switch (featureID) {
194 case famPackage.INFORMATION_LINK__FROM:
195 return basicSetFrom(null, msgs);
196 case famPackage.INFORMATION_LINK__TO:
197 return basicSetTo(null, msgs);
198 }
199 return super.eInverseRemove(otherEnd, featureID, msgs);
200 }
201
202 /**
203 * <!-- begin-user-doc -->
204 * <!-- end-user-doc -->
205 * @generated
206 */
207 @Override
208 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
209 switch (eContainerFeatureID()) {
210 case famPackage.INFORMATION_LINK__FROM:
211 return eInternalContainer().eInverseRemove(this, famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS, FunctionalOutput.class, msgs);
212 }
213 return super.eBasicRemoveFromContainerFeature(msgs);
214 }
215
216 /**
217 * <!-- begin-user-doc -->
218 * <!-- end-user-doc -->
219 * @generated
220 */
221 @Override
222 public Object eGet(int featureID, boolean resolve, boolean coreType) {
223 switch (featureID) {
224 case famPackage.INFORMATION_LINK__FROM:
225 return getFrom();
226 case famPackage.INFORMATION_LINK__TO:
227 if (resolve) return getTo();
228 return basicGetTo();
229 }
230 return super.eGet(featureID, resolve, coreType);
231 }
232
233 /**
234 * <!-- begin-user-doc -->
235 * <!-- end-user-doc -->
236 * @generated
237 */
238 @Override
239 public void eSet(int featureID, Object newValue) {
240 switch (featureID) {
241 case famPackage.INFORMATION_LINK__FROM:
242 setFrom((FunctionalOutput)newValue);
243 return;
244 case famPackage.INFORMATION_LINK__TO:
245 setTo((FunctionalInput)newValue);
246 return;
247 }
248 super.eSet(featureID, newValue);
249 }
250
251 /**
252 * <!-- begin-user-doc -->
253 * <!-- end-user-doc -->
254 * @generated
255 */
256 @Override
257 public void eUnset(int featureID) {
258 switch (featureID) {
259 case famPackage.INFORMATION_LINK__FROM:
260 setFrom((FunctionalOutput)null);
261 return;
262 case famPackage.INFORMATION_LINK__TO:
263 setTo((FunctionalInput)null);
264 return;
265 }
266 super.eUnset(featureID);
267 }
268
269 /**
270 * <!-- begin-user-doc -->
271 * <!-- end-user-doc -->
272 * @generated
273 */
274 @Override
275 public boolean eIsSet(int featureID) {
276 switch (featureID) {
277 case famPackage.INFORMATION_LINK__FROM:
278 return getFrom() != null;
279 case famPackage.INFORMATION_LINK__TO:
280 return to != null;
281 }
282 return super.eIsSet(featureID);
283 }
284
285} //InformationLinkImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famFactoryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famFactoryImpl.java
new file mode 100644
index 00000000..5c2a9c51
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famFactoryImpl.java
@@ -0,0 +1,219 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import org.eclipse.emf.ecore.EClass;
6import org.eclipse.emf.ecore.EDataType;
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.EPackage;
9import org.eclipse.emf.ecore.impl.EFactoryImpl;
10import org.eclipse.emf.ecore.plugin.EcorePlugin;
11
12import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator;
13import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function;
14import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType;
15import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel;
16import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput;
17import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface;
18import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput;
19import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink;
20import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famFactory;
21import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
22
23/**
24 * <!-- begin-user-doc -->
25 * An implementation of the model <b>Factory</b>.
26 * <!-- end-user-doc -->
27 * @generated
28 */
29public class famFactoryImpl extends EFactoryImpl implements famFactory {
30 /**
31 * Creates the default factory implementation.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @generated
35 */
36 public static famFactory init() {
37 try {
38 famFactory thefamFactory = (famFactory)EPackage.Registry.INSTANCE.getEFactory(famPackage.eNS_URI);
39 if (thefamFactory != null) {
40 return thefamFactory;
41 }
42 }
43 catch (Exception exception) {
44 EcorePlugin.INSTANCE.log(exception);
45 }
46 return new famFactoryImpl();
47 }
48
49 /**
50 * Creates an instance of the factory.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @generated
54 */
55 public famFactoryImpl() {
56 super();
57 }
58
59 /**
60 * <!-- begin-user-doc -->
61 * <!-- end-user-doc -->
62 * @generated
63 */
64 @Override
65 public EObject create(EClass eClass) {
66 switch (eClass.getClassifierID()) {
67 case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL: return createFunctionalArchitectureModel();
68 case famPackage.FUNCTION: return createFunction();
69 case famPackage.FAM_TERMINATOR: return createFAMTerminator();
70 case famPackage.INFORMATION_LINK: return createInformationLink();
71 case famPackage.FUNCTIONAL_INTERFACE: return createFunctionalInterface();
72 case famPackage.FUNCTIONAL_INPUT: return createFunctionalInput();
73 case famPackage.FUNCTIONAL_OUTPUT: return createFunctionalOutput();
74 default:
75 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
76 }
77 }
78
79 /**
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @generated
83 */
84 @Override
85 public Object createFromString(EDataType eDataType, String initialValue) {
86 switch (eDataType.getClassifierID()) {
87 case famPackage.FUNCTION_TYPE:
88 return createFunctionTypeFromString(eDataType, initialValue);
89 default:
90 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
91 }
92 }
93
94 /**
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @generated
98 */
99 @Override
100 public String convertToString(EDataType eDataType, Object instanceValue) {
101 switch (eDataType.getClassifierID()) {
102 case famPackage.FUNCTION_TYPE:
103 return convertFunctionTypeToString(eDataType, instanceValue);
104 default:
105 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
106 }
107 }
108
109 /**
110 * <!-- begin-user-doc -->
111 * <!-- end-user-doc -->
112 * @generated
113 */
114 public FunctionalArchitectureModel createFunctionalArchitectureModel() {
115 FunctionalArchitectureModelImpl functionalArchitectureModel = new FunctionalArchitectureModelImpl();
116 return functionalArchitectureModel;
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 public Function createFunction() {
125 FunctionImpl function = new FunctionImpl();
126 return function;
127 }
128
129 /**
130 * <!-- begin-user-doc -->
131 * <!-- end-user-doc -->
132 * @generated
133 */
134 public FAMTerminator createFAMTerminator() {
135 FAMTerminatorImpl famTerminator = new FAMTerminatorImpl();
136 return famTerminator;
137 }
138
139 /**
140 * <!-- begin-user-doc -->
141 * <!-- end-user-doc -->
142 * @generated
143 */
144 public InformationLink createInformationLink() {
145 InformationLinkImpl informationLink = new InformationLinkImpl();
146 return informationLink;
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 public FunctionalInterface createFunctionalInterface() {
155 FunctionalInterfaceImpl functionalInterface = new FunctionalInterfaceImpl();
156 return functionalInterface;
157 }
158
159 /**
160 * <!-- begin-user-doc -->
161 * <!-- end-user-doc -->
162 * @generated
163 */
164 public FunctionalInput createFunctionalInput() {
165 FunctionalInputImpl functionalInput = new FunctionalInputImpl();
166 return functionalInput;
167 }
168
169 /**
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @generated
173 */
174 public FunctionalOutput createFunctionalOutput() {
175 FunctionalOutputImpl functionalOutput = new FunctionalOutputImpl();
176 return functionalOutput;
177 }
178
179 /**
180 * <!-- begin-user-doc -->
181 * <!-- end-user-doc -->
182 * @generated
183 */
184 public FunctionType createFunctionTypeFromString(EDataType eDataType, String initialValue) {
185 FunctionType result = FunctionType.get(initialValue);
186 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
187 return result;
188 }
189
190 /**
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 public String convertFunctionTypeToString(EDataType eDataType, Object instanceValue) {
196 return instanceValue == null ? null : instanceValue.toString();
197 }
198
199 /**
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 */
204 public famPackage getfamPackage() {
205 return (famPackage)getEPackage();
206 }
207
208 /**
209 * <!-- begin-user-doc -->
210 * <!-- end-user-doc -->
211 * @deprecated
212 * @generated
213 */
214 @Deprecated
215 public static famPackage getPackage() {
216 return famPackage.eINSTANCE;
217 }
218
219} //famFactoryImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famPackageImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famPackageImpl.java
new file mode 100644
index 00000000..74efeeeb
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famPackageImpl.java
@@ -0,0 +1,574 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator;
6import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function;
7import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType;
8import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel;
9import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData;
10import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement;
11import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput;
12import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface;
13import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput;
14import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink;
15import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famFactory;
16import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
17
18import org.eclipse.emf.ecore.EAttribute;
19import org.eclipse.emf.ecore.EClass;
20import org.eclipse.emf.ecore.EEnum;
21import org.eclipse.emf.ecore.EPackage;
22import org.eclipse.emf.ecore.EReference;
23
24import org.eclipse.emf.ecore.impl.EPackageImpl;
25
26/**
27 * <!-- begin-user-doc -->
28 * An implementation of the model <b>Package</b>.
29 * <!-- end-user-doc -->
30 * @generated
31 */
32public class famPackageImpl extends EPackageImpl implements famPackage {
33 /**
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @generated
37 */
38 private EClass functionalElementEClass = null;
39
40 /**
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @generated
44 */
45 private EClass functionalArchitectureModelEClass = null;
46
47 /**
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @generated
51 */
52 private EClass functionEClass = null;
53
54 /**
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 private EClass famTerminatorEClass = null;
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 private EClass informationLinkEClass = null;
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 private EClass functionalInterfaceEClass = null;
74
75 /**
76 * <!-- begin-user-doc -->
77 * <!-- end-user-doc -->
78 * @generated
79 */
80 private EClass functionalInputEClass = null;
81
82 /**
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @generated
86 */
87 private EClass functionalOutputEClass = null;
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 private EClass functionalDataEClass = null;
95
96 /**
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @generated
100 */
101 private EEnum functionTypeEEnum = null;
102
103 /**
104 * Creates an instance of the model <b>Package</b>, registered with
105 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
106 * package URI value.
107 * <p>Note: the correct way to create the package is via the static
108 * factory method {@link #init init()}, which also performs
109 * initialization of the package, or returns the registered package,
110 * if one already exists.
111 * <!-- begin-user-doc -->
112 * <!-- end-user-doc -->
113 * @see org.eclipse.emf.ecore.EPackage.Registry
114 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#eNS_URI
115 * @see #init()
116 * @generated
117 */
118 private famPackageImpl() {
119 super(eNS_URI, famFactory.eINSTANCE);
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 private static boolean isInited = false;
128
129 /**
130 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
131 *
132 * <p>This method is used to initialize {@link famPackage#eINSTANCE} when that field is accessed.
133 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @see #eNS_URI
137 * @see #createPackageContents()
138 * @see #initializePackageContents()
139 * @generated
140 */
141 public static famPackage init() {
142 if (isInited) return (famPackage)EPackage.Registry.INSTANCE.getEPackage(famPackage.eNS_URI);
143
144 // Obtain or create and register package
145 famPackageImpl thefamPackage = (famPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof famPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new famPackageImpl());
146
147 isInited = true;
148
149 // Create package meta-data objects
150 thefamPackage.createPackageContents();
151
152 // Initialize created meta-data
153 thefamPackage.initializePackageContents();
154
155 // Mark meta-data to indicate it can't be changed
156 thefamPackage.freeze();
157
158
159 // Update the registry and return the package
160 EPackage.Registry.INSTANCE.put(famPackage.eNS_URI, thefamPackage);
161 return thefamPackage;
162 }
163
164 /**
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @generated
168 */
169 public EClass getFunctionalElement() {
170 return functionalElementEClass;
171 }
172
173 /**
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @generated
177 */
178 public EReference getFunctionalElement_Interface() {
179 return (EReference)functionalElementEClass.getEStructuralFeatures().get(0);
180 }
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 public EReference getFunctionalElement_Model() {
188 return (EReference)functionalElementEClass.getEStructuralFeatures().get(1);
189 }
190
191 /**
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 */
196 public EReference getFunctionalElement_Parent() {
197 return (EReference)functionalElementEClass.getEStructuralFeatures().get(2);
198 }
199
200 /**
201 * <!-- begin-user-doc -->
202 * <!-- end-user-doc -->
203 * @generated
204 */
205 public EClass getFunctionalArchitectureModel() {
206 return functionalArchitectureModelEClass;
207 }
208
209 /**
210 * <!-- begin-user-doc -->
211 * <!-- end-user-doc -->
212 * @generated
213 */
214 public EReference getFunctionalArchitectureModel_RootElements() {
215 return (EReference)functionalArchitectureModelEClass.getEStructuralFeatures().get(0);
216 }
217
218 /**
219 * <!-- begin-user-doc -->
220 * <!-- end-user-doc -->
221 * @generated
222 */
223 public EClass getFunction() {
224 return functionEClass;
225 }
226
227 /**
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @generated
231 */
232 public EReference getFunction_SubElements() {
233 return (EReference)functionEClass.getEStructuralFeatures().get(0);
234 }
235
236 /**
237 * <!-- begin-user-doc -->
238 * <!-- end-user-doc -->
239 * @generated
240 */
241 public EAttribute getFunction_Type() {
242 return (EAttribute)functionEClass.getEStructuralFeatures().get(1);
243 }
244
245 /**
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @generated
249 */
250 public EClass getFAMTerminator() {
251 return famTerminatorEClass;
252 }
253
254 /**
255 * <!-- begin-user-doc -->
256 * <!-- end-user-doc -->
257 * @generated
258 */
259 public EReference getFAMTerminator_Data() {
260 return (EReference)famTerminatorEClass.getEStructuralFeatures().get(0);
261 }
262
263 /**
264 * <!-- begin-user-doc -->
265 * <!-- end-user-doc -->
266 * @generated
267 */
268 public EClass getInformationLink() {
269 return informationLinkEClass;
270 }
271
272 /**
273 * <!-- begin-user-doc -->
274 * <!-- end-user-doc -->
275 * @generated
276 */
277 public EReference getInformationLink_From() {
278 return (EReference)informationLinkEClass.getEStructuralFeatures().get(0);
279 }
280
281 /**
282 * <!-- begin-user-doc -->
283 * <!-- end-user-doc -->
284 * @generated
285 */
286 public EReference getInformationLink_To() {
287 return (EReference)informationLinkEClass.getEStructuralFeatures().get(1);
288 }
289
290 /**
291 * <!-- begin-user-doc -->
292 * <!-- end-user-doc -->
293 * @generated
294 */
295 public EClass getFunctionalInterface() {
296 return functionalInterfaceEClass;
297 }
298
299 /**
300 * <!-- begin-user-doc -->
301 * <!-- end-user-doc -->
302 * @generated
303 */
304 public EReference getFunctionalInterface_Data() {
305 return (EReference)functionalInterfaceEClass.getEStructuralFeatures().get(0);
306 }
307
308 /**
309 * <!-- begin-user-doc -->
310 * <!-- end-user-doc -->
311 * @generated
312 */
313 public EReference getFunctionalInterface_Element() {
314 return (EReference)functionalInterfaceEClass.getEStructuralFeatures().get(1);
315 }
316
317 /**
318 * <!-- begin-user-doc -->
319 * <!-- end-user-doc -->
320 * @generated
321 */
322 public EClass getFunctionalInput() {
323 return functionalInputEClass;
324 }
325
326 /**
327 * <!-- begin-user-doc -->
328 * <!-- end-user-doc -->
329 * @generated
330 */
331 public EReference getFunctionalInput_IncomingLinks() {
332 return (EReference)functionalInputEClass.getEStructuralFeatures().get(0);
333 }
334
335 /**
336 * <!-- begin-user-doc -->
337 * <!-- end-user-doc -->
338 * @generated
339 */
340 public EClass getFunctionalOutput() {
341 return functionalOutputEClass;
342 }
343
344 /**
345 * <!-- begin-user-doc -->
346 * <!-- end-user-doc -->
347 * @generated
348 */
349 public EReference getFunctionalOutput_OutgoingLinks() {
350 return (EReference)functionalOutputEClass.getEStructuralFeatures().get(0);
351 }
352
353 /**
354 * <!-- begin-user-doc -->
355 * <!-- end-user-doc -->
356 * @generated
357 */
358 public EClass getFunctionalData() {
359 return functionalDataEClass;
360 }
361
362 /**
363 * <!-- begin-user-doc -->
364 * <!-- end-user-doc -->
365 * @generated
366 */
367 public EReference getFunctionalData_Terminator() {
368 return (EReference)functionalDataEClass.getEStructuralFeatures().get(0);
369 }
370
371 /**
372 * <!-- begin-user-doc -->
373 * <!-- end-user-doc -->
374 * @generated
375 */
376 public EReference getFunctionalData_Interface() {
377 return (EReference)functionalDataEClass.getEStructuralFeatures().get(1);
378 }
379
380 /**
381 * <!-- begin-user-doc -->
382 * <!-- end-user-doc -->
383 * @generated
384 */
385 public EEnum getFunctionType() {
386 return functionTypeEEnum;
387 }
388
389 /**
390 * <!-- begin-user-doc -->
391 * <!-- end-user-doc -->
392 * @generated
393 */
394 public famFactory getfamFactory() {
395 return (famFactory)getEFactoryInstance();
396 }
397
398 /**
399 * <!-- begin-user-doc -->
400 * <!-- end-user-doc -->
401 * @generated
402 */
403 private boolean isCreated = false;
404
405 /**
406 * Creates the meta-model objects for the package. This method is
407 * guarded to have no affect on any invocation but its first.
408 * <!-- begin-user-doc -->
409 * <!-- end-user-doc -->
410 * @generated
411 */
412 public void createPackageContents() {
413 if (isCreated) return;
414 isCreated = true;
415
416 // Create classes and their features
417 functionalElementEClass = createEClass(FUNCTIONAL_ELEMENT);
418 createEReference(functionalElementEClass, FUNCTIONAL_ELEMENT__INTERFACE);
419 createEReference(functionalElementEClass, FUNCTIONAL_ELEMENT__MODEL);
420 createEReference(functionalElementEClass, FUNCTIONAL_ELEMENT__PARENT);
421
422 functionalArchitectureModelEClass = createEClass(FUNCTIONAL_ARCHITECTURE_MODEL);
423 createEReference(functionalArchitectureModelEClass, FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS);
424
425 functionEClass = createEClass(FUNCTION);
426 createEReference(functionEClass, FUNCTION__SUB_ELEMENTS);
427 createEAttribute(functionEClass, FUNCTION__TYPE);
428
429 famTerminatorEClass = createEClass(FAM_TERMINATOR);
430 createEReference(famTerminatorEClass, FAM_TERMINATOR__DATA);
431
432 informationLinkEClass = createEClass(INFORMATION_LINK);
433 createEReference(informationLinkEClass, INFORMATION_LINK__FROM);
434 createEReference(informationLinkEClass, INFORMATION_LINK__TO);
435
436 functionalInterfaceEClass = createEClass(FUNCTIONAL_INTERFACE);
437 createEReference(functionalInterfaceEClass, FUNCTIONAL_INTERFACE__DATA);
438 createEReference(functionalInterfaceEClass, FUNCTIONAL_INTERFACE__ELEMENT);
439
440 functionalInputEClass = createEClass(FUNCTIONAL_INPUT);
441 createEReference(functionalInputEClass, FUNCTIONAL_INPUT__INCOMING_LINKS);
442
443 functionalOutputEClass = createEClass(FUNCTIONAL_OUTPUT);
444 createEReference(functionalOutputEClass, FUNCTIONAL_OUTPUT__OUTGOING_LINKS);
445
446 functionalDataEClass = createEClass(FUNCTIONAL_DATA);
447 createEReference(functionalDataEClass, FUNCTIONAL_DATA__TERMINATOR);
448 createEReference(functionalDataEClass, FUNCTIONAL_DATA__INTERFACE);
449
450 // Create enums
451 functionTypeEEnum = createEEnum(FUNCTION_TYPE);
452 }
453
454 /**
455 * <!-- begin-user-doc -->
456 * <!-- end-user-doc -->
457 * @generated
458 */
459 private boolean isInitialized = false;
460
461 /**
462 * Complete the initialization of the package and its meta-model. This
463 * method is guarded to have no affect on any invocation but its first.
464 * <!-- begin-user-doc -->
465 * <!-- end-user-doc -->
466 * @generated
467 */
468 public void initializePackageContents() {
469 if (isInitialized) return;
470 isInitialized = true;
471
472 // Initialize package
473 setName(eNAME);
474 setNsPrefix(eNS_PREFIX);
475 setNsURI(eNS_URI);
476
477 // Create type parameters
478
479 // Set bounds for type parameters
480
481 // Add supertypes to classes
482 functionEClass.getESuperTypes().add(this.getFunctionalElement());
483 functionalInputEClass.getESuperTypes().add(this.getFunctionalData());
484 functionalOutputEClass.getESuperTypes().add(this.getFunctionalData());
485
486 // Initialize classes, features, and operations; add parameters
487 initEClass(functionalElementEClass, FunctionalElement.class, "FunctionalElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
488 initEReference(getFunctionalElement_Interface(), this.getFunctionalInterface(), this.getFunctionalInterface_Element(), "interface", null, 0, 1, FunctionalElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
489 initEReference(getFunctionalElement_Model(), this.getFunctionalArchitectureModel(), null, "model", null, 1, 1, FunctionalElement.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
490 initEReference(getFunctionalElement_Parent(), this.getFunction(), this.getFunction_SubElements(), "parent", null, 0, 1, FunctionalElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
491
492 initEClass(functionalArchitectureModelEClass, FunctionalArchitectureModel.class, "FunctionalArchitectureModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
493 initEReference(getFunctionalArchitectureModel_RootElements(), this.getFunctionalElement(), null, "rootElements", null, 0, -1, FunctionalArchitectureModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
494
495 initEClass(functionEClass, Function.class, "Function", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
496 initEReference(getFunction_SubElements(), this.getFunctionalElement(), this.getFunctionalElement_Parent(), "subElements", null, 0, -1, Function.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
497 initEAttribute(getFunction_Type(), this.getFunctionType(), "type", null, 1, 1, Function.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
498
499 initEClass(famTerminatorEClass, FAMTerminator.class, "FAMTerminator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
500 initEReference(getFAMTerminator_Data(), this.getFunctionalData(), this.getFunctionalData_Terminator(), "data", null, 0, 1, FAMTerminator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
501
502 initEClass(informationLinkEClass, InformationLink.class, "InformationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
503 initEReference(getInformationLink_From(), this.getFunctionalOutput(), this.getFunctionalOutput_OutgoingLinks(), "from", null, 0, 1, InformationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
504 initEReference(getInformationLink_To(), this.getFunctionalInput(), this.getFunctionalInput_IncomingLinks(), "to", null, 1, 1, InformationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
505
506 initEClass(functionalInterfaceEClass, FunctionalInterface.class, "FunctionalInterface", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
507 initEReference(getFunctionalInterface_Data(), this.getFunctionalData(), this.getFunctionalData_Interface(), "data", null, 0, -1, FunctionalInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
508 initEReference(getFunctionalInterface_Element(), this.getFunctionalElement(), this.getFunctionalElement_Interface(), "element", null, 0, 1, FunctionalInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
509
510 initEClass(functionalInputEClass, FunctionalInput.class, "FunctionalInput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
511 initEReference(getFunctionalInput_IncomingLinks(), this.getInformationLink(), this.getInformationLink_To(), "IncomingLinks", null, 0, -1, FunctionalInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
512
513 initEClass(functionalOutputEClass, FunctionalOutput.class, "FunctionalOutput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
514 initEReference(getFunctionalOutput_OutgoingLinks(), this.getInformationLink(), this.getInformationLink_From(), "outgoingLinks", null, 0, -1, FunctionalOutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
515
516 initEClass(functionalDataEClass, FunctionalData.class, "FunctionalData", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
517 initEReference(getFunctionalData_Terminator(), this.getFAMTerminator(), this.getFAMTerminator_Data(), "terminator", null, 0, 1, FunctionalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
518 initEReference(getFunctionalData_Interface(), this.getFunctionalInterface(), this.getFunctionalInterface_Data(), "interface", null, 0, 1, FunctionalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
519
520 // Initialize enums and add enum literals
521 initEEnum(functionTypeEEnum, FunctionType.class, "FunctionType");
522 addEEnumLiteral(functionTypeEEnum, FunctionType.ROOT);
523 addEEnumLiteral(functionTypeEEnum, FunctionType.INTERMEDIATE);
524 addEEnumLiteral(functionTypeEEnum, FunctionType.LEAF);
525
526 // Create resource
527 createResource(eNS_URI);
528
529 // Create annotations
530 // http://www.eclipse.org/emf/2002/Ecore
531 createEcoreAnnotations();
532 // org.eclipse.viatra.query.querybasedfeature
533 createOrgAnnotations();
534 }
535
536 /**
537 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
538 * <!-- begin-user-doc -->
539 * <!-- end-user-doc -->
540 * @generated
541 */
542 protected void createEcoreAnnotations() {
543 String source = "http://www.eclipse.org/emf/2002/Ecore";
544 addAnnotation
545 (this,
546 source,
547 new String[] {
548 "settingDelegates", "org.eclipse.viatra.query.querybasedfeature"
549 });
550 }
551
552 /**
553 * Initializes the annotations for <b>org.eclipse.viatra.query.querybasedfeature</b>.
554 * <!-- begin-user-doc -->
555 * <!-- end-user-doc -->
556 * @generated
557 */
558 protected void createOrgAnnotations() {
559 String source = "org.eclipse.viatra.query.querybasedfeature";
560 addAnnotation
561 (getFunctionalElement_Model(),
562 source,
563 new String[] {
564 "patternFQN", "ca.mcgill.ecse.dslreasoner.standalone.test.xyz.model"
565 });
566 addAnnotation
567 (getFunction_Type(),
568 source,
569 new String[] {
570 "patternFQN", "ca.mcgill.ecse.dslreasoner.standalone.test.xyz.type"
571 });
572 }
573
574} //famPackageImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql
new file mode 100644
index 00000000..02d34dcd
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql
@@ -0,0 +1,103 @@
1package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries
2
3import "FamMetamodel"
4
5@Constraint(message="terminatorAndInformation", severity="error", key={T})
6pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
7 FunctionalOutput.outgoingLinks(Out,I);
8 FunctionalOutput.terminator(Out,T);
9} or {
10 InformationLink.to(I,In);
11 FunctionalInput.terminator(In,T);
12}
13
14@QueryBasedFeature
15pattern type(This : Function, Target : FunctionType) = {
16 find rootElements(_Model, This);
17 Target == FunctionType::Root;
18} or {
19 neg find parent(_Child, This);
20 neg find rootElements(_Model, This);
21 Target == FunctionType::Leaf;
22} or {
23 find parent(This, _Par);
24 find parent(_Child, This);
25 Target == FunctionType::Intermediate;
26}
27
28pattern rootElements(Model: FunctionalArchitectureModel, Root : Function) = {
29 FunctionalArchitectureModel.rootElements(Model, Root);
30}
31
32pattern parent(Func : Function, Par : Function) = {
33 Function.parent(Func, Par);
34}
35
36@QueryBasedFeature
37pattern model(This:FunctionalElement, Target: FunctionalArchitectureModel) {
38 FunctionalElement(This);
39 FunctionalArchitectureModel(Target);
40}
41
42/*
43@Constraint(message="noRoot", severity="error", key={fam})
44pattern noRoot(fam: FunctionalArchitectureModel) {
45 FunctionalArchitectureModel(fam);
46 neg find hasRoot(_);
47}
48@Constraint(message="noIntermediate", severity="error", key={fam})
49pattern noInt(fam: FunctionalArchitectureModel) {
50 FunctionalArchitectureModel(fam);
51 neg find hasInt(_);
52}
53@Constraint(message="noLeaf", severity="error", key={fam})
54pattern noLeaf(fam: FunctionalArchitectureModel) {
55 FunctionalArchitectureModel(fam);
56 neg find hasLeaf(_);
57}
58*/
59
60/*
61@QueryBasedFeature
62pattern model(This : FunctionalElement, Target : FunctionalArchitectureModel) = {
63 find parent+(This, Parent);
64 find rootElements(Target, Parent);
65} or {
66 find rootElements(Target, This);
67}
68
69pattern interfaceData(FI : FunctionalInterface, FD : FunctionalData) = {
70 FunctionalInterface.data(FI, FD);
71}
72
73@QueryBasedFeature
74pattern inputs(This : FunctionalInterface, Target : FunctionalInput) = {
75 find interfaceData(This, Target);
76}
77
78@QueryBasedFeature
79pattern outputs(This : FunctionalInterface, Target : FunctionalOutput) = {
80 find interfaceData(This, Target);
81}
82
83@QueryBasedFeature
84pattern outgoingLinks(This : FunctionalElement, Target : InformationLink) = {
85 FunctionalElement.interface.outputs(This, Output);
86 InformationLink.from(Target, Output);
87}
88
89@QueryBasedFeature
90pattern incomingLinks(This : FunctionalElement, Target : InformationLink) = {
91 FunctionalElement.interface.inputs(This, Input);
92 InformationLink.to(Target, Input);
93}
94
95@QueryBasedFeature
96pattern connects(This : FunctionalElement, Target : FunctionalElement) = {
97 FunctionalElement.outgoingLinks(This,Link);
98 FunctionalElement.incomingLinks(Target,Link);
99}*/
100
101/*pattern frequency(a: Function, b : EInt) {
102 Function.minimumFrequency(a,b);
103}*/
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famAdapterFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famAdapterFactory.java
new file mode 100644
index 00000000..b5a4e37b
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famAdapterFactory.java
@@ -0,0 +1,271 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.util;
4
5import org.eclipse.emf.common.notify.Adapter;
6import org.eclipse.emf.common.notify.Notifier;
7import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
8import org.eclipse.emf.ecore.EObject;
9
10import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator;
11import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function;
12import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel;
13import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData;
14import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement;
15import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput;
16import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface;
17import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput;
18import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink;
19import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
20
21/**
22 * <!-- begin-user-doc -->
23 * The <b>Adapter Factory</b> for the model.
24 * It provides an adapter <code>createXXX</code> method for each class of the model.
25 * <!-- end-user-doc -->
26 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage
27 * @generated
28 */
29public class famAdapterFactory extends AdapterFactoryImpl {
30 /**
31 * The cached model package.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @generated
35 */
36 protected static famPackage modelPackage;
37
38 /**
39 * Creates an instance of the adapter factory.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @generated
43 */
44 public famAdapterFactory() {
45 if (modelPackage == null) {
46 modelPackage = famPackage.eINSTANCE;
47 }
48 }
49
50 /**
51 * Returns whether this factory is applicable for the type of the object.
52 * <!-- begin-user-doc -->
53 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
54 * <!-- end-user-doc -->
55 * @return whether this factory is applicable for the type of the object.
56 * @generated
57 */
58 @Override
59 public boolean isFactoryForType(Object object) {
60 if (object == modelPackage) {
61 return true;
62 }
63 if (object instanceof EObject) {
64 return ((EObject)object).eClass().getEPackage() == modelPackage;
65 }
66 return false;
67 }
68
69 /**
70 * The switch that delegates to the <code>createXXX</code> methods.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 protected famSwitch<Adapter> modelSwitch =
76 new famSwitch<Adapter>() {
77 @Override
78 public Adapter caseFunctionalElement(FunctionalElement object) {
79 return createFunctionalElementAdapter();
80 }
81 @Override
82 public Adapter caseFunctionalArchitectureModel(FunctionalArchitectureModel object) {
83 return createFunctionalArchitectureModelAdapter();
84 }
85 @Override
86 public Adapter caseFunction(Function object) {
87 return createFunctionAdapter();
88 }
89 @Override
90 public Adapter caseFAMTerminator(FAMTerminator object) {
91 return createFAMTerminatorAdapter();
92 }
93 @Override
94 public Adapter caseInformationLink(InformationLink object) {
95 return createInformationLinkAdapter();
96 }
97 @Override
98 public Adapter caseFunctionalInterface(FunctionalInterface object) {
99 return createFunctionalInterfaceAdapter();
100 }
101 @Override
102 public Adapter caseFunctionalInput(FunctionalInput object) {
103 return createFunctionalInputAdapter();
104 }
105 @Override
106 public Adapter caseFunctionalOutput(FunctionalOutput object) {
107 return createFunctionalOutputAdapter();
108 }
109 @Override
110 public Adapter caseFunctionalData(FunctionalData object) {
111 return createFunctionalDataAdapter();
112 }
113 @Override
114 public Adapter defaultCase(EObject object) {
115 return createEObjectAdapter();
116 }
117 };
118
119 /**
120 * Creates an adapter for the <code>target</code>.
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @param target the object to adapt.
124 * @return the adapter for the <code>target</code>.
125 * @generated
126 */
127 @Override
128 public Adapter createAdapter(Notifier target) {
129 return modelSwitch.doSwitch((EObject)target);
130 }
131
132
133 /**
134 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement <em>Functional Element</em>}'.
135 * <!-- begin-user-doc -->
136 * This default implementation returns null so that we can easily ignore cases;
137 * it's useful to ignore a case when inheritance will catch all the cases anyway.
138 * <!-- end-user-doc -->
139 * @return the new adapter.
140 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement
141 * @generated
142 */
143 public Adapter createFunctionalElementAdapter() {
144 return null;
145 }
146
147 /**
148 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel <em>Functional Architecture Model</em>}'.
149 * <!-- begin-user-doc -->
150 * This default implementation returns null so that we can easily ignore cases;
151 * it's useful to ignore a case when inheritance will catch all the cases anyway.
152 * <!-- end-user-doc -->
153 * @return the new adapter.
154 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel
155 * @generated
156 */
157 public Adapter createFunctionalArchitectureModelAdapter() {
158 return null;
159 }
160
161 /**
162 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function <em>Function</em>}'.
163 * <!-- begin-user-doc -->
164 * This default implementation returns null so that we can easily ignore cases;
165 * it's useful to ignore a case when inheritance will catch all the cases anyway.
166 * <!-- end-user-doc -->
167 * @return the new adapter.
168 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function
169 * @generated
170 */
171 public Adapter createFunctionAdapter() {
172 return null;
173 }
174
175 /**
176 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator <em>FAM Terminator</em>}'.
177 * <!-- begin-user-doc -->
178 * This default implementation returns null so that we can easily ignore cases;
179 * it's useful to ignore a case when inheritance will catch all the cases anyway.
180 * <!-- end-user-doc -->
181 * @return the new adapter.
182 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator
183 * @generated
184 */
185 public Adapter createFAMTerminatorAdapter() {
186 return null;
187 }
188
189 /**
190 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink <em>Information Link</em>}'.
191 * <!-- begin-user-doc -->
192 * This default implementation returns null so that we can easily ignore cases;
193 * it's useful to ignore a case when inheritance will catch all the cases anyway.
194 * <!-- end-user-doc -->
195 * @return the new adapter.
196 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink
197 * @generated
198 */
199 public Adapter createInformationLinkAdapter() {
200 return null;
201 }
202
203 /**
204 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface <em>Functional Interface</em>}'.
205 * <!-- begin-user-doc -->
206 * This default implementation returns null so that we can easily ignore cases;
207 * it's useful to ignore a case when inheritance will catch all the cases anyway.
208 * <!-- end-user-doc -->
209 * @return the new adapter.
210 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface
211 * @generated
212 */
213 public Adapter createFunctionalInterfaceAdapter() {
214 return null;
215 }
216
217 /**
218 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput <em>Functional Input</em>}'.
219 * <!-- begin-user-doc -->
220 * This default implementation returns null so that we can easily ignore cases;
221 * it's useful to ignore a case when inheritance will catch all the cases anyway.
222 * <!-- end-user-doc -->
223 * @return the new adapter.
224 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput
225 * @generated
226 */
227 public Adapter createFunctionalInputAdapter() {
228 return null;
229 }
230
231 /**
232 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput <em>Functional Output</em>}'.
233 * <!-- begin-user-doc -->
234 * This default implementation returns null so that we can easily ignore cases;
235 * it's useful to ignore a case when inheritance will catch all the cases anyway.
236 * <!-- end-user-doc -->
237 * @return the new adapter.
238 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput
239 * @generated
240 */
241 public Adapter createFunctionalOutputAdapter() {
242 return null;
243 }
244
245 /**
246 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData <em>Functional Data</em>}'.
247 * <!-- begin-user-doc -->
248 * This default implementation returns null so that we can easily ignore cases;
249 * it's useful to ignore a case when inheritance will catch all the cases anyway.
250 * <!-- end-user-doc -->
251 * @return the new adapter.
252 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData
253 * @generated
254 */
255 public Adapter createFunctionalDataAdapter() {
256 return null;
257 }
258
259 /**
260 * Creates a new adapter for the default case.
261 * <!-- begin-user-doc -->
262 * This default implementation returns null.
263 * <!-- end-user-doc -->
264 * @return the new adapter.
265 * @generated
266 */
267 public Adapter createEObjectAdapter() {
268 return null;
269 }
270
271} //famAdapterFactory
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famSwitch.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famSwitch.java
new file mode 100644
index 00000000..979bd3e9
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famSwitch.java
@@ -0,0 +1,289 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.fam.util;
4
5import org.eclipse.emf.ecore.EObject;
6import org.eclipse.emf.ecore.EPackage;
7import org.eclipse.emf.ecore.util.Switch;
8
9import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator;
10import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function;
11import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel;
12import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData;
13import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement;
14import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput;
15import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface;
16import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput;
17import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink;
18import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage;
19
20/**
21 * <!-- begin-user-doc -->
22 * The <b>Switch</b> for the model's inheritance hierarchy.
23 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
24 * to invoke the <code>caseXXX</code> method for each class of the model,
25 * starting with the actual class of the object
26 * and proceeding up the inheritance hierarchy
27 * until a non-null result is returned,
28 * which is the result of the switch.
29 * <!-- end-user-doc -->
30 * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage
31 * @generated
32 */
33public class famSwitch<T> extends Switch<T> {
34 /**
35 * The cached model package
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 protected static famPackage modelPackage;
41
42 /**
43 * Creates an instance of the switch.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 public famSwitch() {
49 if (modelPackage == null) {
50 modelPackage = famPackage.eINSTANCE;
51 }
52 }
53
54 /**
55 * Checks whether this is a switch for the given package.
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @param ePackage the package in question.
59 * @return whether this is a switch for the given package.
60 * @generated
61 */
62 @Override
63 protected boolean isSwitchFor(EPackage ePackage) {
64 return ePackage == modelPackage;
65 }
66
67 /**
68 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @return the first non-null result returned by a <code>caseXXX</code> call.
72 * @generated
73 */
74 @Override
75 protected T doSwitch(int classifierID, EObject theEObject) {
76 switch (classifierID) {
77 case famPackage.FUNCTIONAL_ELEMENT: {
78 FunctionalElement functionalElement = (FunctionalElement)theEObject;
79 T result = caseFunctionalElement(functionalElement);
80 if (result == null) result = defaultCase(theEObject);
81 return result;
82 }
83 case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL: {
84 FunctionalArchitectureModel functionalArchitectureModel = (FunctionalArchitectureModel)theEObject;
85 T result = caseFunctionalArchitectureModel(functionalArchitectureModel);
86 if (result == null) result = defaultCase(theEObject);
87 return result;
88 }
89 case famPackage.FUNCTION: {
90 Function function = (Function)theEObject;
91 T result = caseFunction(function);
92 if (result == null) result = caseFunctionalElement(function);
93 if (result == null) result = defaultCase(theEObject);
94 return result;
95 }
96 case famPackage.FAM_TERMINATOR: {
97 FAMTerminator famTerminator = (FAMTerminator)theEObject;
98 T result = caseFAMTerminator(famTerminator);
99 if (result == null) result = defaultCase(theEObject);
100 return result;
101 }
102 case famPackage.INFORMATION_LINK: {
103 InformationLink informationLink = (InformationLink)theEObject;
104 T result = caseInformationLink(informationLink);
105 if (result == null) result = defaultCase(theEObject);
106 return result;
107 }
108 case famPackage.FUNCTIONAL_INTERFACE: {
109 FunctionalInterface functionalInterface = (FunctionalInterface)theEObject;
110 T result = caseFunctionalInterface(functionalInterface);
111 if (result == null) result = defaultCase(theEObject);
112 return result;
113 }
114 case famPackage.FUNCTIONAL_INPUT: {
115 FunctionalInput functionalInput = (FunctionalInput)theEObject;
116 T result = caseFunctionalInput(functionalInput);
117 if (result == null) result = caseFunctionalData(functionalInput);
118 if (result == null) result = defaultCase(theEObject);
119 return result;
120 }
121 case famPackage.FUNCTIONAL_OUTPUT: {
122 FunctionalOutput functionalOutput = (FunctionalOutput)theEObject;
123 T result = caseFunctionalOutput(functionalOutput);
124 if (result == null) result = caseFunctionalData(functionalOutput);
125 if (result == null) result = defaultCase(theEObject);
126 return result;
127 }
128 case famPackage.FUNCTIONAL_DATA: {
129 FunctionalData functionalData = (FunctionalData)theEObject;
130 T result = caseFunctionalData(functionalData);
131 if (result == null) result = defaultCase(theEObject);
132 return result;
133 }
134 default: return defaultCase(theEObject);
135 }
136 }
137
138 /**
139 * Returns the result of interpreting the object as an instance of '<em>Functional Element</em>'.
140 * <!-- begin-user-doc -->
141 * This implementation returns null;
142 * returning a non-null result will terminate the switch.
143 * <!-- end-user-doc -->
144 * @param object the target of the switch.
145 * @return the result of interpreting the object as an instance of '<em>Functional Element</em>'.
146 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
147 * @generated
148 */
149 public T caseFunctionalElement(FunctionalElement object) {
150 return null;
151 }
152
153 /**
154 * Returns the result of interpreting the object as an instance of '<em>Functional Architecture Model</em>'.
155 * <!-- begin-user-doc -->
156 * This implementation returns null;
157 * returning a non-null result will terminate the switch.
158 * <!-- end-user-doc -->
159 * @param object the target of the switch.
160 * @return the result of interpreting the object as an instance of '<em>Functional Architecture Model</em>'.
161 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
162 * @generated
163 */
164 public T caseFunctionalArchitectureModel(FunctionalArchitectureModel object) {
165 return null;
166 }
167
168 /**
169 * Returns the result of interpreting the object as an instance of '<em>Function</em>'.
170 * <!-- begin-user-doc -->
171 * This implementation returns null;
172 * returning a non-null result will terminate the switch.
173 * <!-- end-user-doc -->
174 * @param object the target of the switch.
175 * @return the result of interpreting the object as an instance of '<em>Function</em>'.
176 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
177 * @generated
178 */
179 public T caseFunction(Function object) {
180 return null;
181 }
182
183 /**
184 * Returns the result of interpreting the object as an instance of '<em>FAM Terminator</em>'.
185 * <!-- begin-user-doc -->
186 * This implementation returns null;
187 * returning a non-null result will terminate the switch.
188 * <!-- end-user-doc -->
189 * @param object the target of the switch.
190 * @return the result of interpreting the object as an instance of '<em>FAM Terminator</em>'.
191 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
192 * @generated
193 */
194 public T caseFAMTerminator(FAMTerminator object) {
195 return null;
196 }
197
198 /**
199 * Returns the result of interpreting the object as an instance of '<em>Information Link</em>'.
200 * <!-- begin-user-doc -->
201 * This implementation returns null;
202 * returning a non-null result will terminate the switch.
203 * <!-- end-user-doc -->
204 * @param object the target of the switch.
205 * @return the result of interpreting the object as an instance of '<em>Information Link</em>'.
206 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
207 * @generated
208 */
209 public T caseInformationLink(InformationLink object) {
210 return null;
211 }
212
213 /**
214 * Returns the result of interpreting the object as an instance of '<em>Functional Interface</em>'.
215 * <!-- begin-user-doc -->
216 * This implementation returns null;
217 * returning a non-null result will terminate the switch.
218 * <!-- end-user-doc -->
219 * @param object the target of the switch.
220 * @return the result of interpreting the object as an instance of '<em>Functional Interface</em>'.
221 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
222 * @generated
223 */
224 public T caseFunctionalInterface(FunctionalInterface object) {
225 return null;
226 }
227
228 /**
229 * Returns the result of interpreting the object as an instance of '<em>Functional Input</em>'.
230 * <!-- begin-user-doc -->
231 * This implementation returns null;
232 * returning a non-null result will terminate the switch.
233 * <!-- end-user-doc -->
234 * @param object the target of the switch.
235 * @return the result of interpreting the object as an instance of '<em>Functional Input</em>'.
236 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
237 * @generated
238 */
239 public T caseFunctionalInput(FunctionalInput object) {
240 return null;
241 }
242
243 /**
244 * Returns the result of interpreting the object as an instance of '<em>Functional Output</em>'.
245 * <!-- begin-user-doc -->
246 * This implementation returns null;
247 * returning a non-null result will terminate the switch.
248 * <!-- end-user-doc -->
249 * @param object the target of the switch.
250 * @return the result of interpreting the object as an instance of '<em>Functional Output</em>'.
251 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
252 * @generated
253 */
254 public T caseFunctionalOutput(FunctionalOutput object) {
255 return null;
256 }
257
258 /**
259 * Returns the result of interpreting the object as an instance of '<em>Functional Data</em>'.
260 * <!-- begin-user-doc -->
261 * This implementation returns null;
262 * returning a non-null result will terminate the switch.
263 * <!-- end-user-doc -->
264 * @param object the target of the switch.
265 * @return the result of interpreting the object as an instance of '<em>Functional Data</em>'.
266 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
267 * @generated
268 */
269 public T caseFunctionalData(FunctionalData object) {
270 return null;
271 }
272
273 /**
274 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
275 * <!-- begin-user-doc -->
276 * This implementation returns null;
277 * returning a non-null result will terminate the switch, but this is the last case anyway.
278 * <!-- end-user-doc -->
279 * @param object the target of the switch.
280 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
281 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
282 * @generated
283 */
284 @Override
285 public T defaultCase(EObject object) {
286 return null;
287 }
288
289} //famSwitch
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Dir.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Dir.java
new file mode 100644
index 00000000..03290097
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Dir.java
@@ -0,0 +1,42 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem;
4
5import org.eclipse.emf.common.util.EList;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Dir</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents <em>Contents</em>}</li>
17 * </ul>
18 *
19 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getDir()
20 * @model
21 * @generated
22 */
23public interface Dir extends FSObject {
24 /**
25 * Returns the value of the '<em><b>Contents</b></em>' containment reference list.
26 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject}.
27 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent <em>Parent</em>}'.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>Contents</em>' containment reference list isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Contents</em>' containment reference list.
35 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getDir_Contents()
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent
37 * @model opposite="parent" containment="true"
38 * @generated
39 */
40 EList<FSObject> getContents();
41
42} // Dir
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FSObject.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FSObject.java
new file mode 100644
index 00000000..87e4e4df
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FSObject.java
@@ -0,0 +1,52 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>FS Object</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent <em>Parent</em>}</li>
17 * </ul>
18 *
19 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFSObject()
20 * @model abstract="true"
21 * @generated
22 */
23public interface FSObject extends EObject {
24 /**
25 * Returns the value of the '<em><b>Parent</b></em>' container reference.
26 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents <em>Contents</em>}'.
27 * <!-- begin-user-doc -->
28 * <p>
29 * If the meaning of the '<em>Parent</em>' container reference isn't clear,
30 * there really should be more of a description here...
31 * </p>
32 * <!-- end-user-doc -->
33 * @return the value of the '<em>Parent</em>' container reference.
34 * @see #setParent(Dir)
35 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFSObject_Parent()
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents
37 * @model opposite="contents" transient="false"
38 * @generated
39 */
40 Dir getParent();
41
42 /**
43 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent <em>Parent</em>}' container reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @param value the new value of the '<em>Parent</em>' container reference.
47 * @see #getParent()
48 * @generated
49 */
50 void setParent(Dir value);
51
52} // FSObject
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/File.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/File.java
new file mode 100644
index 00000000..f829076c
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/File.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>File</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFile()
13 * @model
14 * @generated
15 */
16public interface File extends FSObject {
17} // File
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FileSystem.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FileSystem.java
new file mode 100644
index 00000000..c1c75043
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FileSystem.java
@@ -0,0 +1,70 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>File System</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getRoot <em>Root</em>}</li>
19 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getLive <em>Live</em>}</li>
20 * </ul>
21 *
22 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFileSystem()
23 * @model
24 * @generated
25 */
26public interface FileSystem extends EObject {
27 /**
28 * Returns the value of the '<em><b>Root</b></em>' containment reference.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Root</em>' containment reference isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Root</em>' containment reference.
36 * @see #setRoot(Dir)
37 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFileSystem_Root()
38 * @model containment="true" required="true"
39 * @generated
40 */
41 Dir getRoot();
42
43 /**
44 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getRoot <em>Root</em>}' containment reference.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @param value the new value of the '<em>Root</em>' containment reference.
48 * @see #getRoot()
49 * @generated
50 */
51 void setRoot(Dir value);
52
53 /**
54 * Returns the value of the '<em><b>Live</b></em>' reference list.
55 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject}.
56 * <!-- begin-user-doc -->
57 * <p>
58 * If the meaning of the '<em>Live</em>' reference list isn't clear,
59 * there really should be more of a description here...
60 * </p>
61 * <!-- end-user-doc -->
62 * @return the value of the '<em>Live</em>' reference list.
63 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFileSystem_Live()
64 * @model transient="true" changeable="false" volatile="true" derived="true"
65 * annotation="org.eclipse.viatra.query.querybasedfeature patternFQN='hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live'"
66 * @generated
67 */
68 EList<FSObject> getLive();
69
70} // FileSystem
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Model.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Model.java
new file mode 100644
index 00000000..e75bd41a
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Model.java
@@ -0,0 +1,69 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Model</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getFilesystems <em>Filesystems</em>}</li>
19 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getOtherFSObjects <em>Other FS Objects</em>}</li>
20 * </ul>
21 *
22 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getModel()
23 * @model
24 * @generated
25 */
26public interface Model extends EObject {
27 /**
28 * Returns the value of the '<em><b>Filesystems</b></em>' containment reference.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Filesystems</em>' containment reference isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Filesystems</em>' containment reference.
36 * @see #setFilesystems(FileSystem)
37 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getModel_Filesystems()
38 * @model containment="true" required="true"
39 * @generated
40 */
41 FileSystem getFilesystems();
42
43 /**
44 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getFilesystems <em>Filesystems</em>}' containment reference.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @param value the new value of the '<em>Filesystems</em>' containment reference.
48 * @see #getFilesystems()
49 * @generated
50 */
51 void setFilesystems(FileSystem value);
52
53 /**
54 * Returns the value of the '<em><b>Other FS Objects</b></em>' containment reference list.
55 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject}.
56 * <!-- begin-user-doc -->
57 * <p>
58 * If the meaning of the '<em>Other FS Objects</em>' containment reference list isn't clear,
59 * there really should be more of a description here...
60 * </p>
61 * <!-- end-user-doc -->
62 * @return the value of the '<em>Other FS Objects</em>' containment reference list.
63 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getModel_OtherFSObjects()
64 * @model containment="true"
65 * @generated
66 */
67 EList<FSObject> getOtherFSObjects();
68
69} // Model
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemFactory.java
new file mode 100644
index 00000000..401becfb
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemFactory.java
@@ -0,0 +1,69 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage
13 * @generated
14 */
15public interface filesystemFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 filesystemFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>File System</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>File System</em>'.
29 * @generated
30 */
31 FileSystem createFileSystem();
32
33 /**
34 * Returns a new object of class '<em>Dir</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Dir</em>'.
38 * @generated
39 */
40 Dir createDir();
41
42 /**
43 * Returns a new object of class '<em>File</em>'.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return a new object of class '<em>File</em>'.
47 * @generated
48 */
49 File createFile();
50
51 /**
52 * Returns a new object of class '<em>Model</em>'.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return a new object of class '<em>Model</em>'.
56 * @generated
57 */
58 Model createModel();
59
60 /**
61 * Returns the package supported by this factory.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @return the package supported by this factory.
65 * @generated
66 */
67 filesystemPackage getfilesystemPackage();
68
69} //filesystemFactory
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemPackage.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemPackage.java
new file mode 100644
index 00000000..08133f96
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemPackage.java
@@ -0,0 +1,511 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem;
4
5import org.eclipse.emf.ecore.EClass;
6import org.eclipse.emf.ecore.EPackage;
7import org.eclipse.emf.ecore.EReference;
8
9/**
10 * <!-- begin-user-doc -->
11 * The <b>Package</b> for the model.
12 * It contains accessors for the meta objects to represent
13 * <ul>
14 * <li>each class,</li>
15 * <li>each feature of each class,</li>
16 * <li>each operation of each class,</li>
17 * <li>each enum,</li>
18 * <li>and each data type</li>
19 * </ul>
20 * <!-- end-user-doc -->
21 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemFactory
22 * @model kind="package"
23 * annotation="http://www.eclipse.org/emf/2002/Ecore settingDelegates='org.eclipse.viatra.query.querybasedfeature'"
24 * @generated
25 */
26public interface filesystemPackage extends EPackage {
27 /**
28 * The package name.
29 * <!-- begin-user-doc -->
30 * <!-- end-user-doc -->
31 * @generated
32 */
33 String eNAME = "filesystem";
34
35 /**
36 * The package namespace URI.
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @generated
40 */
41 String eNS_URI = "FileSystemMetamodel";
42
43 /**
44 * The package namespace name.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @generated
48 */
49 String eNS_PREFIX = "filesystem";
50
51 /**
52 * The singleton instance of the package.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 filesystemPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl.init();
58
59 /**
60 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl <em>File System</em>}' class.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl
64 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFileSystem()
65 * @generated
66 */
67 int FILE_SYSTEM = 0;
68
69 /**
70 * The feature id for the '<em><b>Root</b></em>' containment reference.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 * @ordered
75 */
76 int FILE_SYSTEM__ROOT = 0;
77
78 /**
79 * The feature id for the '<em><b>Live</b></em>' reference list.
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @generated
83 * @ordered
84 */
85 int FILE_SYSTEM__LIVE = 1;
86
87 /**
88 * The number of structural features of the '<em>File System</em>' class.
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @generated
92 * @ordered
93 */
94 int FILE_SYSTEM_FEATURE_COUNT = 2;
95
96 /**
97 * The number of operations of the '<em>File System</em>' class.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 * @ordered
102 */
103 int FILE_SYSTEM_OPERATION_COUNT = 0;
104
105 /**
106 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl <em>FS Object</em>}' class.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl
110 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFSObject()
111 * @generated
112 */
113 int FS_OBJECT = 1;
114
115 /**
116 * The feature id for the '<em><b>Parent</b></em>' container reference.
117 * <!-- begin-user-doc -->
118 * <!-- end-user-doc -->
119 * @generated
120 * @ordered
121 */
122 int FS_OBJECT__PARENT = 0;
123
124 /**
125 * The number of structural features of the '<em>FS Object</em>' class.
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @generated
129 * @ordered
130 */
131 int FS_OBJECT_FEATURE_COUNT = 1;
132
133 /**
134 * The number of operations of the '<em>FS Object</em>' class.
135 * <!-- begin-user-doc -->
136 * <!-- end-user-doc -->
137 * @generated
138 * @ordered
139 */
140 int FS_OBJECT_OPERATION_COUNT = 0;
141
142 /**
143 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl <em>Dir</em>}' class.
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl
147 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getDir()
148 * @generated
149 */
150 int DIR = 2;
151
152 /**
153 * The feature id for the '<em><b>Parent</b></em>' container reference.
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @generated
157 * @ordered
158 */
159 int DIR__PARENT = FS_OBJECT__PARENT;
160
161 /**
162 * The feature id for the '<em><b>Contents</b></em>' containment reference list.
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 * @ordered
167 */
168 int DIR__CONTENTS = FS_OBJECT_FEATURE_COUNT + 0;
169
170 /**
171 * The number of structural features of the '<em>Dir</em>' class.
172 * <!-- begin-user-doc -->
173 * <!-- end-user-doc -->
174 * @generated
175 * @ordered
176 */
177 int DIR_FEATURE_COUNT = FS_OBJECT_FEATURE_COUNT + 1;
178
179 /**
180 * The number of operations of the '<em>Dir</em>' class.
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 * @ordered
185 */
186 int DIR_OPERATION_COUNT = FS_OBJECT_OPERATION_COUNT + 0;
187
188 /**
189 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileImpl <em>File</em>}' class.
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileImpl
193 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFile()
194 * @generated
195 */
196 int FILE = 3;
197
198 /**
199 * The feature id for the '<em><b>Parent</b></em>' container reference.
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 * @ordered
204 */
205 int FILE__PARENT = FS_OBJECT__PARENT;
206
207 /**
208 * The number of structural features of the '<em>File</em>' class.
209 * <!-- begin-user-doc -->
210 * <!-- end-user-doc -->
211 * @generated
212 * @ordered
213 */
214 int FILE_FEATURE_COUNT = FS_OBJECT_FEATURE_COUNT + 0;
215
216 /**
217 * The number of operations of the '<em>File</em>' class.
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @generated
221 * @ordered
222 */
223 int FILE_OPERATION_COUNT = FS_OBJECT_OPERATION_COUNT + 0;
224
225 /**
226 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl <em>Model</em>}' class.
227 * <!-- begin-user-doc -->
228 * <!-- end-user-doc -->
229 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl
230 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getModel()
231 * @generated
232 */
233 int MODEL = 4;
234
235 /**
236 * The feature id for the '<em><b>Filesystems</b></em>' containment reference.
237 * <!-- begin-user-doc -->
238 * <!-- end-user-doc -->
239 * @generated
240 * @ordered
241 */
242 int MODEL__FILESYSTEMS = 0;
243
244 /**
245 * The feature id for the '<em><b>Other FS Objects</b></em>' containment reference list.
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @generated
249 * @ordered
250 */
251 int MODEL__OTHER_FS_OBJECTS = 1;
252
253 /**
254 * The number of structural features of the '<em>Model</em>' class.
255 * <!-- begin-user-doc -->
256 * <!-- end-user-doc -->
257 * @generated
258 * @ordered
259 */
260 int MODEL_FEATURE_COUNT = 2;
261
262 /**
263 * The number of operations of the '<em>Model</em>' class.
264 * <!-- begin-user-doc -->
265 * <!-- end-user-doc -->
266 * @generated
267 * @ordered
268 */
269 int MODEL_OPERATION_COUNT = 0;
270
271
272 /**
273 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem <em>File System</em>}'.
274 * <!-- begin-user-doc -->
275 * <!-- end-user-doc -->
276 * @return the meta object for class '<em>File System</em>'.
277 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem
278 * @generated
279 */
280 EClass getFileSystem();
281
282 /**
283 * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getRoot <em>Root</em>}'.
284 * <!-- begin-user-doc -->
285 * <!-- end-user-doc -->
286 * @return the meta object for the containment reference '<em>Root</em>'.
287 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getRoot()
288 * @see #getFileSystem()
289 * @generated
290 */
291 EReference getFileSystem_Root();
292
293 /**
294 * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getLive <em>Live</em>}'.
295 * <!-- begin-user-doc -->
296 * <!-- end-user-doc -->
297 * @return the meta object for the reference list '<em>Live</em>'.
298 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getLive()
299 * @see #getFileSystem()
300 * @generated
301 */
302 EReference getFileSystem_Live();
303
304 /**
305 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject <em>FS Object</em>}'.
306 * <!-- begin-user-doc -->
307 * <!-- end-user-doc -->
308 * @return the meta object for class '<em>FS Object</em>'.
309 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject
310 * @generated
311 */
312 EClass getFSObject();
313
314 /**
315 * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent <em>Parent</em>}'.
316 * <!-- begin-user-doc -->
317 * <!-- end-user-doc -->
318 * @return the meta object for the container reference '<em>Parent</em>'.
319 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent()
320 * @see #getFSObject()
321 * @generated
322 */
323 EReference getFSObject_Parent();
324
325 /**
326 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir <em>Dir</em>}'.
327 * <!-- begin-user-doc -->
328 * <!-- end-user-doc -->
329 * @return the meta object for class '<em>Dir</em>'.
330 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir
331 * @generated
332 */
333 EClass getDir();
334
335 /**
336 * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents <em>Contents</em>}'.
337 * <!-- begin-user-doc -->
338 * <!-- end-user-doc -->
339 * @return the meta object for the containment reference list '<em>Contents</em>'.
340 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents()
341 * @see #getDir()
342 * @generated
343 */
344 EReference getDir_Contents();
345
346 /**
347 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File <em>File</em>}'.
348 * <!-- begin-user-doc -->
349 * <!-- end-user-doc -->
350 * @return the meta object for class '<em>File</em>'.
351 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File
352 * @generated
353 */
354 EClass getFile();
355
356 /**
357 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model <em>Model</em>}'.
358 * <!-- begin-user-doc -->
359 * <!-- end-user-doc -->
360 * @return the meta object for class '<em>Model</em>'.
361 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model
362 * @generated
363 */
364 EClass getModel();
365
366 /**
367 * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getFilesystems <em>Filesystems</em>}'.
368 * <!-- begin-user-doc -->
369 * <!-- end-user-doc -->
370 * @return the meta object for the containment reference '<em>Filesystems</em>'.
371 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getFilesystems()
372 * @see #getModel()
373 * @generated
374 */
375 EReference getModel_Filesystems();
376
377 /**
378 * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getOtherFSObjects <em>Other FS Objects</em>}'.
379 * <!-- begin-user-doc -->
380 * <!-- end-user-doc -->
381 * @return the meta object for the containment reference list '<em>Other FS Objects</em>'.
382 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getOtherFSObjects()
383 * @see #getModel()
384 * @generated
385 */
386 EReference getModel_OtherFSObjects();
387
388 /**
389 * Returns the factory that creates the instances of the model.
390 * <!-- begin-user-doc -->
391 * <!-- end-user-doc -->
392 * @return the factory that creates the instances of the model.
393 * @generated
394 */
395 filesystemFactory getfilesystemFactory();
396
397 /**
398 * <!-- begin-user-doc -->
399 * Defines literals for the meta objects that represent
400 * <ul>
401 * <li>each class,</li>
402 * <li>each feature of each class,</li>
403 * <li>each operation of each class,</li>
404 * <li>each enum,</li>
405 * <li>and each data type</li>
406 * </ul>
407 * <!-- end-user-doc -->
408 * @generated
409 */
410 interface Literals {
411 /**
412 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl <em>File System</em>}' class.
413 * <!-- begin-user-doc -->
414 * <!-- end-user-doc -->
415 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl
416 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFileSystem()
417 * @generated
418 */
419 EClass FILE_SYSTEM = eINSTANCE.getFileSystem();
420
421 /**
422 * The meta object literal for the '<em><b>Root</b></em>' containment reference feature.
423 * <!-- begin-user-doc -->
424 * <!-- end-user-doc -->
425 * @generated
426 */
427 EReference FILE_SYSTEM__ROOT = eINSTANCE.getFileSystem_Root();
428
429 /**
430 * The meta object literal for the '<em><b>Live</b></em>' reference list feature.
431 * <!-- begin-user-doc -->
432 * <!-- end-user-doc -->
433 * @generated
434 */
435 EReference FILE_SYSTEM__LIVE = eINSTANCE.getFileSystem_Live();
436
437 /**
438 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl <em>FS Object</em>}' class.
439 * <!-- begin-user-doc -->
440 * <!-- end-user-doc -->
441 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl
442 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFSObject()
443 * @generated
444 */
445 EClass FS_OBJECT = eINSTANCE.getFSObject();
446
447 /**
448 * The meta object literal for the '<em><b>Parent</b></em>' container reference feature.
449 * <!-- begin-user-doc -->
450 * <!-- end-user-doc -->
451 * @generated
452 */
453 EReference FS_OBJECT__PARENT = eINSTANCE.getFSObject_Parent();
454
455 /**
456 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl <em>Dir</em>}' class.
457 * <!-- begin-user-doc -->
458 * <!-- end-user-doc -->
459 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl
460 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getDir()
461 * @generated
462 */
463 EClass DIR = eINSTANCE.getDir();
464
465 /**
466 * The meta object literal for the '<em><b>Contents</b></em>' containment reference list feature.
467 * <!-- begin-user-doc -->
468 * <!-- end-user-doc -->
469 * @generated
470 */
471 EReference DIR__CONTENTS = eINSTANCE.getDir_Contents();
472
473 /**
474 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileImpl <em>File</em>}' class.
475 * <!-- begin-user-doc -->
476 * <!-- end-user-doc -->
477 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileImpl
478 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFile()
479 * @generated
480 */
481 EClass FILE = eINSTANCE.getFile();
482
483 /**
484 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl <em>Model</em>}' class.
485 * <!-- begin-user-doc -->
486 * <!-- end-user-doc -->
487 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl
488 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getModel()
489 * @generated
490 */
491 EClass MODEL = eINSTANCE.getModel();
492
493 /**
494 * The meta object literal for the '<em><b>Filesystems</b></em>' containment reference feature.
495 * <!-- begin-user-doc -->
496 * <!-- end-user-doc -->
497 * @generated
498 */
499 EReference MODEL__FILESYSTEMS = eINSTANCE.getModel_Filesystems();
500
501 /**
502 * The meta object literal for the '<em><b>Other FS Objects</b></em>' containment reference list feature.
503 * <!-- begin-user-doc -->
504 * <!-- end-user-doc -->
505 * @generated
506 */
507 EReference MODEL__OTHER_FS_OBJECTS = eINSTANCE.getModel_OtherFSObjects();
508
509 }
510
511} //filesystemPackage
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/DirImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/DirImpl.java
new file mode 100644
index 00000000..2e2fbcba
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/DirImpl.java
@@ -0,0 +1,165 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir;
6import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject;
7import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage;
8
9import java.util.Collection;
10
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.common.util.EList;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
19import org.eclipse.emf.ecore.util.InternalEList;
20
21/**
22 * <!-- begin-user-doc -->
23 * An implementation of the model object '<em><b>Dir</b></em>'.
24 * <!-- end-user-doc -->
25 * <p>
26 * The following features are implemented:
27 * </p>
28 * <ul>
29 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl#getContents <em>Contents</em>}</li>
30 * </ul>
31 *
32 * @generated
33 */
34public class DirImpl extends FSObjectImpl implements Dir {
35 /**
36 * The cached value of the '{@link #getContents() <em>Contents</em>}' containment reference list.
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @see #getContents()
40 * @generated
41 * @ordered
42 */
43 protected EList<FSObject> contents;
44
45 /**
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @generated
49 */
50 protected DirImpl() {
51 super();
52 }
53
54 /**
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 @Override
60 protected EClass eStaticClass() {
61 return filesystemPackage.Literals.DIR;
62 }
63
64 /**
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 public EList<FSObject> getContents() {
70 if (contents == null) {
71 contents = new EObjectContainmentWithInverseEList<FSObject>(FSObject.class, this, filesystemPackage.DIR__CONTENTS, filesystemPackage.FS_OBJECT__PARENT);
72 }
73 return contents;
74 }
75
76 /**
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 @SuppressWarnings("unchecked")
82 @Override
83 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
84 switch (featureID) {
85 case filesystemPackage.DIR__CONTENTS:
86 return ((InternalEList<InternalEObject>)(InternalEList<?>)getContents()).basicAdd(otherEnd, msgs);
87 }
88 return super.eInverseAdd(otherEnd, featureID, msgs);
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
98 switch (featureID) {
99 case filesystemPackage.DIR__CONTENTS:
100 return ((InternalEList<?>)getContents()).basicRemove(otherEnd, msgs);
101 }
102 return super.eInverseRemove(otherEnd, featureID, msgs);
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public Object eGet(int featureID, boolean resolve, boolean coreType) {
112 switch (featureID) {
113 case filesystemPackage.DIR__CONTENTS:
114 return getContents();
115 }
116 return super.eGet(featureID, resolve, coreType);
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @SuppressWarnings("unchecked")
125 @Override
126 public void eSet(int featureID, Object newValue) {
127 switch (featureID) {
128 case filesystemPackage.DIR__CONTENTS:
129 getContents().clear();
130 getContents().addAll((Collection<? extends FSObject>)newValue);
131 return;
132 }
133 super.eSet(featureID, newValue);
134 }
135
136 /**
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @generated
140 */
141 @Override
142 public void eUnset(int featureID) {
143 switch (featureID) {
144 case filesystemPackage.DIR__CONTENTS:
145 getContents().clear();
146 return;
147 }
148 super.eUnset(featureID);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public boolean eIsSet(int featureID) {
158 switch (featureID) {
159 case filesystemPackage.DIR__CONTENTS:
160 return contents != null && !contents.isEmpty();
161 }
162 return super.eIsSet(featureID);
163 }
164
165} //DirImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FSObjectImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FSObjectImpl.java
new file mode 100644
index 00000000..25ea1fbb
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FSObjectImpl.java
@@ -0,0 +1,196 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir;
6import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject;
7import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10import org.eclipse.emf.common.notify.NotificationChain;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18import org.eclipse.emf.ecore.util.EcoreUtil;
19
20/**
21 * <!-- begin-user-doc -->
22 * An implementation of the model object '<em><b>FS Object</b></em>'.
23 * <!-- end-user-doc -->
24 * <p>
25 * The following features are implemented:
26 * </p>
27 * <ul>
28 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl#getParent <em>Parent</em>}</li>
29 * </ul>
30 *
31 * @generated
32 */
33public abstract class FSObjectImpl extends MinimalEObjectImpl.Container implements FSObject {
34 /**
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @generated
38 */
39 protected FSObjectImpl() {
40 super();
41 }
42
43 /**
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 @Override
49 protected EClass eStaticClass() {
50 return filesystemPackage.Literals.FS_OBJECT;
51 }
52
53 /**
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @generated
57 */
58 public Dir getParent() {
59 if (eContainerFeatureID() != filesystemPackage.FS_OBJECT__PARENT) return null;
60 return (Dir)eInternalContainer();
61 }
62
63 /**
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 public NotificationChain basicSetParent(Dir newParent, NotificationChain msgs) {
69 msgs = eBasicSetContainer((InternalEObject)newParent, filesystemPackage.FS_OBJECT__PARENT, msgs);
70 return msgs;
71 }
72
73 /**
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @generated
77 */
78 public void setParent(Dir newParent) {
79 if (newParent != eInternalContainer() || (eContainerFeatureID() != filesystemPackage.FS_OBJECT__PARENT && newParent != null)) {
80 if (EcoreUtil.isAncestor(this, newParent))
81 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
82 NotificationChain msgs = null;
83 if (eInternalContainer() != null)
84 msgs = eBasicRemoveFromContainer(msgs);
85 if (newParent != null)
86 msgs = ((InternalEObject)newParent).eInverseAdd(this, filesystemPackage.DIR__CONTENTS, Dir.class, msgs);
87 msgs = basicSetParent(newParent, msgs);
88 if (msgs != null) msgs.dispatch();
89 }
90 else if (eNotificationRequired())
91 eNotify(new ENotificationImpl(this, Notification.SET, filesystemPackage.FS_OBJECT__PARENT, newParent, newParent));
92 }
93
94 /**
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @generated
98 */
99 @Override
100 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
101 switch (featureID) {
102 case filesystemPackage.FS_OBJECT__PARENT:
103 if (eInternalContainer() != null)
104 msgs = eBasicRemoveFromContainer(msgs);
105 return basicSetParent((Dir)otherEnd, msgs);
106 }
107 return super.eInverseAdd(otherEnd, featureID, msgs);
108 }
109
110 /**
111 * <!-- begin-user-doc -->
112 * <!-- end-user-doc -->
113 * @generated
114 */
115 @Override
116 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
117 switch (featureID) {
118 case filesystemPackage.FS_OBJECT__PARENT:
119 return basicSetParent(null, msgs);
120 }
121 return super.eInverseRemove(otherEnd, featureID, msgs);
122 }
123
124 /**
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 */
129 @Override
130 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
131 switch (eContainerFeatureID()) {
132 case filesystemPackage.FS_OBJECT__PARENT:
133 return eInternalContainer().eInverseRemove(this, filesystemPackage.DIR__CONTENTS, Dir.class, msgs);
134 }
135 return super.eBasicRemoveFromContainerFeature(msgs);
136 }
137
138 /**
139 * <!-- begin-user-doc -->
140 * <!-- end-user-doc -->
141 * @generated
142 */
143 @Override
144 public Object eGet(int featureID, boolean resolve, boolean coreType) {
145 switch (featureID) {
146 case filesystemPackage.FS_OBJECT__PARENT:
147 return getParent();
148 }
149 return super.eGet(featureID, resolve, coreType);
150 }
151
152 /**
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @generated
156 */
157 @Override
158 public void eSet(int featureID, Object newValue) {
159 switch (featureID) {
160 case filesystemPackage.FS_OBJECT__PARENT:
161 setParent((Dir)newValue);
162 return;
163 }
164 super.eSet(featureID, newValue);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 @Override
173 public void eUnset(int featureID) {
174 switch (featureID) {
175 case filesystemPackage.FS_OBJECT__PARENT:
176 setParent((Dir)null);
177 return;
178 }
179 super.eUnset(featureID);
180 }
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 @Override
188 public boolean eIsSet(int featureID) {
189 switch (featureID) {
190 case filesystemPackage.FS_OBJECT__PARENT:
191 return getParent() != null;
192 }
193 return super.eIsSet(featureID);
194 }
195
196} //FSObjectImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileImpl.java
new file mode 100644
index 00000000..29eb47fd
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File;
6import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>File</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class FileImpl extends FSObjectImpl implements File {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected FileImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return filesystemPackage.Literals.FILE;
35 }
36
37} //FileImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java
new file mode 100644
index 00000000..8bbc6a74
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java
@@ -0,0 +1,205 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir;
6import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject;
7import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem;
8import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage;
9
10import org.eclipse.emf.common.notify.Notification;
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.common.util.EList;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.EStructuralFeature;
17import org.eclipse.emf.ecore.InternalEObject;
18
19import org.eclipse.emf.ecore.impl.ENotificationImpl;
20import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
21
22/**
23 * <!-- begin-user-doc -->
24 * An implementation of the model object '<em><b>File System</b></em>'.
25 * <!-- end-user-doc -->
26 * <p>
27 * The following features are implemented:
28 * </p>
29 * <ul>
30 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl#getRoot <em>Root</em>}</li>
31 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl#getLive <em>Live</em>}</li>
32 * </ul>
33 *
34 * @generated
35 */
36public class FileSystemImpl extends MinimalEObjectImpl.Container implements FileSystem {
37 /**
38 * The cached value of the '{@link #getRoot() <em>Root</em>}' containment reference.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @see #getRoot()
42 * @generated
43 * @ordered
44 */
45 protected Dir root;
46
47 /**
48 * The cached setting delegate for the '{@link #getLive() <em>Live</em>}' reference list.
49 * <!-- begin-user-doc -->
50 * <!-- end-user-doc -->
51 * @see #getLive()
52 * @generated
53 * @ordered
54 */
55 protected EStructuralFeature.Internal.SettingDelegate LIVE__ESETTING_DELEGATE = ((EStructuralFeature.Internal)filesystemPackage.Literals.FILE_SYSTEM__LIVE).getSettingDelegate();
56
57 /**
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @generated
61 */
62 protected FileSystemImpl() {
63 super();
64 }
65
66 /**
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @generated
70 */
71 @Override
72 protected EClass eStaticClass() {
73 return filesystemPackage.Literals.FILE_SYSTEM;
74 }
75
76 /**
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 public Dir getRoot() {
82 return root;
83 }
84
85 /**
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 public NotificationChain basicSetRoot(Dir newRoot, NotificationChain msgs) {
91 Dir oldRoot = root;
92 root = newRoot;
93 if (eNotificationRequired()) {
94 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, filesystemPackage.FILE_SYSTEM__ROOT, oldRoot, newRoot);
95 if (msgs == null) msgs = notification; else msgs.add(notification);
96 }
97 return msgs;
98 }
99
100 /**
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @generated
104 */
105 public void setRoot(Dir newRoot) {
106 if (newRoot != root) {
107 NotificationChain msgs = null;
108 if (root != null)
109 msgs = ((InternalEObject)root).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.FILE_SYSTEM__ROOT, null, msgs);
110 if (newRoot != null)
111 msgs = ((InternalEObject)newRoot).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.FILE_SYSTEM__ROOT, null, msgs);
112 msgs = basicSetRoot(newRoot, msgs);
113 if (msgs != null) msgs.dispatch();
114 }
115 else if (eNotificationRequired())
116 eNotify(new ENotificationImpl(this, Notification.SET, filesystemPackage.FILE_SYSTEM__ROOT, newRoot, newRoot));
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @SuppressWarnings("unchecked")
125 public EList<FSObject> getLive() {
126 return (EList<FSObject>)LIVE__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false);
127 }
128
129 /**
130 * <!-- begin-user-doc -->
131 * <!-- end-user-doc -->
132 * @generated
133 */
134 @Override
135 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
136 switch (featureID) {
137 case filesystemPackage.FILE_SYSTEM__ROOT:
138 return basicSetRoot(null, msgs);
139 }
140 return super.eInverseRemove(otherEnd, featureID, msgs);
141 }
142
143 /**
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @generated
147 */
148 @Override
149 public Object eGet(int featureID, boolean resolve, boolean coreType) {
150 switch (featureID) {
151 case filesystemPackage.FILE_SYSTEM__ROOT:
152 return getRoot();
153 case filesystemPackage.FILE_SYSTEM__LIVE:
154 return getLive();
155 }
156 return super.eGet(featureID, resolve, coreType);
157 }
158
159 /**
160 * <!-- begin-user-doc -->
161 * <!-- end-user-doc -->
162 * @generated
163 */
164 @Override
165 public void eSet(int featureID, Object newValue) {
166 switch (featureID) {
167 case filesystemPackage.FILE_SYSTEM__ROOT:
168 setRoot((Dir)newValue);
169 return;
170 }
171 super.eSet(featureID, newValue);
172 }
173
174 /**
175 * <!-- begin-user-doc -->
176 * <!-- end-user-doc -->
177 * @generated
178 */
179 @Override
180 public void eUnset(int featureID) {
181 switch (featureID) {
182 case filesystemPackage.FILE_SYSTEM__ROOT:
183 setRoot((Dir)null);
184 return;
185 }
186 super.eUnset(featureID);
187 }
188
189 /**
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @generated
193 */
194 @Override
195 public boolean eIsSet(int featureID) {
196 switch (featureID) {
197 case filesystemPackage.FILE_SYSTEM__ROOT:
198 return root != null;
199 case filesystemPackage.FILE_SYSTEM__LIVE:
200 return LIVE__ESETTING_DELEGATE.dynamicIsSet(this, null, 0);
201 }
202 return super.eIsSet(featureID);
203 }
204
205} //FileSystemImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/ModelImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/ModelImpl.java
new file mode 100644
index 00000000..a21f5b6e
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/ModelImpl.java
@@ -0,0 +1,221 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject;
6import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem;
7import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model;
8import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage;
9
10import java.util.Collection;
11
12import org.eclipse.emf.common.notify.Notification;
13import org.eclipse.emf.common.notify.NotificationChain;
14
15import org.eclipse.emf.common.util.EList;
16
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.InternalEObject;
19
20import org.eclipse.emf.ecore.impl.ENotificationImpl;
21import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
22
23import org.eclipse.emf.ecore.util.EObjectContainmentEList;
24import org.eclipse.emf.ecore.util.InternalEList;
25
26/**
27 * <!-- begin-user-doc -->
28 * An implementation of the model object '<em><b>Model</b></em>'.
29 * <!-- end-user-doc -->
30 * <p>
31 * The following features are implemented:
32 * </p>
33 * <ul>
34 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl#getFilesystems <em>Filesystems</em>}</li>
35 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl#getOtherFSObjects <em>Other FS Objects</em>}</li>
36 * </ul>
37 *
38 * @generated
39 */
40public class ModelImpl extends MinimalEObjectImpl.Container implements Model {
41 /**
42 * The cached value of the '{@link #getFilesystems() <em>Filesystems</em>}' containment reference.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #getFilesystems()
46 * @generated
47 * @ordered
48 */
49 protected FileSystem filesystems;
50
51 /**
52 * The cached value of the '{@link #getOtherFSObjects() <em>Other FS Objects</em>}' containment reference list.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #getOtherFSObjects()
56 * @generated
57 * @ordered
58 */
59 protected EList<FSObject> otherFSObjects;
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 protected ModelImpl() {
67 super();
68 }
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 @Override
76 protected EClass eStaticClass() {
77 return filesystemPackage.Literals.MODEL;
78 }
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 public FileSystem getFilesystems() {
86 return filesystems;
87 }
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 public NotificationChain basicSetFilesystems(FileSystem newFilesystems, NotificationChain msgs) {
95 FileSystem oldFilesystems = filesystems;
96 filesystems = newFilesystems;
97 if (eNotificationRequired()) {
98 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, filesystemPackage.MODEL__FILESYSTEMS, oldFilesystems, newFilesystems);
99 if (msgs == null) msgs = notification; else msgs.add(notification);
100 }
101 return msgs;
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 public void setFilesystems(FileSystem newFilesystems) {
110 if (newFilesystems != filesystems) {
111 NotificationChain msgs = null;
112 if (filesystems != null)
113 msgs = ((InternalEObject)filesystems).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.MODEL__FILESYSTEMS, null, msgs);
114 if (newFilesystems != null)
115 msgs = ((InternalEObject)newFilesystems).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.MODEL__FILESYSTEMS, null, msgs);
116 msgs = basicSetFilesystems(newFilesystems, msgs);
117 if (msgs != null) msgs.dispatch();
118 }
119 else if (eNotificationRequired())
120 eNotify(new ENotificationImpl(this, Notification.SET, filesystemPackage.MODEL__FILESYSTEMS, newFilesystems, newFilesystems));
121 }
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 public EList<FSObject> getOtherFSObjects() {
129 if (otherFSObjects == null) {
130 otherFSObjects = new EObjectContainmentEList<FSObject>(FSObject.class, this, filesystemPackage.MODEL__OTHER_FS_OBJECTS);
131 }
132 return otherFSObjects;
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
142 switch (featureID) {
143 case filesystemPackage.MODEL__FILESYSTEMS:
144 return basicSetFilesystems(null, msgs);
145 case filesystemPackage.MODEL__OTHER_FS_OBJECTS:
146 return ((InternalEList<?>)getOtherFSObjects()).basicRemove(otherEnd, msgs);
147 }
148 return super.eInverseRemove(otherEnd, featureID, msgs);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public Object eGet(int featureID, boolean resolve, boolean coreType) {
158 switch (featureID) {
159 case filesystemPackage.MODEL__FILESYSTEMS:
160 return getFilesystems();
161 case filesystemPackage.MODEL__OTHER_FS_OBJECTS:
162 return getOtherFSObjects();
163 }
164 return super.eGet(featureID, resolve, coreType);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 @SuppressWarnings("unchecked")
173 @Override
174 public void eSet(int featureID, Object newValue) {
175 switch (featureID) {
176 case filesystemPackage.MODEL__FILESYSTEMS:
177 setFilesystems((FileSystem)newValue);
178 return;
179 case filesystemPackage.MODEL__OTHER_FS_OBJECTS:
180 getOtherFSObjects().clear();
181 getOtherFSObjects().addAll((Collection<? extends FSObject>)newValue);
182 return;
183 }
184 super.eSet(featureID, newValue);
185 }
186
187 /**
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @generated
191 */
192 @Override
193 public void eUnset(int featureID) {
194 switch (featureID) {
195 case filesystemPackage.MODEL__FILESYSTEMS:
196 setFilesystems((FileSystem)null);
197 return;
198 case filesystemPackage.MODEL__OTHER_FS_OBJECTS:
199 getOtherFSObjects().clear();
200 return;
201 }
202 super.eUnset(featureID);
203 }
204
205 /**
206 * <!-- begin-user-doc -->
207 * <!-- end-user-doc -->
208 * @generated
209 */
210 @Override
211 public boolean eIsSet(int featureID) {
212 switch (featureID) {
213 case filesystemPackage.MODEL__FILESYSTEMS:
214 return filesystems != null;
215 case filesystemPackage.MODEL__OTHER_FS_OBJECTS:
216 return otherFSObjects != null && !otherFSObjects.isEmpty();
217 }
218 return super.eIsSet(featureID);
219 }
220
221} //ModelImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemFactoryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemFactoryImpl.java
new file mode 100644
index 00000000..a3526e36
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemFactoryImpl.java
@@ -0,0 +1,128 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.*;
6
7import org.eclipse.emf.ecore.EClass;
8import org.eclipse.emf.ecore.EObject;
9import org.eclipse.emf.ecore.EPackage;
10
11import org.eclipse.emf.ecore.impl.EFactoryImpl;
12
13import org.eclipse.emf.ecore.plugin.EcorePlugin;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model <b>Factory</b>.
18 * <!-- end-user-doc -->
19 * @generated
20 */
21public class filesystemFactoryImpl extends EFactoryImpl implements filesystemFactory {
22 /**
23 * Creates the default factory implementation.
24 * <!-- begin-user-doc -->
25 * <!-- end-user-doc -->
26 * @generated
27 */
28 public static filesystemFactory init() {
29 try {
30 filesystemFactory thefilesystemFactory = (filesystemFactory)EPackage.Registry.INSTANCE.getEFactory(filesystemPackage.eNS_URI);
31 if (thefilesystemFactory != null) {
32 return thefilesystemFactory;
33 }
34 }
35 catch (Exception exception) {
36 EcorePlugin.INSTANCE.log(exception);
37 }
38 return new filesystemFactoryImpl();
39 }
40
41 /**
42 * Creates an instance of the factory.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @generated
46 */
47 public filesystemFactoryImpl() {
48 super();
49 }
50
51 /**
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 @Override
57 public EObject create(EClass eClass) {
58 switch (eClass.getClassifierID()) {
59 case filesystemPackage.FILE_SYSTEM: return createFileSystem();
60 case filesystemPackage.DIR: return createDir();
61 case filesystemPackage.FILE: return createFile();
62 case filesystemPackage.MODEL: return createModel();
63 default:
64 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
65 }
66 }
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 public FileSystem createFileSystem() {
74 FileSystemImpl fileSystem = new FileSystemImpl();
75 return fileSystem;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 public Dir createDir() {
84 DirImpl dir = new DirImpl();
85 return dir;
86 }
87
88 /**
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @generated
92 */
93 public File createFile() {
94 FileImpl file = new FileImpl();
95 return file;
96 }
97
98 /**
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 public Model createModel() {
104 ModelImpl model = new ModelImpl();
105 return model;
106 }
107
108 /**
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @generated
112 */
113 public filesystemPackage getfilesystemPackage() {
114 return (filesystemPackage)getEPackage();
115 }
116
117 /**
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @deprecated
121 * @generated
122 */
123 @Deprecated
124 public static filesystemPackage getPackage() {
125 return filesystemPackage.eINSTANCE;
126 }
127
128} //filesystemFactoryImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemPackageImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemPackageImpl.java
new file mode 100644
index 00000000..5c6dd21e
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemPackageImpl.java
@@ -0,0 +1,356 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir;
6import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject;
7import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File;
8import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem;
9import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model;
10import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemFactory;
11import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage;
12
13import org.eclipse.emf.ecore.EClass;
14import org.eclipse.emf.ecore.EPackage;
15import org.eclipse.emf.ecore.EReference;
16
17import org.eclipse.emf.ecore.impl.EPackageImpl;
18
19/**
20 * <!-- begin-user-doc -->
21 * An implementation of the model <b>Package</b>.
22 * <!-- end-user-doc -->
23 * @generated
24 */
25public class filesystemPackageImpl extends EPackageImpl implements filesystemPackage {
26 /**
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @generated
30 */
31 private EClass fileSystemEClass = null;
32
33 /**
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @generated
37 */
38 private EClass fsObjectEClass = null;
39
40 /**
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @generated
44 */
45 private EClass dirEClass = null;
46
47 /**
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @generated
51 */
52 private EClass fileEClass = null;
53
54 /**
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 private EClass modelEClass = null;
60
61 /**
62 * Creates an instance of the model <b>Package</b>, registered with
63 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
64 * package URI value.
65 * <p>Note: the correct way to create the package is via the static
66 * factory method {@link #init init()}, which also performs
67 * initialization of the package, or returns the registered package,
68 * if one already exists.
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @see org.eclipse.emf.ecore.EPackage.Registry
72 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#eNS_URI
73 * @see #init()
74 * @generated
75 */
76 private filesystemPackageImpl() {
77 super(eNS_URI, filesystemFactory.eINSTANCE);
78 }
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 private static boolean isInited = false;
86
87 /**
88 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
89 *
90 * <p>This method is used to initialize {@link filesystemPackage#eINSTANCE} when that field is accessed.
91 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @see #eNS_URI
95 * @see #createPackageContents()
96 * @see #initializePackageContents()
97 * @generated
98 */
99 public static filesystemPackage init() {
100 if (isInited) return (filesystemPackage)EPackage.Registry.INSTANCE.getEPackage(filesystemPackage.eNS_URI);
101
102 // Obtain or create and register package
103 filesystemPackageImpl thefilesystemPackage = (filesystemPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof filesystemPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new filesystemPackageImpl());
104
105 isInited = true;
106
107 // Create package meta-data objects
108 thefilesystemPackage.createPackageContents();
109
110 // Initialize created meta-data
111 thefilesystemPackage.initializePackageContents();
112
113 // Mark meta-data to indicate it can't be changed
114 thefilesystemPackage.freeze();
115
116
117 // Update the registry and return the package
118 EPackage.Registry.INSTANCE.put(filesystemPackage.eNS_URI, thefilesystemPackage);
119 return thefilesystemPackage;
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 public EClass getFileSystem() {
128 return fileSystemEClass;
129 }
130
131 /**
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @generated
135 */
136 public EReference getFileSystem_Root() {
137 return (EReference)fileSystemEClass.getEStructuralFeatures().get(0);
138 }
139
140 /**
141 * <!-- begin-user-doc -->
142 * <!-- end-user-doc -->
143 * @generated
144 */
145 public EReference getFileSystem_Live() {
146 return (EReference)fileSystemEClass.getEStructuralFeatures().get(1);
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 public EClass getFSObject() {
155 return fsObjectEClass;
156 }
157
158 /**
159 * <!-- begin-user-doc -->
160 * <!-- end-user-doc -->
161 * @generated
162 */
163 public EReference getFSObject_Parent() {
164 return (EReference)fsObjectEClass.getEStructuralFeatures().get(0);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 public EClass getDir() {
173 return dirEClass;
174 }
175
176 /**
177 * <!-- begin-user-doc -->
178 * <!-- end-user-doc -->
179 * @generated
180 */
181 public EReference getDir_Contents() {
182 return (EReference)dirEClass.getEStructuralFeatures().get(0);
183 }
184
185 /**
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @generated
189 */
190 public EClass getFile() {
191 return fileEClass;
192 }
193
194 /**
195 * <!-- begin-user-doc -->
196 * <!-- end-user-doc -->
197 * @generated
198 */
199 public EClass getModel() {
200 return modelEClass;
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 public EReference getModel_Filesystems() {
209 return (EReference)modelEClass.getEStructuralFeatures().get(0);
210 }
211
212 /**
213 * <!-- begin-user-doc -->
214 * <!-- end-user-doc -->
215 * @generated
216 */
217 public EReference getModel_OtherFSObjects() {
218 return (EReference)modelEClass.getEStructuralFeatures().get(1);
219 }
220
221 /**
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @generated
225 */
226 public filesystemFactory getfilesystemFactory() {
227 return (filesystemFactory)getEFactoryInstance();
228 }
229
230 /**
231 * <!-- begin-user-doc -->
232 * <!-- end-user-doc -->
233 * @generated
234 */
235 private boolean isCreated = false;
236
237 /**
238 * Creates the meta-model objects for the package. This method is
239 * guarded to have no affect on any invocation but its first.
240 * <!-- begin-user-doc -->
241 * <!-- end-user-doc -->
242 * @generated
243 */
244 public void createPackageContents() {
245 if (isCreated) return;
246 isCreated = true;
247
248 // Create classes and their features
249 fileSystemEClass = createEClass(FILE_SYSTEM);
250 createEReference(fileSystemEClass, FILE_SYSTEM__ROOT);
251 createEReference(fileSystemEClass, FILE_SYSTEM__LIVE);
252
253 fsObjectEClass = createEClass(FS_OBJECT);
254 createEReference(fsObjectEClass, FS_OBJECT__PARENT);
255
256 dirEClass = createEClass(DIR);
257 createEReference(dirEClass, DIR__CONTENTS);
258
259 fileEClass = createEClass(FILE);
260
261 modelEClass = createEClass(MODEL);
262 createEReference(modelEClass, MODEL__FILESYSTEMS);
263 createEReference(modelEClass, MODEL__OTHER_FS_OBJECTS);
264 }
265
266 /**
267 * <!-- begin-user-doc -->
268 * <!-- end-user-doc -->
269 * @generated
270 */
271 private boolean isInitialized = false;
272
273 /**
274 * Complete the initialization of the package and its meta-model. This
275 * method is guarded to have no affect on any invocation but its first.
276 * <!-- begin-user-doc -->
277 * <!-- end-user-doc -->
278 * @generated
279 */
280 public void initializePackageContents() {
281 if (isInitialized) return;
282 isInitialized = true;
283
284 // Initialize package
285 setName(eNAME);
286 setNsPrefix(eNS_PREFIX);
287 setNsURI(eNS_URI);
288
289 // Create type parameters
290
291 // Set bounds for type parameters
292
293 // Add supertypes to classes
294 dirEClass.getESuperTypes().add(this.getFSObject());
295 fileEClass.getESuperTypes().add(this.getFSObject());
296
297 // Initialize classes, features, and operations; add parameters
298 initEClass(fileSystemEClass, FileSystem.class, "FileSystem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
299 initEReference(getFileSystem_Root(), this.getDir(), null, "root", null, 1, 1, FileSystem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
300 initEReference(getFileSystem_Live(), this.getFSObject(), null, "live", null, 0, -1, FileSystem.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
301
302 initEClass(fsObjectEClass, FSObject.class, "FSObject", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
303 initEReference(getFSObject_Parent(), this.getDir(), this.getDir_Contents(), "parent", null, 0, 1, FSObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
304
305 initEClass(dirEClass, Dir.class, "Dir", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
306 initEReference(getDir_Contents(), this.getFSObject(), this.getFSObject_Parent(), "contents", null, 0, -1, Dir.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
307
308 initEClass(fileEClass, File.class, "File", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
309
310 initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
311 initEReference(getModel_Filesystems(), this.getFileSystem(), null, "filesystems", null, 1, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
312 initEReference(getModel_OtherFSObjects(), this.getFSObject(), null, "otherFSObjects", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
313
314 // Create resource
315 createResource(eNS_URI);
316
317 // Create annotations
318 // http://www.eclipse.org/emf/2002/Ecore
319 createEcoreAnnotations();
320 // org.eclipse.viatra.query.querybasedfeature
321 createOrgAnnotations();
322 }
323
324 /**
325 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
326 * <!-- begin-user-doc -->
327 * <!-- end-user-doc -->
328 * @generated
329 */
330 protected void createEcoreAnnotations() {
331 String source = "http://www.eclipse.org/emf/2002/Ecore";
332 addAnnotation
333 (this,
334 source,
335 new String[] {
336 "settingDelegates", "org.eclipse.viatra.query.querybasedfeature"
337 });
338 }
339
340 /**
341 * Initializes the annotations for <b>org.eclipse.viatra.query.querybasedfeature</b>.
342 * <!-- begin-user-doc -->
343 * <!-- end-user-doc -->
344 * @generated
345 */
346 protected void createOrgAnnotations() {
347 String source = "org.eclipse.viatra.query.querybasedfeature";
348 addAnnotation
349 (getFileSystem_Live(),
350 source,
351 new String[] {
352 "patternFQN", "hu.bme.mit.inf.dslreasoner.domains.alloyexamples.live"
353 });
354 }
355
356} //filesystemPackageImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/FileSystem.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/FileSystem.vql
new file mode 100644
index 00000000..269a4242
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/FileSystem.vql
@@ -0,0 +1,24 @@
1package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries
2
3import epackage "FileSystemMetamodel"
4
5pattern patternContent(o1: FSObject, o2: FSObject) {
6 Dir.contents(o1,o2);
7}
8
9@QueryBasedFeature
10pattern live(this: FileSystem, l: FSObject) {
11 FileSystem.root(this,l);
12} or {
13 FileSystem.root(this,root);
14 find patternContent+(root,l);
15}
16
17@Constraint(key={child}, severity="error", message="error")
18pattern contentInNotLive(parent : Dir, child: FSObject) {
19 Dir.contents(parent,child);
20 neg find live(_,parent);
21} or {
22 Dir.contents(parent,child);
23 neg find live(_,child);
24}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemAdapterFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemAdapterFactory.java
new file mode 100644
index 00000000..d9aed046
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemAdapterFactory.java
@@ -0,0 +1,192 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.util;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.*;
6
7import org.eclipse.emf.common.notify.Adapter;
8import org.eclipse.emf.common.notify.Notifier;
9
10import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
11
12import org.eclipse.emf.ecore.EObject;
13
14/**
15 * <!-- begin-user-doc -->
16 * The <b>Adapter Factory</b> for the model.
17 * It provides an adapter <code>createXXX</code> method for each class of the model.
18 * <!-- end-user-doc -->
19 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage
20 * @generated
21 */
22public class filesystemAdapterFactory extends AdapterFactoryImpl {
23 /**
24 * The cached model package.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 protected static filesystemPackage modelPackage;
30
31 /**
32 * Creates an instance of the adapter factory.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @generated
36 */
37 public filesystemAdapterFactory() {
38 if (modelPackage == null) {
39 modelPackage = filesystemPackage.eINSTANCE;
40 }
41 }
42
43 /**
44 * Returns whether this factory is applicable for the type of the object.
45 * <!-- begin-user-doc -->
46 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
47 * <!-- end-user-doc -->
48 * @return whether this factory is applicable for the type of the object.
49 * @generated
50 */
51 @Override
52 public boolean isFactoryForType(Object object) {
53 if (object == modelPackage) {
54 return true;
55 }
56 if (object instanceof EObject) {
57 return ((EObject)object).eClass().getEPackage() == modelPackage;
58 }
59 return false;
60 }
61
62 /**
63 * The switch that delegates to the <code>createXXX</code> methods.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 protected filesystemSwitch<Adapter> modelSwitch =
69 new filesystemSwitch<Adapter>() {
70 @Override
71 public Adapter caseFileSystem(FileSystem object) {
72 return createFileSystemAdapter();
73 }
74 @Override
75 public Adapter caseFSObject(FSObject object) {
76 return createFSObjectAdapter();
77 }
78 @Override
79 public Adapter caseDir(Dir object) {
80 return createDirAdapter();
81 }
82 @Override
83 public Adapter caseFile(File object) {
84 return createFileAdapter();
85 }
86 @Override
87 public Adapter caseModel(Model object) {
88 return createModelAdapter();
89 }
90 @Override
91 public Adapter defaultCase(EObject object) {
92 return createEObjectAdapter();
93 }
94 };
95
96 /**
97 * Creates an adapter for the <code>target</code>.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @param target the object to adapt.
101 * @return the adapter for the <code>target</code>.
102 * @generated
103 */
104 @Override
105 public Adapter createAdapter(Notifier target) {
106 return modelSwitch.doSwitch((EObject)target);
107 }
108
109
110 /**
111 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem <em>File System</em>}'.
112 * <!-- begin-user-doc -->
113 * This default implementation returns null so that we can easily ignore cases;
114 * it's useful to ignore a case when inheritance will catch all the cases anyway.
115 * <!-- end-user-doc -->
116 * @return the new adapter.
117 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem
118 * @generated
119 */
120 public Adapter createFileSystemAdapter() {
121 return null;
122 }
123
124 /**
125 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject <em>FS Object</em>}'.
126 * <!-- begin-user-doc -->
127 * This default implementation returns null so that we can easily ignore cases;
128 * it's useful to ignore a case when inheritance will catch all the cases anyway.
129 * <!-- end-user-doc -->
130 * @return the new adapter.
131 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject
132 * @generated
133 */
134 public Adapter createFSObjectAdapter() {
135 return null;
136 }
137
138 /**
139 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir <em>Dir</em>}'.
140 * <!-- begin-user-doc -->
141 * This default implementation returns null so that we can easily ignore cases;
142 * it's useful to ignore a case when inheritance will catch all the cases anyway.
143 * <!-- end-user-doc -->
144 * @return the new adapter.
145 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir
146 * @generated
147 */
148 public Adapter createDirAdapter() {
149 return null;
150 }
151
152 /**
153 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File <em>File</em>}'.
154 * <!-- begin-user-doc -->
155 * This default implementation returns null so that we can easily ignore cases;
156 * it's useful to ignore a case when inheritance will catch all the cases anyway.
157 * <!-- end-user-doc -->
158 * @return the new adapter.
159 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File
160 * @generated
161 */
162 public Adapter createFileAdapter() {
163 return null;
164 }
165
166 /**
167 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model <em>Model</em>}'.
168 * <!-- begin-user-doc -->
169 * This default implementation returns null so that we can easily ignore cases;
170 * it's useful to ignore a case when inheritance will catch all the cases anyway.
171 * <!-- end-user-doc -->
172 * @return the new adapter.
173 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model
174 * @generated
175 */
176 public Adapter createModelAdapter() {
177 return null;
178 }
179
180 /**
181 * Creates a new adapter for the default case.
182 * <!-- begin-user-doc -->
183 * This default implementation returns null.
184 * <!-- end-user-doc -->
185 * @return the new adapter.
186 * @generated
187 */
188 public Adapter createEObjectAdapter() {
189 return null;
190 }
191
192} //filesystemAdapterFactory
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemSwitch.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemSwitch.java
new file mode 100644
index 00000000..33f4c7a4
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemSwitch.java
@@ -0,0 +1,196 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.util;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.*;
6
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.EPackage;
9
10import org.eclipse.emf.ecore.util.Switch;
11
12/**
13 * <!-- begin-user-doc -->
14 * The <b>Switch</b> for the model's inheritance hierarchy.
15 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
16 * to invoke the <code>caseXXX</code> method for each class of the model,
17 * starting with the actual class of the object
18 * and proceeding up the inheritance hierarchy
19 * until a non-null result is returned,
20 * which is the result of the switch.
21 * <!-- end-user-doc -->
22 * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage
23 * @generated
24 */
25public class filesystemSwitch<T> extends Switch<T> {
26 /**
27 * The cached model package
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 protected static filesystemPackage modelPackage;
33
34 /**
35 * Creates an instance of the switch.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 public filesystemSwitch() {
41 if (modelPackage == null) {
42 modelPackage = filesystemPackage.eINSTANCE;
43 }
44 }
45
46 /**
47 * Checks whether this is a switch for the given package.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param ePackage the package in question.
51 * @return whether this is a switch for the given package.
52 * @generated
53 */
54 @Override
55 protected boolean isSwitchFor(EPackage ePackage) {
56 return ePackage == modelPackage;
57 }
58
59 /**
60 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @return the first non-null result returned by a <code>caseXXX</code> call.
64 * @generated
65 */
66 @Override
67 protected T doSwitch(int classifierID, EObject theEObject) {
68 switch (classifierID) {
69 case filesystemPackage.FILE_SYSTEM: {
70 FileSystem fileSystem = (FileSystem)theEObject;
71 T result = caseFileSystem(fileSystem);
72 if (result == null) result = defaultCase(theEObject);
73 return result;
74 }
75 case filesystemPackage.FS_OBJECT: {
76 FSObject fsObject = (FSObject)theEObject;
77 T result = caseFSObject(fsObject);
78 if (result == null) result = defaultCase(theEObject);
79 return result;
80 }
81 case filesystemPackage.DIR: {
82 Dir dir = (Dir)theEObject;
83 T result = caseDir(dir);
84 if (result == null) result = caseFSObject(dir);
85 if (result == null) result = defaultCase(theEObject);
86 return result;
87 }
88 case filesystemPackage.FILE: {
89 File file = (File)theEObject;
90 T result = caseFile(file);
91 if (result == null) result = caseFSObject(file);
92 if (result == null) result = defaultCase(theEObject);
93 return result;
94 }
95 case filesystemPackage.MODEL: {
96 Model model = (Model)theEObject;
97 T result = caseModel(model);
98 if (result == null) result = defaultCase(theEObject);
99 return result;
100 }
101 default: return defaultCase(theEObject);
102 }
103 }
104
105 /**
106 * Returns the result of interpreting the object as an instance of '<em>File System</em>'.
107 * <!-- begin-user-doc -->
108 * This implementation returns null;
109 * returning a non-null result will terminate the switch.
110 * <!-- end-user-doc -->
111 * @param object the target of the switch.
112 * @return the result of interpreting the object as an instance of '<em>File System</em>'.
113 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
114 * @generated
115 */
116 public T caseFileSystem(FileSystem object) {
117 return null;
118 }
119
120 /**
121 * Returns the result of interpreting the object as an instance of '<em>FS Object</em>'.
122 * <!-- begin-user-doc -->
123 * This implementation returns null;
124 * returning a non-null result will terminate the switch.
125 * <!-- end-user-doc -->
126 * @param object the target of the switch.
127 * @return the result of interpreting the object as an instance of '<em>FS Object</em>'.
128 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
129 * @generated
130 */
131 public T caseFSObject(FSObject object) {
132 return null;
133 }
134
135 /**
136 * Returns the result of interpreting the object as an instance of '<em>Dir</em>'.
137 * <!-- begin-user-doc -->
138 * This implementation returns null;
139 * returning a non-null result will terminate the switch.
140 * <!-- end-user-doc -->
141 * @param object the target of the switch.
142 * @return the result of interpreting the object as an instance of '<em>Dir</em>'.
143 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
144 * @generated
145 */
146 public T caseDir(Dir object) {
147 return null;
148 }
149
150 /**
151 * Returns the result of interpreting the object as an instance of '<em>File</em>'.
152 * <!-- begin-user-doc -->
153 * This implementation returns null;
154 * returning a non-null result will terminate the switch.
155 * <!-- end-user-doc -->
156 * @param object the target of the switch.
157 * @return the result of interpreting the object as an instance of '<em>File</em>'.
158 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
159 * @generated
160 */
161 public T caseFile(File object) {
162 return null;
163 }
164
165 /**
166 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
167 * <!-- begin-user-doc -->
168 * This implementation returns null;
169 * returning a non-null result will terminate the switch.
170 * <!-- end-user-doc -->
171 * @param object the target of the switch.
172 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
173 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
174 * @generated
175 */
176 public T caseModel(Model object) {
177 return null;
178 }
179
180 /**
181 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
182 * <!-- begin-user-doc -->
183 * This implementation returns null;
184 * returning a non-null result will terminate the switch, but this is the last case anyway.
185 * <!-- end-user-doc -->
186 * @param object the target of the switch.
187 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
188 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
189 * @generated
190 */
191 @Override
192 public T defaultCase(EObject object) {
193 return null;
194 }
195
196} //filesystemSwitch
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Choice.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Choice.java
new file mode 100644
index 00000000..cc4049c4
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Choice.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Choice</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getChoice()
13 * @model
14 * @generated
15 */
16public interface Choice extends Pseudostate {
17} // Choice
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/CompositeElement.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/CompositeElement.java
new file mode 100644
index 00000000..037b1b3c
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/CompositeElement.java
@@ -0,0 +1,42 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Composite Element</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions <em>Regions</em>}</li>
19 * </ul>
20 *
21 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getCompositeElement()
22 * @model abstract="true"
23 * @generated
24 */
25public interface CompositeElement extends EObject {
26 /**
27 * Returns the value of the '<em><b>Regions</b></em>' containment reference list.
28 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region}.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Regions</em>' containment reference list isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Regions</em>' containment reference list.
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getCompositeElement_Regions()
37 * @model containment="true"
38 * @generated
39 */
40 EList<Region> getRegions();
41
42} // CompositeElement
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Entry.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Entry.java
new file mode 100644
index 00000000..da40c481
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Entry.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Entry</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getEntry()
13 * @model
14 * @generated
15 */
16public interface Entry extends Pseudostate {
17} // Entry
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Exit.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Exit.java
new file mode 100644
index 00000000..9f8e12d3
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Exit.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Exit</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getExit()
13 * @model
14 * @generated
15 */
16public interface Exit extends Pseudostate {
17} // Exit
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/FinalState.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/FinalState.java
new file mode 100644
index 00000000..33703d36
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/FinalState.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Final State</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getFinalState()
13 * @model
14 * @generated
15 */
16public interface FinalState extends RegularState {
17} // FinalState
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Pseudostate.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Pseudostate.java
new file mode 100644
index 00000000..e6a003f9
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Pseudostate.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Pseudostate</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getPseudostate()
13 * @model abstract="true"
14 * @generated
15 */
16public interface Pseudostate extends Vertex {
17} // Pseudostate
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Region.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Region.java
new file mode 100644
index 00000000..f4c3f114
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Region.java
@@ -0,0 +1,42 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Region</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices <em>Vertices</em>}</li>
19 * </ul>
20 *
21 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getRegion()
22 * @model
23 * @generated
24 */
25public interface Region extends EObject {
26 /**
27 * Returns the value of the '<em><b>Vertices</b></em>' containment reference list.
28 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex}.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Vertices</em>' containment reference list isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Vertices</em>' containment reference list.
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getRegion_Vertices()
37 * @model containment="true" ordered="false"
38 * @generated
39 */
40 EList<Vertex> getVertices();
41
42} // Region
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/RegularState.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/RegularState.java
new file mode 100644
index 00000000..7db584e5
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/RegularState.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Regular State</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getRegularState()
13 * @model abstract="true"
14 * @generated
15 */
16public interface RegularState extends Vertex {
17} // RegularState
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/State.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/State.java
new file mode 100644
index 00000000..3c65be40
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/State.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>State</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getState()
13 * @model
14 * @generated
15 */
16public interface State extends RegularState, CompositeElement {
17} // State
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Statechart.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Statechart.java
new file mode 100644
index 00000000..33a1dd7a
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Statechart.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Statechart</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getStatechart()
13 * @model
14 * @generated
15 */
16public interface Statechart extends CompositeElement {
17} // Statechart
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Synchronization.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Synchronization.java
new file mode 100644
index 00000000..f1294200
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Synchronization.java
@@ -0,0 +1,17 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Synchronization</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getSynchronization()
13 * @model
14 * @generated
15 */
16public interface Synchronization extends Pseudostate {
17} // Synchronization
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Transition.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Transition.java
new file mode 100644
index 00000000..543cc73b
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Transition.java
@@ -0,0 +1,81 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Transition</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget <em>Target</em>}</li>
17 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource <em>Source</em>}</li>
18 * </ul>
19 *
20 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getTransition()
21 * @model
22 * @generated
23 */
24public interface Transition extends EObject {
25 /**
26 * Returns the value of the '<em><b>Target</b></em>' reference.
27 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions <em>Incoming Transitions</em>}'.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>Target</em>' reference isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Target</em>' reference.
35 * @see #setTarget(Vertex)
36 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getTransition_Target()
37 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions
38 * @model opposite="incomingTransitions" required="true" ordered="false"
39 * @generated
40 */
41 Vertex getTarget();
42
43 /**
44 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget <em>Target</em>}' reference.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @param value the new value of the '<em>Target</em>' reference.
48 * @see #getTarget()
49 * @generated
50 */
51 void setTarget(Vertex value);
52
53 /**
54 * Returns the value of the '<em><b>Source</b></em>' container reference.
55 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions <em>Outgoing Transitions</em>}'.
56 * <!-- begin-user-doc -->
57 * <p>
58 * If the meaning of the '<em>Source</em>' container reference isn't clear,
59 * there really should be more of a description here...
60 * </p>
61 * <!-- end-user-doc -->
62 * @return the value of the '<em>Source</em>' container reference.
63 * @see #setSource(Vertex)
64 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getTransition_Source()
65 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions
66 * @model opposite="outgoingTransitions" transient="false" ordered="false"
67 * @generated
68 */
69 Vertex getSource();
70
71 /**
72 * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource <em>Source</em>}' container reference.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @param value the new value of the '<em>Source</em>' container reference.
76 * @see #getSource()
77 * @generated
78 */
79 void setSource(Vertex value);
80
81} // Transition
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Vertex.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Vertex.java
new file mode 100644
index 00000000..6005a550
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Vertex.java
@@ -0,0 +1,63 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Vertex</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions <em>Incoming Transitions</em>}</li>
19 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions <em>Outgoing Transitions</em>}</li>
20 * </ul>
21 *
22 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getVertex()
23 * @model abstract="true"
24 * @generated
25 */
26public interface Vertex extends EObject {
27 /**
28 * Returns the value of the '<em><b>Incoming Transitions</b></em>' reference list.
29 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition}.
30 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget <em>Target</em>}'.
31 * <!-- begin-user-doc -->
32 * <p>
33 * If the meaning of the '<em>Incoming Transitions</em>' reference list isn't clear,
34 * there really should be more of a description here...
35 * </p>
36 * <!-- end-user-doc -->
37 * @return the value of the '<em>Incoming Transitions</em>' reference list.
38 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getVertex_IncomingTransitions()
39 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget
40 * @model opposite="target" ordered="false"
41 * @generated
42 */
43 EList<Transition> getIncomingTransitions();
44
45 /**
46 * Returns the value of the '<em><b>Outgoing Transitions</b></em>' containment reference list.
47 * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition}.
48 * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource <em>Source</em>}'.
49 * <!-- begin-user-doc -->
50 * <p>
51 * If the meaning of the '<em>Outgoing Transitions</em>' containment reference list isn't clear,
52 * there really should be more of a description here...
53 * </p>
54 * <!-- end-user-doc -->
55 * @return the value of the '<em>Outgoing Transitions</em>' containment reference list.
56 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#getVertex_OutgoingTransitions()
57 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource
58 * @model opposite="source" containment="true" ordered="false"
59 * @generated
60 */
61 EList<Transition> getOutgoingTransitions();
62
63} // Vertex
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ChoiceImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ChoiceImpl.java
new file mode 100644
index 00000000..8fc4883b
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ChoiceImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Choice</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class ChoiceImpl extends PseudostateImpl implements Choice {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected ChoiceImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return yakinduPackage.Literals.CHOICE;
35 }
36
37} //ChoiceImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/CompositeElementImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/CompositeElementImpl.java
new file mode 100644
index 00000000..0218f9c7
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/CompositeElementImpl.java
@@ -0,0 +1,152 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region;
7import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
8
9import java.util.Collection;
10
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.common.util.EList;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
19
20import org.eclipse.emf.ecore.util.EObjectContainmentEList;
21import org.eclipse.emf.ecore.util.InternalEList;
22
23/**
24 * <!-- begin-user-doc -->
25 * An implementation of the model object '<em><b>Composite Element</b></em>'.
26 * <!-- end-user-doc -->
27 * <p>
28 * The following features are implemented:
29 * </p>
30 * <ul>
31 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl#getRegions <em>Regions</em>}</li>
32 * </ul>
33 *
34 * @generated
35 */
36public abstract class CompositeElementImpl extends MinimalEObjectImpl.Container implements CompositeElement {
37 /**
38 * The cached value of the '{@link #getRegions() <em>Regions</em>}' containment reference list.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @see #getRegions()
42 * @generated
43 * @ordered
44 */
45 protected EList<Region> regions;
46
47 /**
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @generated
51 */
52 protected CompositeElementImpl() {
53 super();
54 }
55
56 /**
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @generated
60 */
61 @Override
62 protected EClass eStaticClass() {
63 return yakinduPackage.Literals.COMPOSITE_ELEMENT;
64 }
65
66 /**
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @generated
70 */
71 public EList<Region> getRegions() {
72 if (regions == null) {
73 regions = new EObjectContainmentEList<Region>(Region.class, this, yakinduPackage.COMPOSITE_ELEMENT__REGIONS);
74 }
75 return regions;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 @Override
84 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
85 switch (featureID) {
86 case yakinduPackage.COMPOSITE_ELEMENT__REGIONS:
87 return ((InternalEList<?>)getRegions()).basicRemove(otherEnd, msgs);
88 }
89 return super.eInverseRemove(otherEnd, featureID, msgs);
90 }
91
92 /**
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @generated
96 */
97 @Override
98 public Object eGet(int featureID, boolean resolve, boolean coreType) {
99 switch (featureID) {
100 case yakinduPackage.COMPOSITE_ELEMENT__REGIONS:
101 return getRegions();
102 }
103 return super.eGet(featureID, resolve, coreType);
104 }
105
106 /**
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 */
111 @SuppressWarnings("unchecked")
112 @Override
113 public void eSet(int featureID, Object newValue) {
114 switch (featureID) {
115 case yakinduPackage.COMPOSITE_ELEMENT__REGIONS:
116 getRegions().clear();
117 getRegions().addAll((Collection<? extends Region>)newValue);
118 return;
119 }
120 super.eSet(featureID, newValue);
121 }
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 @Override
129 public void eUnset(int featureID) {
130 switch (featureID) {
131 case yakinduPackage.COMPOSITE_ELEMENT__REGIONS:
132 getRegions().clear();
133 return;
134 }
135 super.eUnset(featureID);
136 }
137
138 /**
139 * <!-- begin-user-doc -->
140 * <!-- end-user-doc -->
141 * @generated
142 */
143 @Override
144 public boolean eIsSet(int featureID) {
145 switch (featureID) {
146 case yakinduPackage.COMPOSITE_ELEMENT__REGIONS:
147 return regions != null && !regions.isEmpty();
148 }
149 return super.eIsSet(featureID);
150 }
151
152} //CompositeElementImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/EntryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/EntryImpl.java
new file mode 100644
index 00000000..d0334475
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/EntryImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Entry</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class EntryImpl extends PseudostateImpl implements Entry {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected EntryImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return yakinduPackage.Literals.ENTRY;
35 }
36
37} //EntryImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ExitImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ExitImpl.java
new file mode 100644
index 00000000..d1448776
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ExitImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Exit</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class ExitImpl extends PseudostateImpl implements Exit {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected ExitImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return yakinduPackage.Literals.EXIT;
35 }
36
37} //ExitImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/FinalStateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/FinalStateImpl.java
new file mode 100644
index 00000000..716c096e
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/FinalStateImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Final State</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class FinalStateImpl extends RegularStateImpl implements FinalState {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected FinalStateImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return yakinduPackage.Literals.FINAL_STATE;
35 }
36
37} //FinalStateImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/PseudostateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/PseudostateImpl.java
new file mode 100644
index 00000000..b9fc27f3
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/PseudostateImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Pseudostate</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public abstract class PseudostateImpl extends VertexImpl implements Pseudostate {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected PseudostateImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return yakinduPackage.Literals.PSEUDOSTATE;
35 }
36
37} //PseudostateImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegionImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegionImpl.java
new file mode 100644
index 00000000..fa873aeb
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegionImpl.java
@@ -0,0 +1,152 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex;
7import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
8
9import java.util.Collection;
10
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.common.util.EList;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
19
20import org.eclipse.emf.ecore.util.EObjectContainmentEList;
21import org.eclipse.emf.ecore.util.InternalEList;
22
23/**
24 * <!-- begin-user-doc -->
25 * An implementation of the model object '<em><b>Region</b></em>'.
26 * <!-- end-user-doc -->
27 * <p>
28 * The following features are implemented:
29 * </p>
30 * <ul>
31 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl#getVertices <em>Vertices</em>}</li>
32 * </ul>
33 *
34 * @generated
35 */
36public class RegionImpl extends MinimalEObjectImpl.Container implements Region {
37 /**
38 * The cached value of the '{@link #getVertices() <em>Vertices</em>}' containment reference list.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @see #getVertices()
42 * @generated
43 * @ordered
44 */
45 protected EList<Vertex> vertices;
46
47 /**
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @generated
51 */
52 protected RegionImpl() {
53 super();
54 }
55
56 /**
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @generated
60 */
61 @Override
62 protected EClass eStaticClass() {
63 return yakinduPackage.Literals.REGION;
64 }
65
66 /**
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @generated
70 */
71 public EList<Vertex> getVertices() {
72 if (vertices == null) {
73 vertices = new EObjectContainmentEList<Vertex>(Vertex.class, this, yakinduPackage.REGION__VERTICES);
74 }
75 return vertices;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 @Override
84 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
85 switch (featureID) {
86 case yakinduPackage.REGION__VERTICES:
87 return ((InternalEList<?>)getVertices()).basicRemove(otherEnd, msgs);
88 }
89 return super.eInverseRemove(otherEnd, featureID, msgs);
90 }
91
92 /**
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @generated
96 */
97 @Override
98 public Object eGet(int featureID, boolean resolve, boolean coreType) {
99 switch (featureID) {
100 case yakinduPackage.REGION__VERTICES:
101 return getVertices();
102 }
103 return super.eGet(featureID, resolve, coreType);
104 }
105
106 /**
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 */
111 @SuppressWarnings("unchecked")
112 @Override
113 public void eSet(int featureID, Object newValue) {
114 switch (featureID) {
115 case yakinduPackage.REGION__VERTICES:
116 getVertices().clear();
117 getVertices().addAll((Collection<? extends Vertex>)newValue);
118 return;
119 }
120 super.eSet(featureID, newValue);
121 }
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 @Override
129 public void eUnset(int featureID) {
130 switch (featureID) {
131 case yakinduPackage.REGION__VERTICES:
132 getVertices().clear();
133 return;
134 }
135 super.eUnset(featureID);
136 }
137
138 /**
139 * <!-- begin-user-doc -->
140 * <!-- end-user-doc -->
141 * @generated
142 */
143 @Override
144 public boolean eIsSet(int featureID) {
145 switch (featureID) {
146 case yakinduPackage.REGION__VERTICES:
147 return vertices != null && !vertices.isEmpty();
148 }
149 return super.eIsSet(featureID);
150 }
151
152} //RegionImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegularStateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegularStateImpl.java
new file mode 100644
index 00000000..bbe21a14
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegularStateImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Regular State</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public abstract class RegularStateImpl extends VertexImpl implements RegularState {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected RegularStateImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return yakinduPackage.Literals.REGULAR_STATE;
35 }
36
37} //RegularStateImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StateImpl.java
new file mode 100644
index 00000000..66ab2a8f
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StateImpl.java
@@ -0,0 +1,183 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region;
7import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State;
8import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
9
10import java.util.Collection;
11
12import org.eclipse.emf.common.notify.NotificationChain;
13
14import org.eclipse.emf.common.util.EList;
15
16import org.eclipse.emf.ecore.EClass;
17import org.eclipse.emf.ecore.InternalEObject;
18
19import org.eclipse.emf.ecore.util.EObjectContainmentEList;
20import org.eclipse.emf.ecore.util.InternalEList;
21
22/**
23 * <!-- begin-user-doc -->
24 * An implementation of the model object '<em><b>State</b></em>'.
25 * <!-- end-user-doc -->
26 * <p>
27 * The following features are implemented:
28 * </p>
29 * <ul>
30 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl#getRegions <em>Regions</em>}</li>
31 * </ul>
32 *
33 * @generated
34 */
35public class StateImpl extends RegularStateImpl implements State {
36 /**
37 * The cached value of the '{@link #getRegions() <em>Regions</em>}' containment reference list.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @see #getRegions()
41 * @generated
42 * @ordered
43 */
44 protected EList<Region> regions;
45
46 /**
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @generated
50 */
51 protected StateImpl() {
52 super();
53 }
54
55 /**
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @generated
59 */
60 @Override
61 protected EClass eStaticClass() {
62 return yakinduPackage.Literals.STATE;
63 }
64
65 /**
66 * <!-- begin-user-doc -->
67 * <!-- end-user-doc -->
68 * @generated
69 */
70 public EList<Region> getRegions() {
71 if (regions == null) {
72 regions = new EObjectContainmentEList<Region>(Region.class, this, yakinduPackage.STATE__REGIONS);
73 }
74 return regions;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 @Override
83 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
84 switch (featureID) {
85 case yakinduPackage.STATE__REGIONS:
86 return ((InternalEList<?>)getRegions()).basicRemove(otherEnd, msgs);
87 }
88 return super.eInverseRemove(otherEnd, featureID, msgs);
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public Object eGet(int featureID, boolean resolve, boolean coreType) {
98 switch (featureID) {
99 case yakinduPackage.STATE__REGIONS:
100 return getRegions();
101 }
102 return super.eGet(featureID, resolve, coreType);
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @SuppressWarnings("unchecked")
111 @Override
112 public void eSet(int featureID, Object newValue) {
113 switch (featureID) {
114 case yakinduPackage.STATE__REGIONS:
115 getRegions().clear();
116 getRegions().addAll((Collection<? extends Region>)newValue);
117 return;
118 }
119 super.eSet(featureID, newValue);
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 @Override
128 public void eUnset(int featureID) {
129 switch (featureID) {
130 case yakinduPackage.STATE__REGIONS:
131 getRegions().clear();
132 return;
133 }
134 super.eUnset(featureID);
135 }
136
137 /**
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @generated
141 */
142 @Override
143 public boolean eIsSet(int featureID) {
144 switch (featureID) {
145 case yakinduPackage.STATE__REGIONS:
146 return regions != null && !regions.isEmpty();
147 }
148 return super.eIsSet(featureID);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
158 if (baseClass == CompositeElement.class) {
159 switch (derivedFeatureID) {
160 case yakinduPackage.STATE__REGIONS: return yakinduPackage.COMPOSITE_ELEMENT__REGIONS;
161 default: return -1;
162 }
163 }
164 return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 @Override
173 public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
174 if (baseClass == CompositeElement.class) {
175 switch (baseFeatureID) {
176 case yakinduPackage.COMPOSITE_ELEMENT__REGIONS: return yakinduPackage.STATE__REGIONS;
177 default: return -1;
178 }
179 }
180 return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
181 }
182
183} //StateImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StatechartImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StatechartImpl.java
new file mode 100644
index 00000000..056820ca
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StatechartImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Statechart</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class StatechartImpl extends CompositeElementImpl implements Statechart {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected StatechartImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return yakinduPackage.Literals.STATECHART;
35 }
36
37} //StatechartImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/SynchronizationImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/SynchronizationImpl.java
new file mode 100644
index 00000000..28ef69ea
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/SynchronizationImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Synchronization</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class SynchronizationImpl extends PseudostateImpl implements Synchronization {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected SynchronizationImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return yakinduPackage.Literals.SYNCHRONIZATION;
35 }
36
37} //SynchronizationImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/TransitionImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/TransitionImpl.java
new file mode 100644
index 00000000..ea1677ee
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/TransitionImpl.java
@@ -0,0 +1,284 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex;
7import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10import org.eclipse.emf.common.notify.NotificationChain;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18import org.eclipse.emf.ecore.util.EcoreUtil;
19
20/**
21 * <!-- begin-user-doc -->
22 * An implementation of the model object '<em><b>Transition</b></em>'.
23 * <!-- end-user-doc -->
24 * <p>
25 * The following features are implemented:
26 * </p>
27 * <ul>
28 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl#getTarget <em>Target</em>}</li>
29 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl#getSource <em>Source</em>}</li>
30 * </ul>
31 *
32 * @generated
33 */
34public class TransitionImpl extends MinimalEObjectImpl.Container implements Transition {
35 /**
36 * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @see #getTarget()
40 * @generated
41 * @ordered
42 */
43 protected Vertex target;
44
45 /**
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @generated
49 */
50 protected TransitionImpl() {
51 super();
52 }
53
54 /**
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 @Override
60 protected EClass eStaticClass() {
61 return yakinduPackage.Literals.TRANSITION;
62 }
63
64 /**
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 public Vertex getTarget() {
70 if (target != null && target.eIsProxy()) {
71 InternalEObject oldTarget = (InternalEObject)target;
72 target = (Vertex)eResolveProxy(oldTarget);
73 if (target != oldTarget) {
74 if (eNotificationRequired())
75 eNotify(new ENotificationImpl(this, Notification.RESOLVE, yakinduPackage.TRANSITION__TARGET, oldTarget, target));
76 }
77 }
78 return target;
79 }
80
81 /**
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 */
86 public Vertex basicGetTarget() {
87 return target;
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 public NotificationChain basicSetTarget(Vertex newTarget, NotificationChain msgs) {
96 Vertex oldTarget = target;
97 target = newTarget;
98 if (eNotificationRequired()) {
99 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, yakinduPackage.TRANSITION__TARGET, oldTarget, newTarget);
100 if (msgs == null) msgs = notification; else msgs.add(notification);
101 }
102 return msgs;
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 public void setTarget(Vertex newTarget) {
111 if (newTarget != target) {
112 NotificationChain msgs = null;
113 if (target != null)
114 msgs = ((InternalEObject)target).eInverseRemove(this, yakinduPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs);
115 if (newTarget != null)
116 msgs = ((InternalEObject)newTarget).eInverseAdd(this, yakinduPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs);
117 msgs = basicSetTarget(newTarget, msgs);
118 if (msgs != null) msgs.dispatch();
119 }
120 else if (eNotificationRequired())
121 eNotify(new ENotificationImpl(this, Notification.SET, yakinduPackage.TRANSITION__TARGET, newTarget, newTarget));
122 }
123
124 /**
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 */
129 public Vertex getSource() {
130 if (eContainerFeatureID() != yakinduPackage.TRANSITION__SOURCE) return null;
131 return (Vertex)eInternalContainer();
132 }
133
134 /**
135 * <!-- begin-user-doc -->
136 * <!-- end-user-doc -->
137 * @generated
138 */
139 public NotificationChain basicSetSource(Vertex newSource, NotificationChain msgs) {
140 msgs = eBasicSetContainer((InternalEObject)newSource, yakinduPackage.TRANSITION__SOURCE, msgs);
141 return msgs;
142 }
143
144 /**
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @generated
148 */
149 public void setSource(Vertex newSource) {
150 if (newSource != eInternalContainer() || (eContainerFeatureID() != yakinduPackage.TRANSITION__SOURCE && newSource != null)) {
151 if (EcoreUtil.isAncestor(this, newSource))
152 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
153 NotificationChain msgs = null;
154 if (eInternalContainer() != null)
155 msgs = eBasicRemoveFromContainer(msgs);
156 if (newSource != null)
157 msgs = ((InternalEObject)newSource).eInverseAdd(this, yakinduPackage.VERTEX__OUTGOING_TRANSITIONS, Vertex.class, msgs);
158 msgs = basicSetSource(newSource, msgs);
159 if (msgs != null) msgs.dispatch();
160 }
161 else if (eNotificationRequired())
162 eNotify(new ENotificationImpl(this, Notification.SET, yakinduPackage.TRANSITION__SOURCE, newSource, newSource));
163 }
164
165 /**
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @generated
169 */
170 @Override
171 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
172 switch (featureID) {
173 case yakinduPackage.TRANSITION__TARGET:
174 if (target != null)
175 msgs = ((InternalEObject)target).eInverseRemove(this, yakinduPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs);
176 return basicSetTarget((Vertex)otherEnd, msgs);
177 case yakinduPackage.TRANSITION__SOURCE:
178 if (eInternalContainer() != null)
179 msgs = eBasicRemoveFromContainer(msgs);
180 return basicSetSource((Vertex)otherEnd, msgs);
181 }
182 return super.eInverseAdd(otherEnd, featureID, msgs);
183 }
184
185 /**
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @generated
189 */
190 @Override
191 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
192 switch (featureID) {
193 case yakinduPackage.TRANSITION__TARGET:
194 return basicSetTarget(null, msgs);
195 case yakinduPackage.TRANSITION__SOURCE:
196 return basicSetSource(null, msgs);
197 }
198 return super.eInverseRemove(otherEnd, featureID, msgs);
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
208 switch (eContainerFeatureID()) {
209 case yakinduPackage.TRANSITION__SOURCE:
210 return eInternalContainer().eInverseRemove(this, yakinduPackage.VERTEX__OUTGOING_TRANSITIONS, Vertex.class, msgs);
211 }
212 return super.eBasicRemoveFromContainerFeature(msgs);
213 }
214
215 /**
216 * <!-- begin-user-doc -->
217 * <!-- end-user-doc -->
218 * @generated
219 */
220 @Override
221 public Object eGet(int featureID, boolean resolve, boolean coreType) {
222 switch (featureID) {
223 case yakinduPackage.TRANSITION__TARGET:
224 if (resolve) return getTarget();
225 return basicGetTarget();
226 case yakinduPackage.TRANSITION__SOURCE:
227 return getSource();
228 }
229 return super.eGet(featureID, resolve, coreType);
230 }
231
232 /**
233 * <!-- begin-user-doc -->
234 * <!-- end-user-doc -->
235 * @generated
236 */
237 @Override
238 public void eSet(int featureID, Object newValue) {
239 switch (featureID) {
240 case yakinduPackage.TRANSITION__TARGET:
241 setTarget((Vertex)newValue);
242 return;
243 case yakinduPackage.TRANSITION__SOURCE:
244 setSource((Vertex)newValue);
245 return;
246 }
247 super.eSet(featureID, newValue);
248 }
249
250 /**
251 * <!-- begin-user-doc -->
252 * <!-- end-user-doc -->
253 * @generated
254 */
255 @Override
256 public void eUnset(int featureID) {
257 switch (featureID) {
258 case yakinduPackage.TRANSITION__TARGET:
259 setTarget((Vertex)null);
260 return;
261 case yakinduPackage.TRANSITION__SOURCE:
262 setSource((Vertex)null);
263 return;
264 }
265 super.eUnset(featureID);
266 }
267
268 /**
269 * <!-- begin-user-doc -->
270 * <!-- end-user-doc -->
271 * @generated
272 */
273 @Override
274 public boolean eIsSet(int featureID) {
275 switch (featureID) {
276 case yakinduPackage.TRANSITION__TARGET:
277 return target != null;
278 case yakinduPackage.TRANSITION__SOURCE:
279 return getSource() != null;
280 }
281 return super.eIsSet(featureID);
282 }
283
284} //TransitionImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/VertexImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/VertexImpl.java
new file mode 100644
index 00000000..6f5b9ed3
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/VertexImpl.java
@@ -0,0 +1,206 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex;
7import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
8
9import java.util.Collection;
10
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.common.util.EList;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
19
20import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
21import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
22import org.eclipse.emf.ecore.util.InternalEList;
23
24/**
25 * <!-- begin-user-doc -->
26 * An implementation of the model object '<em><b>Vertex</b></em>'.
27 * <!-- end-user-doc -->
28 * <p>
29 * The following features are implemented:
30 * </p>
31 * <ul>
32 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl#getIncomingTransitions <em>Incoming Transitions</em>}</li>
33 * <li>{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl#getOutgoingTransitions <em>Outgoing Transitions</em>}</li>
34 * </ul>
35 *
36 * @generated
37 */
38public abstract class VertexImpl extends MinimalEObjectImpl.Container implements Vertex {
39 /**
40 * The cached value of the '{@link #getIncomingTransitions() <em>Incoming Transitions</em>}' reference list.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @see #getIncomingTransitions()
44 * @generated
45 * @ordered
46 */
47 protected EList<Transition> incomingTransitions;
48
49 /**
50 * The cached value of the '{@link #getOutgoingTransitions() <em>Outgoing Transitions</em>}' containment reference list.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @see #getOutgoingTransitions()
54 * @generated
55 * @ordered
56 */
57 protected EList<Transition> outgoingTransitions;
58
59 /**
60 * <!-- begin-user-doc -->
61 * <!-- end-user-doc -->
62 * @generated
63 */
64 protected VertexImpl() {
65 super();
66 }
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 @Override
74 protected EClass eStaticClass() {
75 return yakinduPackage.Literals.VERTEX;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 public EList<Transition> getIncomingTransitions() {
84 if (incomingTransitions == null) {
85 incomingTransitions = new EObjectWithInverseResolvingEList<Transition>(Transition.class, this, yakinduPackage.VERTEX__INCOMING_TRANSITIONS, yakinduPackage.TRANSITION__TARGET);
86 }
87 return incomingTransitions;
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 public EList<Transition> getOutgoingTransitions() {
96 if (outgoingTransitions == null) {
97 outgoingTransitions = new EObjectContainmentWithInverseEList<Transition>(Transition.class, this, yakinduPackage.VERTEX__OUTGOING_TRANSITIONS, yakinduPackage.TRANSITION__SOURCE);
98 }
99 return outgoingTransitions;
100 }
101
102 /**
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @generated
106 */
107 @SuppressWarnings("unchecked")
108 @Override
109 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
110 switch (featureID) {
111 case yakinduPackage.VERTEX__INCOMING_TRANSITIONS:
112 return ((InternalEList<InternalEObject>)(InternalEList<?>)getIncomingTransitions()).basicAdd(otherEnd, msgs);
113 case yakinduPackage.VERTEX__OUTGOING_TRANSITIONS:
114 return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutgoingTransitions()).basicAdd(otherEnd, msgs);
115 }
116 return super.eInverseAdd(otherEnd, featureID, msgs);
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @Override
125 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
126 switch (featureID) {
127 case yakinduPackage.VERTEX__INCOMING_TRANSITIONS:
128 return ((InternalEList<?>)getIncomingTransitions()).basicRemove(otherEnd, msgs);
129 case yakinduPackage.VERTEX__OUTGOING_TRANSITIONS:
130 return ((InternalEList<?>)getOutgoingTransitions()).basicRemove(otherEnd, msgs);
131 }
132 return super.eInverseRemove(otherEnd, featureID, msgs);
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public Object eGet(int featureID, boolean resolve, boolean coreType) {
142 switch (featureID) {
143 case yakinduPackage.VERTEX__INCOMING_TRANSITIONS:
144 return getIncomingTransitions();
145 case yakinduPackage.VERTEX__OUTGOING_TRANSITIONS:
146 return getOutgoingTransitions();
147 }
148 return super.eGet(featureID, resolve, coreType);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @SuppressWarnings("unchecked")
157 @Override
158 public void eSet(int featureID, Object newValue) {
159 switch (featureID) {
160 case yakinduPackage.VERTEX__INCOMING_TRANSITIONS:
161 getIncomingTransitions().clear();
162 getIncomingTransitions().addAll((Collection<? extends Transition>)newValue);
163 return;
164 case yakinduPackage.VERTEX__OUTGOING_TRANSITIONS:
165 getOutgoingTransitions().clear();
166 getOutgoingTransitions().addAll((Collection<? extends Transition>)newValue);
167 return;
168 }
169 super.eSet(featureID, newValue);
170 }
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 */
177 @Override
178 public void eUnset(int featureID) {
179 switch (featureID) {
180 case yakinduPackage.VERTEX__INCOMING_TRANSITIONS:
181 getIncomingTransitions().clear();
182 return;
183 case yakinduPackage.VERTEX__OUTGOING_TRANSITIONS:
184 getOutgoingTransitions().clear();
185 return;
186 }
187 super.eUnset(featureID);
188 }
189
190 /**
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 @Override
196 public boolean eIsSet(int featureID) {
197 switch (featureID) {
198 case yakinduPackage.VERTEX__INCOMING_TRANSITIONS:
199 return incomingTransitions != null && !incomingTransitions.isEmpty();
200 case yakinduPackage.VERTEX__OUTGOING_TRANSITIONS:
201 return outgoingTransitions != null && !outgoingTransitions.isEmpty();
202 }
203 return super.eIsSet(featureID);
204 }
205
206} //VertexImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/yakinduFactoryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/yakinduFactoryImpl.java
new file mode 100644
index 00000000..5d004565
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/yakinduFactoryImpl.java
@@ -0,0 +1,183 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*;
6
7import org.eclipse.emf.ecore.EClass;
8import org.eclipse.emf.ecore.EObject;
9import org.eclipse.emf.ecore.EPackage;
10
11import org.eclipse.emf.ecore.impl.EFactoryImpl;
12
13import org.eclipse.emf.ecore.plugin.EcorePlugin;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model <b>Factory</b>.
18 * <!-- end-user-doc -->
19 * @generated
20 */
21public class yakinduFactoryImpl extends EFactoryImpl implements yakinduFactory {
22 /**
23 * Creates the default factory implementation.
24 * <!-- begin-user-doc -->
25 * <!-- end-user-doc -->
26 * @generated
27 */
28 public static yakinduFactory init() {
29 try {
30 yakinduFactory theyakinduFactory = (yakinduFactory)EPackage.Registry.INSTANCE.getEFactory(yakinduPackage.eNS_URI);
31 if (theyakinduFactory != null) {
32 return theyakinduFactory;
33 }
34 }
35 catch (Exception exception) {
36 EcorePlugin.INSTANCE.log(exception);
37 }
38 return new yakinduFactoryImpl();
39 }
40
41 /**
42 * Creates an instance of the factory.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @generated
46 */
47 public yakinduFactoryImpl() {
48 super();
49 }
50
51 /**
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 @Override
57 public EObject create(EClass eClass) {
58 switch (eClass.getClassifierID()) {
59 case yakinduPackage.REGION: return createRegion();
60 case yakinduPackage.TRANSITION: return createTransition();
61 case yakinduPackage.STATECHART: return createStatechart();
62 case yakinduPackage.ENTRY: return createEntry();
63 case yakinduPackage.SYNCHRONIZATION: return createSynchronization();
64 case yakinduPackage.STATE: return createState();
65 case yakinduPackage.CHOICE: return createChoice();
66 case yakinduPackage.EXIT: return createExit();
67 case yakinduPackage.FINAL_STATE: return createFinalState();
68 default:
69 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
70 }
71 }
72
73 /**
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @generated
77 */
78 public Region createRegion() {
79 RegionImpl region = new RegionImpl();
80 return region;
81 }
82
83 /**
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @generated
87 */
88 public Transition createTransition() {
89 TransitionImpl transition = new TransitionImpl();
90 return transition;
91 }
92
93 /**
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @generated
97 */
98 public Statechart createStatechart() {
99 StatechartImpl statechart = new StatechartImpl();
100 return statechart;
101 }
102
103 /**
104 * <!-- begin-user-doc -->
105 * <!-- end-user-doc -->
106 * @generated
107 */
108 public Entry createEntry() {
109 EntryImpl entry = new EntryImpl();
110 return entry;
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 public Synchronization createSynchronization() {
119 SynchronizationImpl synchronization = new SynchronizationImpl();
120 return synchronization;
121 }
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 public State createState() {
129 StateImpl state = new StateImpl();
130 return state;
131 }
132
133 /**
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 */
138 public Choice createChoice() {
139 ChoiceImpl choice = new ChoiceImpl();
140 return choice;
141 }
142
143 /**
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @generated
147 */
148 public Exit createExit() {
149 ExitImpl exit = new ExitImpl();
150 return exit;
151 }
152
153 /**
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @generated
157 */
158 public FinalState createFinalState() {
159 FinalStateImpl finalState = new FinalStateImpl();
160 return finalState;
161 }
162
163 /**
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @generated
167 */
168 public yakinduPackage getyakinduPackage() {
169 return (yakinduPackage)getEPackage();
170 }
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @deprecated
176 * @generated
177 */
178 @Deprecated
179 public static yakinduPackage getPackage() {
180 return yakinduPackage.eINSTANCE;
181 }
182
183} //yakinduFactoryImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/yakinduPackageImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/yakinduPackageImpl.java
new file mode 100644
index 00000000..2213e07f
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/yakinduPackageImpl.java
@@ -0,0 +1,494 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice;
6import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement;
7import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry;
8import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit;
9import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState;
10import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate;
11import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region;
12import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState;
13import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State;
14import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart;
15import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization;
16import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition;
17import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex;
18import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduFactory;
19import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage;
20
21import org.eclipse.emf.ecore.EClass;
22import org.eclipse.emf.ecore.EPackage;
23import org.eclipse.emf.ecore.EReference;
24
25import org.eclipse.emf.ecore.impl.EPackageImpl;
26
27/**
28 * <!-- begin-user-doc -->
29 * An implementation of the model <b>Package</b>.
30 * <!-- end-user-doc -->
31 * @generated
32 */
33public class yakinduPackageImpl extends EPackageImpl implements yakinduPackage {
34 /**
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @generated
38 */
39 private EClass pseudostateEClass = null;
40
41 /**
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @generated
45 */
46 private EClass vertexEClass = null;
47
48 /**
49 * <!-- begin-user-doc -->
50 * <!-- end-user-doc -->
51 * @generated
52 */
53 private EClass regionEClass = null;
54
55 /**
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @generated
59 */
60 private EClass transitionEClass = null;
61
62 /**
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @generated
66 */
67 private EClass statechartEClass = null;
68
69 /**
70 * <!-- begin-user-doc -->
71 * <!-- end-user-doc -->
72 * @generated
73 */
74 private EClass entryEClass = null;
75
76 /**
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 private EClass synchronizationEClass = null;
82
83 /**
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @generated
87 */
88 private EClass stateEClass = null;
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 private EClass regularStateEClass = null;
96
97 /**
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 private EClass compositeElementEClass = null;
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 private EClass choiceEClass = null;
110
111 /**
112 * <!-- begin-user-doc -->
113 * <!-- end-user-doc -->
114 * @generated
115 */
116 private EClass exitEClass = null;
117
118 /**
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @generated
122 */
123 private EClass finalStateEClass = null;
124
125 /**
126 * Creates an instance of the model <b>Package</b>, registered with
127 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
128 * package URI value.
129 * <p>Note: the correct way to create the package is via the static
130 * factory method {@link #init init()}, which also performs
131 * initialization of the package, or returns the registered package,
132 * if one already exists.
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @see org.eclipse.emf.ecore.EPackage.Registry
136 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage#eNS_URI
137 * @see #init()
138 * @generated
139 */
140 private yakinduPackageImpl() {
141 super(eNS_URI, yakinduFactory.eINSTANCE);
142 }
143
144 /**
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @generated
148 */
149 private static boolean isInited = false;
150
151 /**
152 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
153 *
154 * <p>This method is used to initialize {@link yakinduPackage#eINSTANCE} when that field is accessed.
155 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @see #eNS_URI
159 * @see #createPackageContents()
160 * @see #initializePackageContents()
161 * @generated
162 */
163 public static yakinduPackage init() {
164 if (isInited) return (yakinduPackage)EPackage.Registry.INSTANCE.getEPackage(yakinduPackage.eNS_URI);
165
166 // Obtain or create and register package
167 yakinduPackageImpl theyakinduPackage = (yakinduPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof yakinduPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new yakinduPackageImpl());
168
169 isInited = true;
170
171 // Create package meta-data objects
172 theyakinduPackage.createPackageContents();
173
174 // Initialize created meta-data
175 theyakinduPackage.initializePackageContents();
176
177 // Mark meta-data to indicate it can't be changed
178 theyakinduPackage.freeze();
179
180
181 // Update the registry and return the package
182 EPackage.Registry.INSTANCE.put(yakinduPackage.eNS_URI, theyakinduPackage);
183 return theyakinduPackage;
184 }
185
186 /**
187 * <!-- begin-user-doc -->
188 * <!-- end-user-doc -->
189 * @generated
190 */
191 public EClass getPseudostate() {
192 return pseudostateEClass;
193 }
194
195 /**
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @generated
199 */
200 public EClass getVertex() {
201 return vertexEClass;
202 }
203
204 /**
205 * <!-- begin-user-doc -->
206 * <!-- end-user-doc -->
207 * @generated
208 */
209 public EReference getVertex_IncomingTransitions() {
210 return (EReference)vertexEClass.getEStructuralFeatures().get(0);
211 }
212
213 /**
214 * <!-- begin-user-doc -->
215 * <!-- end-user-doc -->
216 * @generated
217 */
218 public EReference getVertex_OutgoingTransitions() {
219 return (EReference)vertexEClass.getEStructuralFeatures().get(1);
220 }
221
222 /**
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 public EClass getRegion() {
228 return regionEClass;
229 }
230
231 /**
232 * <!-- begin-user-doc -->
233 * <!-- end-user-doc -->
234 * @generated
235 */
236 public EReference getRegion_Vertices() {
237 return (EReference)regionEClass.getEStructuralFeatures().get(0);
238 }
239
240 /**
241 * <!-- begin-user-doc -->
242 * <!-- end-user-doc -->
243 * @generated
244 */
245 public EClass getTransition() {
246 return transitionEClass;
247 }
248
249 /**
250 * <!-- begin-user-doc -->
251 * <!-- end-user-doc -->
252 * @generated
253 */
254 public EReference getTransition_Target() {
255 return (EReference)transitionEClass.getEStructuralFeatures().get(0);
256 }
257
258 /**
259 * <!-- begin-user-doc -->
260 * <!-- end-user-doc -->
261 * @generated
262 */
263 public EReference getTransition_Source() {
264 return (EReference)transitionEClass.getEStructuralFeatures().get(1);
265 }
266
267 /**
268 * <!-- begin-user-doc -->
269 * <!-- end-user-doc -->
270 * @generated
271 */
272 public EClass getStatechart() {
273 return statechartEClass;
274 }
275
276 /**
277 * <!-- begin-user-doc -->
278 * <!-- end-user-doc -->
279 * @generated
280 */
281 public EClass getEntry() {
282 return entryEClass;
283 }
284
285 /**
286 * <!-- begin-user-doc -->
287 * <!-- end-user-doc -->
288 * @generated
289 */
290 public EClass getSynchronization() {
291 return synchronizationEClass;
292 }
293
294 /**
295 * <!-- begin-user-doc -->
296 * <!-- end-user-doc -->
297 * @generated
298 */
299 public EClass getState() {
300 return stateEClass;
301 }
302
303 /**
304 * <!-- begin-user-doc -->
305 * <!-- end-user-doc -->
306 * @generated
307 */
308 public EClass getRegularState() {
309 return regularStateEClass;
310 }
311
312 /**
313 * <!-- begin-user-doc -->
314 * <!-- end-user-doc -->
315 * @generated
316 */
317 public EClass getCompositeElement() {
318 return compositeElementEClass;
319 }
320
321 /**
322 * <!-- begin-user-doc -->
323 * <!-- end-user-doc -->
324 * @generated
325 */
326 public EReference getCompositeElement_Regions() {
327 return (EReference)compositeElementEClass.getEStructuralFeatures().get(0);
328 }
329
330 /**
331 * <!-- begin-user-doc -->
332 * <!-- end-user-doc -->
333 * @generated
334 */
335 public EClass getChoice() {
336 return choiceEClass;
337 }
338
339 /**
340 * <!-- begin-user-doc -->
341 * <!-- end-user-doc -->
342 * @generated
343 */
344 public EClass getExit() {
345 return exitEClass;
346 }
347
348 /**
349 * <!-- begin-user-doc -->
350 * <!-- end-user-doc -->
351 * @generated
352 */
353 public EClass getFinalState() {
354 return finalStateEClass;
355 }
356
357 /**
358 * <!-- begin-user-doc -->
359 * <!-- end-user-doc -->
360 * @generated
361 */
362 public yakinduFactory getyakinduFactory() {
363 return (yakinduFactory)getEFactoryInstance();
364 }
365
366 /**
367 * <!-- begin-user-doc -->
368 * <!-- end-user-doc -->
369 * @generated
370 */
371 private boolean isCreated = false;
372
373 /**
374 * Creates the meta-model objects for the package. This method is
375 * guarded to have no affect on any invocation but its first.
376 * <!-- begin-user-doc -->
377 * <!-- end-user-doc -->
378 * @generated
379 */
380 public void createPackageContents() {
381 if (isCreated) return;
382 isCreated = true;
383
384 // Create classes and their features
385 pseudostateEClass = createEClass(PSEUDOSTATE);
386
387 vertexEClass = createEClass(VERTEX);
388 createEReference(vertexEClass, VERTEX__INCOMING_TRANSITIONS);
389 createEReference(vertexEClass, VERTEX__OUTGOING_TRANSITIONS);
390
391 regionEClass = createEClass(REGION);
392 createEReference(regionEClass, REGION__VERTICES);
393
394 transitionEClass = createEClass(TRANSITION);
395 createEReference(transitionEClass, TRANSITION__TARGET);
396 createEReference(transitionEClass, TRANSITION__SOURCE);
397
398 statechartEClass = createEClass(STATECHART);
399
400 entryEClass = createEClass(ENTRY);
401
402 synchronizationEClass = createEClass(SYNCHRONIZATION);
403
404 stateEClass = createEClass(STATE);
405
406 regularStateEClass = createEClass(REGULAR_STATE);
407
408 compositeElementEClass = createEClass(COMPOSITE_ELEMENT);
409 createEReference(compositeElementEClass, COMPOSITE_ELEMENT__REGIONS);
410
411 choiceEClass = createEClass(CHOICE);
412
413 exitEClass = createEClass(EXIT);
414
415 finalStateEClass = createEClass(FINAL_STATE);
416 }
417
418 /**
419 * <!-- begin-user-doc -->
420 * <!-- end-user-doc -->
421 * @generated
422 */
423 private boolean isInitialized = false;
424
425 /**
426 * Complete the initialization of the package and its meta-model. This
427 * method is guarded to have no affect on any invocation but its first.
428 * <!-- begin-user-doc -->
429 * <!-- end-user-doc -->
430 * @generated
431 */
432 public void initializePackageContents() {
433 if (isInitialized) return;
434 isInitialized = true;
435
436 // Initialize package
437 setName(eNAME);
438 setNsPrefix(eNS_PREFIX);
439 setNsURI(eNS_URI);
440
441 // Create type parameters
442
443 // Set bounds for type parameters
444
445 // Add supertypes to classes
446 pseudostateEClass.getESuperTypes().add(this.getVertex());
447 statechartEClass.getESuperTypes().add(this.getCompositeElement());
448 entryEClass.getESuperTypes().add(this.getPseudostate());
449 synchronizationEClass.getESuperTypes().add(this.getPseudostate());
450 stateEClass.getESuperTypes().add(this.getRegularState());
451 stateEClass.getESuperTypes().add(this.getCompositeElement());
452 regularStateEClass.getESuperTypes().add(this.getVertex());
453 choiceEClass.getESuperTypes().add(this.getPseudostate());
454 exitEClass.getESuperTypes().add(this.getPseudostate());
455 finalStateEClass.getESuperTypes().add(this.getRegularState());
456
457 // Initialize classes, features, and operations; add parameters
458 initEClass(pseudostateEClass, Pseudostate.class, "Pseudostate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
459
460 initEClass(vertexEClass, Vertex.class, "Vertex", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
461 initEReference(getVertex_IncomingTransitions(), this.getTransition(), this.getTransition_Target(), "incomingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
462 initEReference(getVertex_OutgoingTransitions(), this.getTransition(), this.getTransition_Source(), "outgoingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
463
464 initEClass(regionEClass, Region.class, "Region", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
465 initEReference(getRegion_Vertices(), this.getVertex(), null, "vertices", null, 0, -1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
466
467 initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
468 initEReference(getTransition_Target(), this.getVertex(), this.getVertex_IncomingTransitions(), "target", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
469 initEReference(getTransition_Source(), this.getVertex(), this.getVertex_OutgoingTransitions(), "source", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
470
471 initEClass(statechartEClass, Statechart.class, "Statechart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
472
473 initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
474
475 initEClass(synchronizationEClass, Synchronization.class, "Synchronization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
476
477 initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
478
479 initEClass(regularStateEClass, RegularState.class, "RegularState", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
480
481 initEClass(compositeElementEClass, CompositeElement.class, "CompositeElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
482 initEReference(getCompositeElement_Regions(), this.getRegion(), null, "regions", null, 0, -1, CompositeElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
483
484 initEClass(choiceEClass, Choice.class, "Choice", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
485
486 initEClass(exitEClass, Exit.class, "Exit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
487
488 initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
489
490 // Create resource
491 createResource(eNS_URI);
492 }
493
494} //yakinduPackageImpl
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduMutatedPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduMutatedPatterns.vql
new file mode 100644
index 00000000..2e498670
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduMutatedPatterns.vql
@@ -0,0 +1,270 @@
1package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries
2
3import epackage "YakinduMetamodel"
4
5/////////
6// Entry
7/////////
8
9pattern entryInRegion_M0(r1 : Region, e1 : Entry) {
10 Region.vertices(r1, e1);
11}
12pattern entryInRegion_M1(r1 : Region, e1) {
13 Region.vertices(r1, e1);
14}
15pattern entryInRegion_M2(r1 : Region, e1: Entry) {
16 // For positive constraint
17 Region(r1);Entry(e1);
18}
19
20
21//@Constraint(severity="error", message="error", key = {r1})
22pattern noEntryInRegion_M0(r1 : Region) {
23 neg find entryInRegion_M0(r1, _);
24}
25pattern noEntryInRegion_M1(r1 : Region) {
26 neg find entryInRegion_M1(r1, _);
27}
28pattern noEntryInRegion_M2(r1 : Region) {
29 neg find entryInRegion_M2(r1, _);
30}
31pattern noEntryInRegion_M3(r1 : Region) {
32 find entryInRegion_M0(r1, _);
33}
34pattern noEntryInRegion_M4(r1 : Region) {
35 find entryInRegion_M1(r1, _);
36}
37pattern noEntryInRegion_M5(r1 : Region) {
38 find entryInRegion_M2(r1, _);
39}
40
41//@Constraint(severity="error", message="error", key = {r})
42pattern multipleEntryInRegion_M0(r : Region) {
43 find entryInRegion_M0(r, e1);
44 find entryInRegion_M0(r, e2);
45 e1 != e2;
46}
47pattern multipleEntryInRegion_M1(r : Region) {
48 find entryInRegion_M1(r, e1);
49 find entryInRegion_M0(r, e2);
50 e1 != e2;
51}
52pattern multipleEntryInRegion_M2(r : Region) {
53 find entryInRegion_M2(r, e1);
54 find entryInRegion_M0(r, e2);
55 e1 != e2;
56}
57pattern multipleEntryInRegion_M3(r : Region) {
58 find entryInRegion_M0(r, e1);
59 find entryInRegion_M1(r, e2);
60 e1 != e2;
61}
62pattern multipleEntryInRegion_M4(r : Region) {
63 find entryInRegion_M2(r, e1);
64 find entryInRegion_M2(r, e2);
65 e1 != e2;
66}
67pattern multipleEntryInRegion_M5(r : Region) {
68 find entryInRegion_M0(r, e1);
69 find entryInRegion_M0(r, e2);
70}
71
72
73pattern transition_M0(t : Transition, src : Vertex, trg : Vertex) {
74 Transition.source(t, src);
75 Transition.target(t, trg);
76}
77pattern transition_M1(t : Transition, src : Vertex, trg : Vertex) {
78 Transition.source(t, src);
79 Vertex(trg);
80}
81pattern transition_M2(t : Transition, src : Vertex, trg : Vertex) {
82 Vertex(src);
83 Transition.target(t, trg);
84}
85pattern transition_M3(t : Transition, src : Vertex, trg : Vertex) {
86 Transition.source(t_x, src);
87 Transition.target(t, trg);
88}
89pattern transition_M4(t : Transition, src : Vertex, trg : Vertex) {
90 Transition.source(t, src);
91 Transition.target(t_x, trg);
92}
93
94//@Constraint(severity="error", message="error", key = {e})
95pattern incomingToEntry_M0(t : Transition, e : Entry) {
96 find transition_M0(t, _, e);
97}
98pattern incomingToEntry_1(t : Transition, e) {
99 find transition_M0(t, _, e);
100}
101pattern incomingToEntry_2(t : Transition, e : Entry) {
102 find transition_M1(t, _, e);
103}
104pattern incomingToEntry_3(t : Transition, e : Entry) {
105 find transition_M2(t, _, e);
106}
107pattern incomingToEntry_4(t : Transition, e : Entry) {
108 find transition_M3(t, _, e);
109}
110pattern incomingToEntry_5(t : Transition, e : Entry) {
111 find transition_M4(t, _, e);
112}
113
114pattern noOutgoingTransitionFromEntry_M0(e : Entry) {
115 neg find transition_M0(_, e, _);
116}
117
118pattern noOutgoingTransitionFromEntry_M1(e) {
119 Vertex(e);
120 neg find transition_M0(_, e, _);
121}
122pattern noOutgoingTransitionFromEntry_M2(e : Entry) {
123 neg find transition_M1(_, e, _);
124}
125pattern noOutgoingTransitionFromEntry_M3(e : Entry) {
126 neg find transition_M2(_, e, _);
127}
128pattern noOutgoingTransitionFromEntry_M4(e : Entry) {
129 neg find transition_M3(_, e, _);
130}
131pattern noOutgoingTransitionFromEntry_M5(e : Entry) {
132 neg find transition_M4(_, e, _);
133}
134
135
136//@Constraint(severity="error", message="error", key = {e})
137pattern multipleTransitionFromEntry_M0(e : Entry, t1 : Transition, t2: Transition) {
138 Entry.outgoingTransitions(e,t1);
139 Entry.outgoingTransitions(e,t2);
140 t1!=t2;
141}
142pattern multipleTransitionFromEntry_M1(e, t1 : Transition, t2: Transition) {
143 Entry.outgoingTransitions(e,t1);
144 Entry.outgoingTransitions(e,t2);
145 t1!=t2;
146}
147pattern multipleTransitionFromEntry_M2(e : Entry, t1 : Transition, t2: Transition) {
148 Transition(t1);
149 Entry.outgoingTransitions(e,t2);
150 t1!=t2;
151}
152pattern multipleTransitionFromEntry_M3(e : Entry, t1 : Transition, t2: Transition) {
153 Entry.outgoingTransitions(e,t1);
154 Transition(t2);
155 t1!=t2;
156}
157pattern multipleTransitionFromEntry_M4(e : Entry, t1 : Transition, t2: Transition) {
158 Entry.outgoingTransitions(e,t1);
159 Entry.outgoingTransitions(e,t2);
160}
161
162/////////
163// Exit
164/////////
165
166//@Constraint(severity="error", message="error", key = {e})
167pattern outgoingFromExit_M0(t : Transition, e : Exit) {
168 Exit.outgoingTransitions(e,t);
169}
170pattern outgoingFromExit_M1(t : Transition, e) {
171 Vertex.outgoingTransitions(e,t);
172}
173pattern outgoingFromExit_M2(t : Transition, e : Exit) {
174 Transition(t);
175 Exit(e);
176}
177
178/////////
179// Final
180/////////
181
182//@Constraint(severity="error", message="error", key = {f})
183pattern outgoingFromFinal_M0(t : Transition, f : FinalState) {
184 FinalState.outgoingTransitions(f,t);
185}
186pattern outgoingFromFinal_M1(t : Transition, f) {
187 Vertex.outgoingTransitions(f,t);
188}
189pattern outgoingFromFinal_M2(t : Transition, f : FinalState) {
190 Transition(t);
191 FinalState(f);
192}
193
194/////////
195// State vs Region
196/////////
197
198//@Constraint(severity="error", message="error", key = {region})
199pattern noStateInRegion_M0(region: Region) {
200 neg find StateInRegion_M0(region,_);
201}
202pattern noStateInRegion_M1(region: Region) {
203 neg find StateInRegion_M1(region,_);
204}
205pattern noStateInRegion_M2(region: Region) {
206 neg find StateInRegion_M2(region,_);
207}
208pattern noStateInRegion_M3(region: Region) {
209 find StateInRegion_M0(region,_);
210}
211
212pattern StateInRegion_M0(region: Region, state: State) {
213 Region.vertices(region,state);
214}
215pattern StateInRegion_M1(region: Region, state) {
216 Region.vertices(region,state);
217}
218pattern StateInRegion_M2(region: Region, state:State) {
219 Region(region);State(state);
220}
221
222/////////
223// Choice
224/////////
225
226@Constraint(severity="error", message="error", key = {c})
227pattern choiceHasNoOutgoing_M0(c : Choice) {
228 neg find transition_M0(_, c, _);
229}
230pattern choiceHasNoOutgoing_M1(c:Vertex) {
231 neg find transition_M0(_, c, _);
232}
233pattern choiceHasNoOutgoing_M2(c : Choice) {
234 neg find transition_M1(_, c, _);
235}
236pattern choiceHasNoOutgoing_M3(c : Choice) {
237 neg find transition_M2(_, c, _);
238}
239pattern choiceHasNoOutgoing_M4(c : Choice) {
240 neg find transition_M3(_, c, _);
241}
242pattern choiceHasNoOutgoing_M5(c : Choice) {
243 neg find transition_M4(_, c, _);
244}
245pattern choiceHasNoOutgoing_M6(c : Choice) {
246 find transition_M0(_, c, _);
247}
248
249@Constraint(severity="error", message="error", key = {c})
250pattern choiceHasNoIncoming_M0(c: Choice) {
251 neg find transition_M0(_, _, c);
252}
253pattern choiceHasNoIncoming_M1(c:Vertex) {
254 neg find transition_M0(_, _, c);
255}
256pattern choiceHasNoIncoming_M2(c: Choice) {
257 neg find transition_M1(_, _, c);
258}
259pattern choiceHasNoIncoming_M3(c: Choice) {
260 neg find transition_M2(_, _, c);
261}
262pattern choiceHasNoIncoming_M4(c: Choice) {
263 neg find transition_M3(_, _, c);
264}
265pattern choiceHasNoIncoming_M5(c: Choice) {
266 neg find transition_M4(_, _, c);
267}
268pattern choiceHasNoIncoming_M6(c: Choice) {
269 find transition_M0(_, _, c);
270}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduPatterns.vql
new file mode 100644
index 00000000..597b1691
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduPatterns.vql
@@ -0,0 +1,227 @@
1package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries
2
3import epackage "YakinduMetamodel"
4
5/////////
6// Entry
7/////////
8
9pattern entryInRegion(r1 : Region, e1 : Entry) {
10 Region.vertices(r1, e1);
11}
12
13@Constraint(severity="error", message="error", key = {r1})
14pattern noEntryInRegion(r1 : Region) {
15 neg find entryInRegion(r1, _);
16}
17
18@Constraint(severity="error", message="error", key = {r})
19pattern multipleEntryInRegion(r : Region) {
20 find entryInRegion(r, e1);
21 find entryInRegion(r, e2);
22 e1 != e2;
23}
24
25pattern transition(t : Transition, src : Vertex, trg : Vertex) {
26 Transition.source(t, src);
27 Transition.target(t, trg);
28}
29
30@Constraint(severity="error", message="error", key = {e})
31pattern incomingToEntry(t : Transition, e : Entry) {
32 find transition(t, _, e);
33}
34
35@Constraint(severity="error", message="error", key = {e})
36pattern noOutgoingTransitionFromEntry(e : Entry) {
37 neg find transition(_, e, _);
38}
39
40@Constraint(severity="error", message="error", key = {e})
41pattern multipleTransitionFromEntry(e : Entry, t1 : Transition, t2: Transition) {
42 Entry.outgoingTransitions(e,t1);
43 Entry.outgoingTransitions(e,t2);
44 t1!=t2;
45}
46
47/////////
48// Exit
49/////////
50
51@Constraint(severity="error", message="error", key = {e})
52pattern outgoingFromExit(t : Transition, e : Exit) {
53 Exit.outgoingTransitions(e,t);
54}
55
56/////////
57// Final
58/////////
59
60@Constraint(severity="error", message="error", key = {f})
61pattern outgoingFromFinal(t : Transition, f : FinalState) {
62 FinalState.outgoingTransitions(f,t);
63}
64
65/////////
66// State vs Region
67/////////
68
69@Constraint(severity="error", message="error", key = {region})
70pattern noStateInRegion(region: Region) {
71 neg find StateInRegion(region,_);
72}
73pattern StateInRegion(region: Region, state: State) {
74 Region.vertices(region,state);
75}
76
77/////////
78// Choice
79/////////
80
81@Constraint(severity="error", message="error", key = {c})
82pattern choiceHasNoOutgoing(c : Choice) {
83 neg find transition(_, c, _);
84}
85
86@Constraint(severity="error", message="error", key = {c})
87pattern choiceHasNoIncoming(c: Choice) {
88 neg find transition(_, _, c);
89}
90
91/////////
92// Synchronization
93/////////
94
95@Constraint(severity="error", message="error", key = {s})
96pattern synchHasNoOutgoing(s : Synchronization) {
97 neg find transition(_, s, _);
98}
99
100@Constraint(severity="error", message="error", key = {s})
101pattern synchHasNoIncoming(s : Synchronization) {
102 neg find transition(_, _, s);
103}
104
105@Constraint(severity="error", message="error", key = {s})
106pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) {
107 find transition(t1, v1, s);
108 find transition(t2, v2, s);
109 t1!=t2;
110 Region.vertices(r, v1);
111 Region.vertices(r, v2);
112} or {
113 find transition(t1, s, v1);
114 find transition(t2, s, v2);
115 t1!=t2;
116 Region.vertices(r, v1);
117 Region.vertices(r, v2);
118}
119
120@Constraint(severity="error", message="error", key = {s})
121pattern notSynchronizingStates(s : Synchronization) {
122 neg find hasMultipleOutgoingTrainsition(s);
123 neg find hasMultipleIncomingTrainsition(s);
124}
125
126pattern hasMultipleOutgoingTrainsition(v : Synchronization) {
127 find transition(_, v, trg1);
128 find transition(_, v, trg2);
129 trg1 != trg2;
130}
131
132pattern hasMultipleIncomingTrainsition(v : Synchronization) {
133 find transition(_, src1, v);
134 find transition(_, src2, v);
135 src1 != src2;
136}
137
138@Constraint(severity="error", message="error", key = {s})
139pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) {
140 find transition(_, v1, s);
141 find transition(_, v2, s);
142 CompositeElement.regions.vertices(r1, v1);
143 CompositeElement.regions.vertices(r2, v2);
144 r1 != r2;
145} or {
146 find transition(_, s, v1);
147 find transition(_, s, v2);
148 CompositeElement.regions.vertices(r1, v1);
149 CompositeElement.regions.vertices(r2, v2);
150 r1 != r2;
151}
152
153///////////////////////////////
154// Extra
155//
156//@Constraint(severity="error", message="error", key = {s})
157//pattern SynchronizedRegionDoesNotHaveParent(s : Synchronization, v : Vertex) {
158// find transition(_, v, s);
159// neg find child(_,v);
160//} or {
161// find transition(_, s, v);
162// neg find child(_,v);
163//}
164
165pattern child(parent: CompositeElement, child: Vertex) {
166 CompositeElement.regions.vertices(parent, child);
167}
168
169@Constraint(severity="error", message="error", key = {s})
170pattern SynchronizedRegionDoesNotHaveMultipleRegions(s : Synchronization, v : Vertex) {
171 find transition(_, v, s);
172 find child(c,v);
173 neg find hasMultipleRegions(c);
174} or {
175 find transition(_, s, v);
176 find child(c,v);
177 neg find hasMultipleRegions(c);
178}
179
180
181pattern hasMultipleRegions(composite: CompositeElement) {
182 CompositeElement.regions(composite,region1);
183 CompositeElement.regions(composite,region2);
184 region1 != region2;
185}
186
187/**
188 * Simplifying model generation
189 */
190@Constraint(severity="error", message="error", key = {s})
191pattern synchThree(s: Synchronization) {
192 Transition.target(t1,s);
193 Transition.target(t2,s);
194 Transition.target(t3,s);
195 t1!=t2;
196 t2!=t3;
197 t1!=t3;
198} or {
199 Transition.source(t1,s);
200 Transition.source(t2,s);
201 Transition.source(t3,s);
202 t1!=t2;
203 t2!=t3;
204 t1!=t3;
205}
206
207/**
208 * Simplifying model generation
209 */
210@Constraint(severity="error", message="error", key = {s1,s2})
211pattern twoSynch(s1 : Synchronization, s2 : Synchronization) {
212 Synchronization(s1);
213 Synchronization(s2);
214 s1 != s2;
215}
216
217/**
218 * Model generation task: at least one synch
219 */
220//@Constraint(severity="error", message="error", key = {s})
221//pattern noSynch(s:Statechart) {
222// Statechart(s);
223// neg find synch(_);
224//}
225//pattern synch(s:Synchronization) {
226// Synchronization(s);
227//} \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/yakinduAdapterFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/yakinduAdapterFactory.java
new file mode 100644
index 00000000..b8fafb35
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/yakinduAdapterFactory.java
@@ -0,0 +1,336 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*;
6
7import org.eclipse.emf.common.notify.Adapter;
8import org.eclipse.emf.common.notify.Notifier;
9
10import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
11
12import org.eclipse.emf.ecore.EObject;
13
14/**
15 * <!-- begin-user-doc -->
16 * The <b>Adapter Factory</b> for the model.
17 * It provides an adapter <code>createXXX</code> method for each class of the model.
18 * <!-- end-user-doc -->
19 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage
20 * @generated
21 */
22public class yakinduAdapterFactory extends AdapterFactoryImpl {
23 /**
24 * The cached model package.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 protected static yakinduPackage modelPackage;
30
31 /**
32 * Creates an instance of the adapter factory.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @generated
36 */
37 public yakinduAdapterFactory() {
38 if (modelPackage == null) {
39 modelPackage = yakinduPackage.eINSTANCE;
40 }
41 }
42
43 /**
44 * Returns whether this factory is applicable for the type of the object.
45 * <!-- begin-user-doc -->
46 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
47 * <!-- end-user-doc -->
48 * @return whether this factory is applicable for the type of the object.
49 * @generated
50 */
51 @Override
52 public boolean isFactoryForType(Object object) {
53 if (object == modelPackage) {
54 return true;
55 }
56 if (object instanceof EObject) {
57 return ((EObject)object).eClass().getEPackage() == modelPackage;
58 }
59 return false;
60 }
61
62 /**
63 * The switch that delegates to the <code>createXXX</code> methods.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 protected yakinduSwitch<Adapter> modelSwitch =
69 new yakinduSwitch<Adapter>() {
70 @Override
71 public Adapter casePseudostate(Pseudostate object) {
72 return createPseudostateAdapter();
73 }
74 @Override
75 public Adapter caseVertex(Vertex object) {
76 return createVertexAdapter();
77 }
78 @Override
79 public Adapter caseRegion(Region object) {
80 return createRegionAdapter();
81 }
82 @Override
83 public Adapter caseTransition(Transition object) {
84 return createTransitionAdapter();
85 }
86 @Override
87 public Adapter caseStatechart(Statechart object) {
88 return createStatechartAdapter();
89 }
90 @Override
91 public Adapter caseEntry(Entry object) {
92 return createEntryAdapter();
93 }
94 @Override
95 public Adapter caseSynchronization(Synchronization object) {
96 return createSynchronizationAdapter();
97 }
98 @Override
99 public Adapter caseState(State object) {
100 return createStateAdapter();
101 }
102 @Override
103 public Adapter caseRegularState(RegularState object) {
104 return createRegularStateAdapter();
105 }
106 @Override
107 public Adapter caseCompositeElement(CompositeElement object) {
108 return createCompositeElementAdapter();
109 }
110 @Override
111 public Adapter caseChoice(Choice object) {
112 return createChoiceAdapter();
113 }
114 @Override
115 public Adapter caseExit(Exit object) {
116 return createExitAdapter();
117 }
118 @Override
119 public Adapter caseFinalState(FinalState object) {
120 return createFinalStateAdapter();
121 }
122 @Override
123 public Adapter defaultCase(EObject object) {
124 return createEObjectAdapter();
125 }
126 };
127
128 /**
129 * Creates an adapter for the <code>target</code>.
130 * <!-- begin-user-doc -->
131 * <!-- end-user-doc -->
132 * @param target the object to adapt.
133 * @return the adapter for the <code>target</code>.
134 * @generated
135 */
136 @Override
137 public Adapter createAdapter(Notifier target) {
138 return modelSwitch.doSwitch((EObject)target);
139 }
140
141
142 /**
143 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate <em>Pseudostate</em>}'.
144 * <!-- begin-user-doc -->
145 * This default implementation returns null so that we can easily ignore cases;
146 * it's useful to ignore a case when inheritance will catch all the cases anyway.
147 * <!-- end-user-doc -->
148 * @return the new adapter.
149 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate
150 * @generated
151 */
152 public Adapter createPseudostateAdapter() {
153 return null;
154 }
155
156 /**
157 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex <em>Vertex</em>}'.
158 * <!-- begin-user-doc -->
159 * This default implementation returns null so that we can easily ignore cases;
160 * it's useful to ignore a case when inheritance will catch all the cases anyway.
161 * <!-- end-user-doc -->
162 * @return the new adapter.
163 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex
164 * @generated
165 */
166 public Adapter createVertexAdapter() {
167 return null;
168 }
169
170 /**
171 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region <em>Region</em>}'.
172 * <!-- begin-user-doc -->
173 * This default implementation returns null so that we can easily ignore cases;
174 * it's useful to ignore a case when inheritance will catch all the cases anyway.
175 * <!-- end-user-doc -->
176 * @return the new adapter.
177 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region
178 * @generated
179 */
180 public Adapter createRegionAdapter() {
181 return null;
182 }
183
184 /**
185 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition <em>Transition</em>}'.
186 * <!-- begin-user-doc -->
187 * This default implementation returns null so that we can easily ignore cases;
188 * it's useful to ignore a case when inheritance will catch all the cases anyway.
189 * <!-- end-user-doc -->
190 * @return the new adapter.
191 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition
192 * @generated
193 */
194 public Adapter createTransitionAdapter() {
195 return null;
196 }
197
198 /**
199 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart <em>Statechart</em>}'.
200 * <!-- begin-user-doc -->
201 * This default implementation returns null so that we can easily ignore cases;
202 * it's useful to ignore a case when inheritance will catch all the cases anyway.
203 * <!-- end-user-doc -->
204 * @return the new adapter.
205 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart
206 * @generated
207 */
208 public Adapter createStatechartAdapter() {
209 return null;
210 }
211
212 /**
213 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry <em>Entry</em>}'.
214 * <!-- begin-user-doc -->
215 * This default implementation returns null so that we can easily ignore cases;
216 * it's useful to ignore a case when inheritance will catch all the cases anyway.
217 * <!-- end-user-doc -->
218 * @return the new adapter.
219 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry
220 * @generated
221 */
222 public Adapter createEntryAdapter() {
223 return null;
224 }
225
226 /**
227 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization <em>Synchronization</em>}'.
228 * <!-- begin-user-doc -->
229 * This default implementation returns null so that we can easily ignore cases;
230 * it's useful to ignore a case when inheritance will catch all the cases anyway.
231 * <!-- end-user-doc -->
232 * @return the new adapter.
233 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization
234 * @generated
235 */
236 public Adapter createSynchronizationAdapter() {
237 return null;
238 }
239
240 /**
241 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State <em>State</em>}'.
242 * <!-- begin-user-doc -->
243 * This default implementation returns null so that we can easily ignore cases;
244 * it's useful to ignore a case when inheritance will catch all the cases anyway.
245 * <!-- end-user-doc -->
246 * @return the new adapter.
247 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State
248 * @generated
249 */
250 public Adapter createStateAdapter() {
251 return null;
252 }
253
254 /**
255 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState <em>Regular State</em>}'.
256 * <!-- begin-user-doc -->
257 * This default implementation returns null so that we can easily ignore cases;
258 * it's useful to ignore a case when inheritance will catch all the cases anyway.
259 * <!-- end-user-doc -->
260 * @return the new adapter.
261 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState
262 * @generated
263 */
264 public Adapter createRegularStateAdapter() {
265 return null;
266 }
267
268 /**
269 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement <em>Composite Element</em>}'.
270 * <!-- begin-user-doc -->
271 * This default implementation returns null so that we can easily ignore cases;
272 * it's useful to ignore a case when inheritance will catch all the cases anyway.
273 * <!-- end-user-doc -->
274 * @return the new adapter.
275 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement
276 * @generated
277 */
278 public Adapter createCompositeElementAdapter() {
279 return null;
280 }
281
282 /**
283 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice <em>Choice</em>}'.
284 * <!-- begin-user-doc -->
285 * This default implementation returns null so that we can easily ignore cases;
286 * it's useful to ignore a case when inheritance will catch all the cases anyway.
287 * <!-- end-user-doc -->
288 * @return the new adapter.
289 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice
290 * @generated
291 */
292 public Adapter createChoiceAdapter() {
293 return null;
294 }
295
296 /**
297 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit <em>Exit</em>}'.
298 * <!-- begin-user-doc -->
299 * This default implementation returns null so that we can easily ignore cases;
300 * it's useful to ignore a case when inheritance will catch all the cases anyway.
301 * <!-- end-user-doc -->
302 * @return the new adapter.
303 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit
304 * @generated
305 */
306 public Adapter createExitAdapter() {
307 return null;
308 }
309
310 /**
311 * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState <em>Final State</em>}'.
312 * <!-- begin-user-doc -->
313 * This default implementation returns null so that we can easily ignore cases;
314 * it's useful to ignore a case when inheritance will catch all the cases anyway.
315 * <!-- end-user-doc -->
316 * @return the new adapter.
317 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState
318 * @generated
319 */
320 public Adapter createFinalStateAdapter() {
321 return null;
322 }
323
324 /**
325 * Creates a new adapter for the default case.
326 * <!-- begin-user-doc -->
327 * This default implementation returns null.
328 * <!-- end-user-doc -->
329 * @return the new adapter.
330 * @generated
331 */
332 public Adapter createEObjectAdapter() {
333 return null;
334 }
335
336} //yakinduAdapterFactory
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/yakinduSwitch.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/yakinduSwitch.java
new file mode 100644
index 00000000..fbc6f821
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/yakinduSwitch.java
@@ -0,0 +1,378 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util;
4
5import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*;
6
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.EPackage;
9
10import org.eclipse.emf.ecore.util.Switch;
11
12/**
13 * <!-- begin-user-doc -->
14 * The <b>Switch</b> for the model's inheritance hierarchy.
15 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
16 * to invoke the <code>caseXXX</code> method for each class of the model,
17 * starting with the actual class of the object
18 * and proceeding up the inheritance hierarchy
19 * until a non-null result is returned,
20 * which is the result of the switch.
21 * <!-- end-user-doc -->
22 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage
23 * @generated
24 */
25public class yakinduSwitch<T> extends Switch<T> {
26 /**
27 * The cached model package
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 protected static yakinduPackage modelPackage;
33
34 /**
35 * Creates an instance of the switch.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 public yakinduSwitch() {
41 if (modelPackage == null) {
42 modelPackage = yakinduPackage.eINSTANCE;
43 }
44 }
45
46 /**
47 * Checks whether this is a switch for the given package.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param ePackage the package in question.
51 * @return whether this is a switch for the given package.
52 * @generated
53 */
54 @Override
55 protected boolean isSwitchFor(EPackage ePackage) {
56 return ePackage == modelPackage;
57 }
58
59 /**
60 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @return the first non-null result returned by a <code>caseXXX</code> call.
64 * @generated
65 */
66 @Override
67 protected T doSwitch(int classifierID, EObject theEObject) {
68 switch (classifierID) {
69 case yakinduPackage.PSEUDOSTATE: {
70 Pseudostate pseudostate = (Pseudostate)theEObject;
71 T result = casePseudostate(pseudostate);
72 if (result == null) result = caseVertex(pseudostate);
73 if (result == null) result = defaultCase(theEObject);
74 return result;
75 }
76 case yakinduPackage.VERTEX: {
77 Vertex vertex = (Vertex)theEObject;
78 T result = caseVertex(vertex);
79 if (result == null) result = defaultCase(theEObject);
80 return result;
81 }
82 case yakinduPackage.REGION: {
83 Region region = (Region)theEObject;
84 T result = caseRegion(region);
85 if (result == null) result = defaultCase(theEObject);
86 return result;
87 }
88 case yakinduPackage.TRANSITION: {
89 Transition transition = (Transition)theEObject;
90 T result = caseTransition(transition);
91 if (result == null) result = defaultCase(theEObject);
92 return result;
93 }
94 case yakinduPackage.STATECHART: {
95 Statechart statechart = (Statechart)theEObject;
96 T result = caseStatechart(statechart);
97 if (result == null) result = caseCompositeElement(statechart);
98 if (result == null) result = defaultCase(theEObject);
99 return result;
100 }
101 case yakinduPackage.ENTRY: {
102 Entry entry = (Entry)theEObject;
103 T result = caseEntry(entry);
104 if (result == null) result = casePseudostate(entry);
105 if (result == null) result = caseVertex(entry);
106 if (result == null) result = defaultCase(theEObject);
107 return result;
108 }
109 case yakinduPackage.SYNCHRONIZATION: {
110 Synchronization synchronization = (Synchronization)theEObject;
111 T result = caseSynchronization(synchronization);
112 if (result == null) result = casePseudostate(synchronization);
113 if (result == null) result = caseVertex(synchronization);
114 if (result == null) result = defaultCase(theEObject);
115 return result;
116 }
117 case yakinduPackage.STATE: {
118 State state = (State)theEObject;
119 T result = caseState(state);
120 if (result == null) result = caseRegularState(state);
121 if (result == null) result = caseCompositeElement(state);
122 if (result == null) result = caseVertex(state);
123 if (result == null) result = defaultCase(theEObject);
124 return result;
125 }
126 case yakinduPackage.REGULAR_STATE: {
127 RegularState regularState = (RegularState)theEObject;
128 T result = caseRegularState(regularState);
129 if (result == null) result = caseVertex(regularState);
130 if (result == null) result = defaultCase(theEObject);
131 return result;
132 }
133 case yakinduPackage.COMPOSITE_ELEMENT: {
134 CompositeElement compositeElement = (CompositeElement)theEObject;
135 T result = caseCompositeElement(compositeElement);
136 if (result == null) result = defaultCase(theEObject);
137 return result;
138 }
139 case yakinduPackage.CHOICE: {
140 Choice choice = (Choice)theEObject;
141 T result = caseChoice(choice);
142 if (result == null) result = casePseudostate(choice);
143 if (result == null) result = caseVertex(choice);
144 if (result == null) result = defaultCase(theEObject);
145 return result;
146 }
147 case yakinduPackage.EXIT: {
148 Exit exit = (Exit)theEObject;
149 T result = caseExit(exit);
150 if (result == null) result = casePseudostate(exit);
151 if (result == null) result = caseVertex(exit);
152 if (result == null) result = defaultCase(theEObject);
153 return result;
154 }
155 case yakinduPackage.FINAL_STATE: {
156 FinalState finalState = (FinalState)theEObject;
157 T result = caseFinalState(finalState);
158 if (result == null) result = caseRegularState(finalState);
159 if (result == null) result = caseVertex(finalState);
160 if (result == null) result = defaultCase(theEObject);
161 return result;
162 }
163 default: return defaultCase(theEObject);
164 }
165 }
166
167 /**
168 * Returns the result of interpreting the object as an instance of '<em>Pseudostate</em>'.
169 * <!-- begin-user-doc -->
170 * This implementation returns null;
171 * returning a non-null result will terminate the switch.
172 * <!-- end-user-doc -->
173 * @param object the target of the switch.
174 * @return the result of interpreting the object as an instance of '<em>Pseudostate</em>'.
175 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
176 * @generated
177 */
178 public T casePseudostate(Pseudostate object) {
179 return null;
180 }
181
182 /**
183 * Returns the result of interpreting the object as an instance of '<em>Vertex</em>'.
184 * <!-- begin-user-doc -->
185 * This implementation returns null;
186 * returning a non-null result will terminate the switch.
187 * <!-- end-user-doc -->
188 * @param object the target of the switch.
189 * @return the result of interpreting the object as an instance of '<em>Vertex</em>'.
190 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
191 * @generated
192 */
193 public T caseVertex(Vertex object) {
194 return null;
195 }
196
197 /**
198 * Returns the result of interpreting the object as an instance of '<em>Region</em>'.
199 * <!-- begin-user-doc -->
200 * This implementation returns null;
201 * returning a non-null result will terminate the switch.
202 * <!-- end-user-doc -->
203 * @param object the target of the switch.
204 * @return the result of interpreting the object as an instance of '<em>Region</em>'.
205 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
206 * @generated
207 */
208 public T caseRegion(Region object) {
209 return null;
210 }
211
212 /**
213 * Returns the result of interpreting the object as an instance of '<em>Transition</em>'.
214 * <!-- begin-user-doc -->
215 * This implementation returns null;
216 * returning a non-null result will terminate the switch.
217 * <!-- end-user-doc -->
218 * @param object the target of the switch.
219 * @return the result of interpreting the object as an instance of '<em>Transition</em>'.
220 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
221 * @generated
222 */
223 public T caseTransition(Transition object) {
224 return null;
225 }
226
227 /**
228 * Returns the result of interpreting the object as an instance of '<em>Statechart</em>'.
229 * <!-- begin-user-doc -->
230 * This implementation returns null;
231 * returning a non-null result will terminate the switch.
232 * <!-- end-user-doc -->
233 * @param object the target of the switch.
234 * @return the result of interpreting the object as an instance of '<em>Statechart</em>'.
235 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
236 * @generated
237 */
238 public T caseStatechart(Statechart object) {
239 return null;
240 }
241
242 /**
243 * Returns the result of interpreting the object as an instance of '<em>Entry</em>'.
244 * <!-- begin-user-doc -->
245 * This implementation returns null;
246 * returning a non-null result will terminate the switch.
247 * <!-- end-user-doc -->
248 * @param object the target of the switch.
249 * @return the result of interpreting the object as an instance of '<em>Entry</em>'.
250 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
251 * @generated
252 */
253 public T caseEntry(Entry object) {
254 return null;
255 }
256
257 /**
258 * Returns the result of interpreting the object as an instance of '<em>Synchronization</em>'.
259 * <!-- begin-user-doc -->
260 * This implementation returns null;
261 * returning a non-null result will terminate the switch.
262 * <!-- end-user-doc -->
263 * @param object the target of the switch.
264 * @return the result of interpreting the object as an instance of '<em>Synchronization</em>'.
265 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
266 * @generated
267 */
268 public T caseSynchronization(Synchronization object) {
269 return null;
270 }
271
272 /**
273 * Returns the result of interpreting the object as an instance of '<em>State</em>'.
274 * <!-- begin-user-doc -->
275 * This implementation returns null;
276 * returning a non-null result will terminate the switch.
277 * <!-- end-user-doc -->
278 * @param object the target of the switch.
279 * @return the result of interpreting the object as an instance of '<em>State</em>'.
280 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
281 * @generated
282 */
283 public T caseState(State object) {
284 return null;
285 }
286
287 /**
288 * Returns the result of interpreting the object as an instance of '<em>Regular State</em>'.
289 * <!-- begin-user-doc -->
290 * This implementation returns null;
291 * returning a non-null result will terminate the switch.
292 * <!-- end-user-doc -->
293 * @param object the target of the switch.
294 * @return the result of interpreting the object as an instance of '<em>Regular State</em>'.
295 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
296 * @generated
297 */
298 public T caseRegularState(RegularState object) {
299 return null;
300 }
301
302 /**
303 * Returns the result of interpreting the object as an instance of '<em>Composite Element</em>'.
304 * <!-- begin-user-doc -->
305 * This implementation returns null;
306 * returning a non-null result will terminate the switch.
307 * <!-- end-user-doc -->
308 * @param object the target of the switch.
309 * @return the result of interpreting the object as an instance of '<em>Composite Element</em>'.
310 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
311 * @generated
312 */
313 public T caseCompositeElement(CompositeElement object) {
314 return null;
315 }
316
317 /**
318 * Returns the result of interpreting the object as an instance of '<em>Choice</em>'.
319 * <!-- begin-user-doc -->
320 * This implementation returns null;
321 * returning a non-null result will terminate the switch.
322 * <!-- end-user-doc -->
323 * @param object the target of the switch.
324 * @return the result of interpreting the object as an instance of '<em>Choice</em>'.
325 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
326 * @generated
327 */
328 public T caseChoice(Choice object) {
329 return null;
330 }
331
332 /**
333 * Returns the result of interpreting the object as an instance of '<em>Exit</em>'.
334 * <!-- begin-user-doc -->
335 * This implementation returns null;
336 * returning a non-null result will terminate the switch.
337 * <!-- end-user-doc -->
338 * @param object the target of the switch.
339 * @return the result of interpreting the object as an instance of '<em>Exit</em>'.
340 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
341 * @generated
342 */
343 public T caseExit(Exit object) {
344 return null;
345 }
346
347 /**
348 * Returns the result of interpreting the object as an instance of '<em>Final State</em>'.
349 * <!-- begin-user-doc -->
350 * This implementation returns null;
351 * returning a non-null result will terminate the switch.
352 * <!-- end-user-doc -->
353 * @param object the target of the switch.
354 * @return the result of interpreting the object as an instance of '<em>Final State</em>'.
355 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
356 * @generated
357 */
358 public T caseFinalState(FinalState object) {
359 return null;
360 }
361
362 /**
363 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
364 * <!-- begin-user-doc -->
365 * This implementation returns null;
366 * returning a non-null result will terminate the switch, but this is the last case anyway.
367 * <!-- end-user-doc -->
368 * @param object the target of the switch.
369 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
370 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
371 * @generated
372 */
373 @Override
374 public T defaultCase(EObject object) {
375 return null;
376 }
377
378} //yakinduSwitch
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/yakinduFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/yakinduFactory.java
new file mode 100644
index 00000000..6d437ecb
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/yakinduFactory.java
@@ -0,0 +1,114 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduPackage
13 * @generated
14 */
15public interface yakinduFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 yakinduFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>Region</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>Region</em>'.
29 * @generated
30 */
31 Region createRegion();
32
33 /**
34 * Returns a new object of class '<em>Transition</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Transition</em>'.
38 * @generated
39 */
40 Transition createTransition();
41
42 /**
43 * Returns a new object of class '<em>Statechart</em>'.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return a new object of class '<em>Statechart</em>'.
47 * @generated
48 */
49 Statechart createStatechart();
50
51 /**
52 * Returns a new object of class '<em>Entry</em>'.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return a new object of class '<em>Entry</em>'.
56 * @generated
57 */
58 Entry createEntry();
59
60 /**
61 * Returns a new object of class '<em>Synchronization</em>'.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @return a new object of class '<em>Synchronization</em>'.
65 * @generated
66 */
67 Synchronization createSynchronization();
68
69 /**
70 * Returns a new object of class '<em>State</em>'.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @return a new object of class '<em>State</em>'.
74 * @generated
75 */
76 State createState();
77
78 /**
79 * Returns a new object of class '<em>Choice</em>'.
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @return a new object of class '<em>Choice</em>'.
83 * @generated
84 */
85 Choice createChoice();
86
87 /**
88 * Returns a new object of class '<em>Exit</em>'.
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @return a new object of class '<em>Exit</em>'.
92 * @generated
93 */
94 Exit createExit();
95
96 /**
97 * Returns a new object of class '<em>Final State</em>'.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @return a new object of class '<em>Final State</em>'.
101 * @generated
102 */
103 FinalState createFinalState();
104
105 /**
106 * Returns the package supported by this factory.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @return the package supported by this factory.
110 * @generated
111 */
112 yakinduPackage getyakinduPackage();
113
114} //yakinduFactory
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/yakinduPackage.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/yakinduPackage.java
new file mode 100644
index 00000000..b3b14944
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/yakinduPackage.java
@@ -0,0 +1,1038 @@
1/**
2 */
3package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu;
4
5import org.eclipse.emf.ecore.EClass;
6import org.eclipse.emf.ecore.EPackage;
7import org.eclipse.emf.ecore.EReference;
8
9/**
10 * <!-- begin-user-doc -->
11 * The <b>Package</b> for the model.
12 * It contains accessors for the meta objects to represent
13 * <ul>
14 * <li>each class,</li>
15 * <li>each feature of each class,</li>
16 * <li>each operation of each class,</li>
17 * <li>each enum,</li>
18 * <li>and each data type</li>
19 * </ul>
20 * <!-- end-user-doc -->
21 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.yakinduFactory
22 * @model kind="package"
23 * @generated
24 */
25public interface yakinduPackage extends EPackage {
26 /**
27 * The package name.
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 String eNAME = "yakindu";
33
34 /**
35 * The package namespace URI.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 String eNS_URI = "YakinduMetamodel";
41
42 /**
43 * The package namespace name.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 String eNS_PREFIX = "yakindu";
49
50 /**
51 * The singleton instance of the package.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 yakinduPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl.init();
57
58 /**
59 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl <em>Vertex</em>}' class.
60 * <!-- begin-user-doc -->
61 * <!-- end-user-doc -->
62 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl
63 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getVertex()
64 * @generated
65 */
66 int VERTEX = 1;
67
68 /**
69 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
70 * <!-- begin-user-doc -->
71 * <!-- end-user-doc -->
72 * @generated
73 * @ordered
74 */
75 int VERTEX__INCOMING_TRANSITIONS = 0;
76
77 /**
78 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 * @ordered
83 */
84 int VERTEX__OUTGOING_TRANSITIONS = 1;
85
86 /**
87 * The number of structural features of the '<em>Vertex</em>' class.
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 * @ordered
92 */
93 int VERTEX_FEATURE_COUNT = 2;
94
95 /**
96 * The number of operations of the '<em>Vertex</em>' class.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @generated
100 * @ordered
101 */
102 int VERTEX_OPERATION_COUNT = 0;
103
104 /**
105 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl <em>Pseudostate</em>}' class.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl
109 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getPseudostate()
110 * @generated
111 */
112 int PSEUDOSTATE = 0;
113
114 /**
115 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @generated
119 * @ordered
120 */
121 int PSEUDOSTATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS;
122
123 /**
124 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 * @ordered
129 */
130 int PSEUDOSTATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS;
131
132 /**
133 * The number of structural features of the '<em>Pseudostate</em>' class.
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 * @ordered
138 */
139 int PSEUDOSTATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0;
140
141 /**
142 * The number of operations of the '<em>Pseudostate</em>' class.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 * @ordered
147 */
148 int PSEUDOSTATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0;
149
150 /**
151 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl <em>Region</em>}' class.
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl
155 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getRegion()
156 * @generated
157 */
158 int REGION = 2;
159
160 /**
161 * The feature id for the '<em><b>Vertices</b></em>' containment reference list.
162 * <!-- begin-user-doc -->
163 * <!-- end-user-doc -->
164 * @generated
165 * @ordered
166 */
167 int REGION__VERTICES = 0;
168
169 /**
170 * The number of structural features of the '<em>Region</em>' class.
171 * <!-- begin-user-doc -->
172 * <!-- end-user-doc -->
173 * @generated
174 * @ordered
175 */
176 int REGION_FEATURE_COUNT = 1;
177
178 /**
179 * The number of operations of the '<em>Region</em>' class.
180 * <!-- begin-user-doc -->
181 * <!-- end-user-doc -->
182 * @generated
183 * @ordered
184 */
185 int REGION_OPERATION_COUNT = 0;
186
187 /**
188 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl <em>Transition</em>}' class.
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl
192 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getTransition()
193 * @generated
194 */
195 int TRANSITION = 3;
196
197 /**
198 * The feature id for the '<em><b>Target</b></em>' reference.
199 * <!-- begin-user-doc -->
200 * <!-- end-user-doc -->
201 * @generated
202 * @ordered
203 */
204 int TRANSITION__TARGET = 0;
205
206 /**
207 * The feature id for the '<em><b>Source</b></em>' container reference.
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 * @ordered
212 */
213 int TRANSITION__SOURCE = 1;
214
215 /**
216 * The number of structural features of the '<em>Transition</em>' class.
217 * <!-- begin-user-doc -->
218 * <!-- end-user-doc -->
219 * @generated
220 * @ordered
221 */
222 int TRANSITION_FEATURE_COUNT = 2;
223
224 /**
225 * The number of operations of the '<em>Transition</em>' class.
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @generated
229 * @ordered
230 */
231 int TRANSITION_OPERATION_COUNT = 0;
232
233 /**
234 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl <em>Composite Element</em>}' class.
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl
238 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getCompositeElement()
239 * @generated
240 */
241 int COMPOSITE_ELEMENT = 9;
242
243 /**
244 * The feature id for the '<em><b>Regions</b></em>' containment reference list.
245 * <!-- begin-user-doc -->
246 * <!-- end-user-doc -->
247 * @generated
248 * @ordered
249 */
250 int COMPOSITE_ELEMENT__REGIONS = 0;
251
252 /**
253 * The number of structural features of the '<em>Composite Element</em>' class.
254 * <!-- begin-user-doc -->
255 * <!-- end-user-doc -->
256 * @generated
257 * @ordered
258 */
259 int COMPOSITE_ELEMENT_FEATURE_COUNT = 1;
260
261 /**
262 * The number of operations of the '<em>Composite Element</em>' class.
263 * <!-- begin-user-doc -->
264 * <!-- end-user-doc -->
265 * @generated
266 * @ordered
267 */
268 int COMPOSITE_ELEMENT_OPERATION_COUNT = 0;
269
270 /**
271 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl <em>Statechart</em>}' class.
272 * <!-- begin-user-doc -->
273 * <!-- end-user-doc -->
274 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl
275 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getStatechart()
276 * @generated
277 */
278 int STATECHART = 4;
279
280 /**
281 * The feature id for the '<em><b>Regions</b></em>' containment reference list.
282 * <!-- begin-user-doc -->
283 * <!-- end-user-doc -->
284 * @generated
285 * @ordered
286 */
287 int STATECHART__REGIONS = COMPOSITE_ELEMENT__REGIONS;
288
289 /**
290 * The number of structural features of the '<em>Statechart</em>' class.
291 * <!-- begin-user-doc -->
292 * <!-- end-user-doc -->
293 * @generated
294 * @ordered
295 */
296 int STATECHART_FEATURE_COUNT = COMPOSITE_ELEMENT_FEATURE_COUNT + 0;
297
298 /**
299 * The number of operations of the '<em>Statechart</em>' class.
300 * <!-- begin-user-doc -->
301 * <!-- end-user-doc -->
302 * @generated
303 * @ordered
304 */
305 int STATECHART_OPERATION_COUNT = COMPOSITE_ELEMENT_OPERATION_COUNT + 0;
306
307 /**
308 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl <em>Entry</em>}' class.
309 * <!-- begin-user-doc -->
310 * <!-- end-user-doc -->
311 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl
312 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getEntry()
313 * @generated
314 */
315 int ENTRY = 5;
316
317 /**
318 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
319 * <!-- begin-user-doc -->
320 * <!-- end-user-doc -->
321 * @generated
322 * @ordered
323 */
324 int ENTRY__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS;
325
326 /**
327 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
328 * <!-- begin-user-doc -->
329 * <!-- end-user-doc -->
330 * @generated
331 * @ordered
332 */
333 int ENTRY__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS;
334
335 /**
336 * The number of structural features of the '<em>Entry</em>' class.
337 * <!-- begin-user-doc -->
338 * <!-- end-user-doc -->
339 * @generated
340 * @ordered
341 */
342 int ENTRY_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0;
343
344 /**
345 * The number of operations of the '<em>Entry</em>' class.
346 * <!-- begin-user-doc -->
347 * <!-- end-user-doc -->
348 * @generated
349 * @ordered
350 */
351 int ENTRY_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0;
352
353 /**
354 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl <em>Synchronization</em>}' class.
355 * <!-- begin-user-doc -->
356 * <!-- end-user-doc -->
357 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl
358 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getSynchronization()
359 * @generated
360 */
361 int SYNCHRONIZATION = 6;
362
363 /**
364 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
365 * <!-- begin-user-doc -->
366 * <!-- end-user-doc -->
367 * @generated
368 * @ordered
369 */
370 int SYNCHRONIZATION__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS;
371
372 /**
373 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
374 * <!-- begin-user-doc -->
375 * <!-- end-user-doc -->
376 * @generated
377 * @ordered
378 */
379 int SYNCHRONIZATION__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS;
380
381 /**
382 * The number of structural features of the '<em>Synchronization</em>' class.
383 * <!-- begin-user-doc -->
384 * <!-- end-user-doc -->
385 * @generated
386 * @ordered
387 */
388 int SYNCHRONIZATION_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0;
389
390 /**
391 * The number of operations of the '<em>Synchronization</em>' class.
392 * <!-- begin-user-doc -->
393 * <!-- end-user-doc -->
394 * @generated
395 * @ordered
396 */
397 int SYNCHRONIZATION_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0;
398
399 /**
400 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl <em>Regular State</em>}' class.
401 * <!-- begin-user-doc -->
402 * <!-- end-user-doc -->
403 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl
404 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getRegularState()
405 * @generated
406 */
407 int REGULAR_STATE = 8;
408
409 /**
410 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
411 * <!-- begin-user-doc -->
412 * <!-- end-user-doc -->
413 * @generated
414 * @ordered
415 */
416 int REGULAR_STATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS;
417
418 /**
419 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
420 * <!-- begin-user-doc -->
421 * <!-- end-user-doc -->
422 * @generated
423 * @ordered
424 */
425 int REGULAR_STATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS;
426
427 /**
428 * The number of structural features of the '<em>Regular State</em>' class.
429 * <!-- begin-user-doc -->
430 * <!-- end-user-doc -->
431 * @generated
432 * @ordered
433 */
434 int REGULAR_STATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0;
435
436 /**
437 * The number of operations of the '<em>Regular State</em>' class.
438 * <!-- begin-user-doc -->
439 * <!-- end-user-doc -->
440 * @generated
441 * @ordered
442 */
443 int REGULAR_STATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0;
444
445 /**
446 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl <em>State</em>}' class.
447 * <!-- begin-user-doc -->
448 * <!-- end-user-doc -->
449 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl
450 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getState()
451 * @generated
452 */
453 int STATE = 7;
454
455 /**
456 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
457 * <!-- begin-user-doc -->
458 * <!-- end-user-doc -->
459 * @generated
460 * @ordered
461 */
462 int STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS;
463
464 /**
465 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
466 * <!-- begin-user-doc -->
467 * <!-- end-user-doc -->
468 * @generated
469 * @ordered
470 */
471 int STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS;
472
473 /**
474 * The feature id for the '<em><b>Regions</b></em>' containment reference list.
475 * <!-- begin-user-doc -->
476 * <!-- end-user-doc -->
477 * @generated
478 * @ordered
479 */
480 int STATE__REGIONS = REGULAR_STATE_FEATURE_COUNT + 0;
481
482 /**
483 * The number of structural features of the '<em>State</em>' class.
484 * <!-- begin-user-doc -->
485 * <!-- end-user-doc -->
486 * @generated
487 * @ordered
488 */
489 int STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 1;
490
491 /**
492 * The number of operations of the '<em>State</em>' class.
493 * <!-- begin-user-doc -->
494 * <!-- end-user-doc -->
495 * @generated
496 * @ordered
497 */
498 int STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0;
499
500 /**
501 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl <em>Choice</em>}' class.
502 * <!-- begin-user-doc -->
503 * <!-- end-user-doc -->
504 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl
505 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getChoice()
506 * @generated
507 */
508 int CHOICE = 10;
509
510 /**
511 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
512 * <!-- begin-user-doc -->
513 * <!-- end-user-doc -->
514 * @generated
515 * @ordered
516 */
517 int CHOICE__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS;
518
519 /**
520 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
521 * <!-- begin-user-doc -->
522 * <!-- end-user-doc -->
523 * @generated
524 * @ordered
525 */
526 int CHOICE__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS;
527
528 /**
529 * The number of structural features of the '<em>Choice</em>' class.
530 * <!-- begin-user-doc -->
531 * <!-- end-user-doc -->
532 * @generated
533 * @ordered
534 */
535 int CHOICE_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0;
536
537 /**
538 * The number of operations of the '<em>Choice</em>' class.
539 * <!-- begin-user-doc -->
540 * <!-- end-user-doc -->
541 * @generated
542 * @ordered
543 */
544 int CHOICE_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0;
545
546 /**
547 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl <em>Exit</em>}' class.
548 * <!-- begin-user-doc -->
549 * <!-- end-user-doc -->
550 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl
551 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getExit()
552 * @generated
553 */
554 int EXIT = 11;
555
556 /**
557 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
558 * <!-- begin-user-doc -->
559 * <!-- end-user-doc -->
560 * @generated
561 * @ordered
562 */
563 int EXIT__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS;
564
565 /**
566 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
567 * <!-- begin-user-doc -->
568 * <!-- end-user-doc -->
569 * @generated
570 * @ordered
571 */
572 int EXIT__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS;
573
574 /**
575 * The number of structural features of the '<em>Exit</em>' class.
576 * <!-- begin-user-doc -->
577 * <!-- end-user-doc -->
578 * @generated
579 * @ordered
580 */
581 int EXIT_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0;
582
583 /**
584 * The number of operations of the '<em>Exit</em>' class.
585 * <!-- begin-user-doc -->
586 * <!-- end-user-doc -->
587 * @generated
588 * @ordered
589 */
590 int EXIT_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0;
591
592 /**
593 * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl <em>Final State</em>}' class.
594 * <!-- begin-user-doc -->
595 * <!-- end-user-doc -->
596 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl
597 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getFinalState()
598 * @generated
599 */
600 int FINAL_STATE = 12;
601
602 /**
603 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
604 * <!-- begin-user-doc -->
605 * <!-- end-user-doc -->
606 * @generated
607 * @ordered
608 */
609 int FINAL_STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS;
610
611 /**
612 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
613 * <!-- begin-user-doc -->
614 * <!-- end-user-doc -->
615 * @generated
616 * @ordered
617 */
618 int FINAL_STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS;
619
620 /**
621 * The number of structural features of the '<em>Final State</em>' class.
622 * <!-- begin-user-doc -->
623 * <!-- end-user-doc -->
624 * @generated
625 * @ordered
626 */
627 int FINAL_STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 0;
628
629 /**
630 * The number of operations of the '<em>Final State</em>' class.
631 * <!-- begin-user-doc -->
632 * <!-- end-user-doc -->
633 * @generated
634 * @ordered
635 */
636 int FINAL_STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0;
637
638
639 /**
640 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate <em>Pseudostate</em>}'.
641 * <!-- begin-user-doc -->
642 * <!-- end-user-doc -->
643 * @return the meta object for class '<em>Pseudostate</em>'.
644 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate
645 * @generated
646 */
647 EClass getPseudostate();
648
649 /**
650 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex <em>Vertex</em>}'.
651 * <!-- begin-user-doc -->
652 * <!-- end-user-doc -->
653 * @return the meta object for class '<em>Vertex</em>'.
654 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex
655 * @generated
656 */
657 EClass getVertex();
658
659 /**
660 * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions <em>Incoming Transitions</em>}'.
661 * <!-- begin-user-doc -->
662 * <!-- end-user-doc -->
663 * @return the meta object for the reference list '<em>Incoming Transitions</em>'.
664 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions()
665 * @see #getVertex()
666 * @generated
667 */
668 EReference getVertex_IncomingTransitions();
669
670 /**
671 * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions <em>Outgoing Transitions</em>}'.
672 * <!-- begin-user-doc -->
673 * <!-- end-user-doc -->
674 * @return the meta object for the containment reference list '<em>Outgoing Transitions</em>'.
675 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions()
676 * @see #getVertex()
677 * @generated
678 */
679 EReference getVertex_OutgoingTransitions();
680
681 /**
682 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region <em>Region</em>}'.
683 * <!-- begin-user-doc -->
684 * <!-- end-user-doc -->
685 * @return the meta object for class '<em>Region</em>'.
686 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region
687 * @generated
688 */
689 EClass getRegion();
690
691 /**
692 * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices <em>Vertices</em>}'.
693 * <!-- begin-user-doc -->
694 * <!-- end-user-doc -->
695 * @return the meta object for the containment reference list '<em>Vertices</em>'.
696 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices()
697 * @see #getRegion()
698 * @generated
699 */
700 EReference getRegion_Vertices();
701
702 /**
703 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition <em>Transition</em>}'.
704 * <!-- begin-user-doc -->
705 * <!-- end-user-doc -->
706 * @return the meta object for class '<em>Transition</em>'.
707 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition
708 * @generated
709 */
710 EClass getTransition();
711
712 /**
713 * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget <em>Target</em>}'.
714 * <!-- begin-user-doc -->
715 * <!-- end-user-doc -->
716 * @return the meta object for the reference '<em>Target</em>'.
717 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget()
718 * @see #getTransition()
719 * @generated
720 */
721 EReference getTransition_Target();
722
723 /**
724 * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource <em>Source</em>}'.
725 * <!-- begin-user-doc -->
726 * <!-- end-user-doc -->
727 * @return the meta object for the container reference '<em>Source</em>'.
728 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource()
729 * @see #getTransition()
730 * @generated
731 */
732 EReference getTransition_Source();
733
734 /**
735 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart <em>Statechart</em>}'.
736 * <!-- begin-user-doc -->
737 * <!-- end-user-doc -->
738 * @return the meta object for class '<em>Statechart</em>'.
739 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart
740 * @generated
741 */
742 EClass getStatechart();
743
744 /**
745 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry <em>Entry</em>}'.
746 * <!-- begin-user-doc -->
747 * <!-- end-user-doc -->
748 * @return the meta object for class '<em>Entry</em>'.
749 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry
750 * @generated
751 */
752 EClass getEntry();
753
754 /**
755 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization <em>Synchronization</em>}'.
756 * <!-- begin-user-doc -->
757 * <!-- end-user-doc -->
758 * @return the meta object for class '<em>Synchronization</em>'.
759 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization
760 * @generated
761 */
762 EClass getSynchronization();
763
764 /**
765 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State <em>State</em>}'.
766 * <!-- begin-user-doc -->
767 * <!-- end-user-doc -->
768 * @return the meta object for class '<em>State</em>'.
769 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State
770 * @generated
771 */
772 EClass getState();
773
774 /**
775 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState <em>Regular State</em>}'.
776 * <!-- begin-user-doc -->
777 * <!-- end-user-doc -->
778 * @return the meta object for class '<em>Regular State</em>'.
779 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState
780 * @generated
781 */
782 EClass getRegularState();
783
784 /**
785 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement <em>Composite Element</em>}'.
786 * <!-- begin-user-doc -->
787 * <!-- end-user-doc -->
788 * @return the meta object for class '<em>Composite Element</em>'.
789 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement
790 * @generated
791 */
792 EClass getCompositeElement();
793
794 /**
795 * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions <em>Regions</em>}'.
796 * <!-- begin-user-doc -->
797 * <!-- end-user-doc -->
798 * @return the meta object for the containment reference list '<em>Regions</em>'.
799 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions()
800 * @see #getCompositeElement()
801 * @generated
802 */
803 EReference getCompositeElement_Regions();
804
805 /**
806 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice <em>Choice</em>}'.
807 * <!-- begin-user-doc -->
808 * <!-- end-user-doc -->
809 * @return the meta object for class '<em>Choice</em>'.
810 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice
811 * @generated
812 */
813 EClass getChoice();
814
815 /**
816 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit <em>Exit</em>}'.
817 * <!-- begin-user-doc -->
818 * <!-- end-user-doc -->
819 * @return the meta object for class '<em>Exit</em>'.
820 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit
821 * @generated
822 */
823 EClass getExit();
824
825 /**
826 * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState <em>Final State</em>}'.
827 * <!-- begin-user-doc -->
828 * <!-- end-user-doc -->
829 * @return the meta object for class '<em>Final State</em>'.
830 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState
831 * @generated
832 */
833 EClass getFinalState();
834
835 /**
836 * Returns the factory that creates the instances of the model.
837 * <!-- begin-user-doc -->
838 * <!-- end-user-doc -->
839 * @return the factory that creates the instances of the model.
840 * @generated
841 */
842 yakinduFactory getyakinduFactory();
843
844 /**
845 * <!-- begin-user-doc -->
846 * Defines literals for the meta objects that represent
847 * <ul>
848 * <li>each class,</li>
849 * <li>each feature of each class,</li>
850 * <li>each operation of each class,</li>
851 * <li>each enum,</li>
852 * <li>and each data type</li>
853 * </ul>
854 * <!-- end-user-doc -->
855 * @generated
856 */
857 interface Literals {
858 /**
859 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl <em>Pseudostate</em>}' class.
860 * <!-- begin-user-doc -->
861 * <!-- end-user-doc -->
862 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl
863 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getPseudostate()
864 * @generated
865 */
866 EClass PSEUDOSTATE = eINSTANCE.getPseudostate();
867
868 /**
869 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl <em>Vertex</em>}' class.
870 * <!-- begin-user-doc -->
871 * <!-- end-user-doc -->
872 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl
873 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getVertex()
874 * @generated
875 */
876 EClass VERTEX = eINSTANCE.getVertex();
877
878 /**
879 * The meta object literal for the '<em><b>Incoming Transitions</b></em>' reference list feature.
880 * <!-- begin-user-doc -->
881 * <!-- end-user-doc -->
882 * @generated
883 */
884 EReference VERTEX__INCOMING_TRANSITIONS = eINSTANCE.getVertex_IncomingTransitions();
885
886 /**
887 * The meta object literal for the '<em><b>Outgoing Transitions</b></em>' containment reference list feature.
888 * <!-- begin-user-doc -->
889 * <!-- end-user-doc -->
890 * @generated
891 */
892 EReference VERTEX__OUTGOING_TRANSITIONS = eINSTANCE.getVertex_OutgoingTransitions();
893
894 /**
895 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl <em>Region</em>}' class.
896 * <!-- begin-user-doc -->
897 * <!-- end-user-doc -->
898 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl
899 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getRegion()
900 * @generated
901 */
902 EClass REGION = eINSTANCE.getRegion();
903
904 /**
905 * The meta object literal for the '<em><b>Vertices</b></em>' containment reference list feature.
906 * <!-- begin-user-doc -->
907 * <!-- end-user-doc -->
908 * @generated
909 */
910 EReference REGION__VERTICES = eINSTANCE.getRegion_Vertices();
911
912 /**
913 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl <em>Transition</em>}' class.
914 * <!-- begin-user-doc -->
915 * <!-- end-user-doc -->
916 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl
917 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getTransition()
918 * @generated
919 */
920 EClass TRANSITION = eINSTANCE.getTransition();
921
922 /**
923 * The meta object literal for the '<em><b>Target</b></em>' reference feature.
924 * <!-- begin-user-doc -->
925 * <!-- end-user-doc -->
926 * @generated
927 */
928 EReference TRANSITION__TARGET = eINSTANCE.getTransition_Target();
929
930 /**
931 * The meta object literal for the '<em><b>Source</b></em>' container reference feature.
932 * <!-- begin-user-doc -->
933 * <!-- end-user-doc -->
934 * @generated
935 */
936 EReference TRANSITION__SOURCE = eINSTANCE.getTransition_Source();
937
938 /**
939 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl <em>Statechart</em>}' class.
940 * <!-- begin-user-doc -->
941 * <!-- end-user-doc -->
942 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl
943 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getStatechart()
944 * @generated
945 */
946 EClass STATECHART = eINSTANCE.getStatechart();
947
948 /**
949 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl <em>Entry</em>}' class.
950 * <!-- begin-user-doc -->
951 * <!-- end-user-doc -->
952 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl
953 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getEntry()
954 * @generated
955 */
956 EClass ENTRY = eINSTANCE.getEntry();
957
958 /**
959 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl <em>Synchronization</em>}' class.
960 * <!-- begin-user-doc -->
961 * <!-- end-user-doc -->
962 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl
963 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getSynchronization()
964 * @generated
965 */
966 EClass SYNCHRONIZATION = eINSTANCE.getSynchronization();
967
968 /**
969 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl <em>State</em>}' class.
970 * <!-- begin-user-doc -->
971 * <!-- end-user-doc -->
972 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl
973 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getState()
974 * @generated
975 */
976 EClass STATE = eINSTANCE.getState();
977
978 /**
979 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl <em>Regular State</em>}' class.
980 * <!-- begin-user-doc -->
981 * <!-- end-user-doc -->
982 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl
983 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getRegularState()
984 * @generated
985 */
986 EClass REGULAR_STATE = eINSTANCE.getRegularState();
987
988 /**
989 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl <em>Composite Element</em>}' class.
990 * <!-- begin-user-doc -->
991 * <!-- end-user-doc -->
992 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl
993 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getCompositeElement()
994 * @generated
995 */
996 EClass COMPOSITE_ELEMENT = eINSTANCE.getCompositeElement();
997
998 /**
999 * The meta object literal for the '<em><b>Regions</b></em>' containment reference list feature.
1000 * <!-- begin-user-doc -->
1001 * <!-- end-user-doc -->
1002 * @generated
1003 */
1004 EReference COMPOSITE_ELEMENT__REGIONS = eINSTANCE.getCompositeElement_Regions();
1005
1006 /**
1007 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl <em>Choice</em>}' class.
1008 * <!-- begin-user-doc -->
1009 * <!-- end-user-doc -->
1010 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl
1011 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getChoice()
1012 * @generated
1013 */
1014 EClass CHOICE = eINSTANCE.getChoice();
1015
1016 /**
1017 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl <em>Exit</em>}' class.
1018 * <!-- begin-user-doc -->
1019 * <!-- end-user-doc -->
1020 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl
1021 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getExit()
1022 * @generated
1023 */
1024 EClass EXIT = eINSTANCE.getExit();
1025
1026 /**
1027 * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl <em>Final State</em>}' class.
1028 * <!-- begin-user-doc -->
1029 * <!-- end-user-doc -->
1030 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl
1031 * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.yakinduPackageImpl#getFinalState()
1032 * @generated
1033 */
1034 EClass FINAL_STATE = eINSTANCE.getFinalState();
1035
1036 }
1037
1038} //yakinduPackage